/* * 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; } }