Subversion Repositories mkgmap

Rev

Rev 3175 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 * Copyright (C) 2010-2012.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 3 or
 * version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 */


package uk.me.parabola.mkgmap.reader.osm;

import java.util.concurrent.atomic.AtomicLong;

public class FakeIdGenerator {

        private static final long START_ID = 1L << 62;
       
        private static final AtomicLong fakeId = new AtomicLong(START_ID);

        private static long startId = START_ID;
       
        /**
         * Change the first id that is returned by this generator. The method must
         * be called <b>before</b> the first call of {@link #makeFakeId()}.
         * @param firstFakeId the first id returned by this generator
         */

        public static void setStartId(long firstFakeId) {
                fakeId.set(firstFakeId);
                startId = firstFakeId;
        }
       
        /**
         * Retrieves a unique id that can be used to fake OSM ids.
         *
         * @return a unique id
         */

        public static long makeFakeId() {
                long id = fakeId.incrementAndGet();
//                              if (4611686018427394038L == id){
//                                      long dd = 4;
//                              }
                return id;
        }

        public static boolean isFakeId(long id) {
                return id >= startId;
        }
       
}