use of com.b2international.snowowl.snomed.cis.internal.reservations.SnomedIdentifierReservationServiceImpl in project snow-owl by b2ihealthcare.
the class DefaultSnomedIdentifierServiceRegressionTest method testQuadraticProbing.
@Test
public void testQuadraticProbing() throws Exception {
final ISnomedIdentifierReservationService reservationService = new SnomedIdentifierReservationServiceImpl();
final ItemIdGenerationStrategy idGenerationStrategy = new SequentialItemIdGenerationStrategy(reservationService);
final ISnomedIdentifierService identifiers = new DefaultSnomedIdentifierService(store, idGenerationStrategy, reservationService, new SnomedIdentifierConfiguration());
identifiers.generate(INT_NAMESPACE, ComponentCategory.CONCEPT, 1);
// Register a few existing SCTIDs that are "in the way"
identifiers.register(ImmutableSet.of(// 1
"101009", // 2
"102002"));
assertEquals("104001", Iterables.getOnlyElement(identifiers.generate(INT_NAMESPACE, ComponentCategory.CONCEPT, 1)));
}
use of com.b2international.snowowl.snomed.cis.internal.reservations.SnomedIdentifierReservationServiceImpl in project snow-owl by b2ihealthcare.
the class DefaultSnomedIdentifierServiceRegressionTest method issue_SO_2138_testSkipReservedRangeWithWraparound.
@Test
public void issue_SO_2138_testSkipReservedRangeWithWraparound() throws Exception {
final ISnomedIdentifierReservationService reservationService = new SnomedIdentifierReservationServiceImpl();
reservationService.create("nothingAboveTwoHundred", Reservations.range(200L, 8999_9999_9999_999L, null, ImmutableSet.of(ComponentCategory.CONCEPT)));
final ItemIdGenerationStrategy idGenerationStrategy = new SequentialItemIdGenerationStrategy(reservationService);
final ISnomedIdentifierService identifiers = new DefaultSnomedIdentifierService(store, idGenerationStrategy, reservationService, new SnomedIdentifierConfiguration());
// The next item ID would be 200, if it weren't for the reserved range, which goes to the maximum allowed value
identifiers.register(ImmutableSet.of("199004"));
assertEquals("100005", Iterables.getOnlyElement(identifiers.generate(INT_NAMESPACE, ComponentCategory.CONCEPT, 1)));
}
use of com.b2international.snowowl.snomed.cis.internal.reservations.SnomedIdentifierReservationServiceImpl in project snow-owl by b2ihealthcare.
the class DefaultSnomedIdentifierServiceRegressionTest method testQuadraticProbing_skipReservedRangeWithWraparound.
@Test
public void testQuadraticProbing_skipReservedRangeWithWraparound() throws Exception {
final ISnomedIdentifierReservationService reservationService = new SnomedIdentifierReservationServiceImpl();
reservationService.create("nothingAboveTwoHundred", Reservations.range(200L, 9999_9999L, "1000133", ImmutableSet.of(ComponentCategory.CONCEPT)));
final SequentialItemIdGenerationStrategy idGenerationStrategy = new SequentialItemIdGenerationStrategy(reservationService);
idGenerationStrategy.getOrCreateCounter("1000133", ComponentCategory.CONCEPT).setCounter(199L);
final ISnomedIdentifierService identifiers = new DefaultSnomedIdentifierService(store, idGenerationStrategy, reservationService, new SnomedIdentifierConfiguration());
// itemId counter is initialized with 199, next free itemId is 199
assertEquals("1991000133107", Iterables.getOnlyElement(identifiers.generate("1000133", ComponentCategory.CONCEPT, 1)));
// 1 becomes registered
identifiers.register(ImmutableSet.of("11000133105"));
List<String> actualIds = ImmutableList.copyOf(identifiers.generate("1000133", ComponentCategory.CONCEPT, 2));
List<String> expectedIds = ImmutableList.of("21000133103", "31000133100");
assertEquals(expectedIds, actualIds);
}
use of com.b2international.snowowl.snomed.cis.internal.reservations.SnomedIdentifierReservationServiceImpl in project snow-owl by b2ihealthcare.
the class DefaultSnomedIdentifierServiceRegressionTest method testQuadraticProbing_skipReservedRange.
@Test
public void testQuadraticProbing_skipReservedRange() throws Exception {
final ISnomedIdentifierReservationService reservationService = new SnomedIdentifierReservationServiceImpl();
reservationService.create("noTwoHundreds", Reservations.range(200L, 299L, "1000004", ImmutableSet.of(ComponentCategory.CONCEPT)));
final ItemIdGenerationStrategy idGenerationStrategy = new SequentialItemIdGenerationStrategy(reservationService);
final ISnomedIdentifierService identifiers = new DefaultSnomedIdentifierService(store, idGenerationStrategy, reservationService, new SnomedIdentifierConfiguration());
// generate all IDs until 200
identifiers.generate("1000004", ComponentCategory.CONCEPT, 199);
// 300 becomes registered
identifiers.register(ImmutableSet.of("3001000004102"));
List<String> actualIds = ImmutableList.copyOf(identifiers.generate("1000004", ComponentCategory.CONCEPT, 2));
List<String> expectedIds = ImmutableList.of("3011000004104", "3021000004108");
assertEquals(expectedIds, actualIds);
}
use of com.b2international.snowowl.snomed.cis.internal.reservations.SnomedIdentifierReservationServiceImpl in project snow-owl by b2ihealthcare.
the class DefaultSnomedIdentifierServiceRegressionTest method issue_SO_2138_testCoveringReservedRanges.
@Test(expected = IllegalArgumentException.class)
public void issue_SO_2138_testCoveringReservedRanges() throws Exception {
final ISnomedIdentifierReservationService reservationService = new SnomedIdentifierReservationServiceImpl();
reservationService.create("nothingAboveOneHundredNinetyNine", Reservations.range(200L, 8999_9999_9999_999L, null, ImmutableSet.of(ComponentCategory.CONCEPT)));
reservationService.create("nothingBelowOneHundredNinetyNine", Reservations.range(100L, 198L, null, ImmutableSet.of(ComponentCategory.CONCEPT)));
final ItemIdGenerationStrategy idGenerationStrategy = new SequentialItemIdGenerationStrategy(reservationService);
final ISnomedIdentifierService identifiers = new DefaultSnomedIdentifierService(store, idGenerationStrategy, reservationService, new SnomedIdentifierConfiguration());
identifiers.register(ImmutableSet.of("198007"));
assertEquals("199004", Iterables.getOnlyElement(identifiers.generate(INT_NAMESPACE, ComponentCategory.CONCEPT, 1)));
// This attempt should not be able to generate any other value
System.err.println(identifiers.generate(INT_NAMESPACE, ComponentCategory.CONCEPT, 1));
}
Aggregations