use of org.hisp.dhis.reservedvalue.ReservedValue in project dhis2-core by dhis2.
the class TrackedEntityAttributeController method reserve.
// Helpers
private List<ReservedValue> reserve(String id, int numberToReserve, int daysToLive) throws WebMessageException {
if (numberToReserve > 1000 || numberToReserve < 1) {
throw new WebMessageException(badRequest("You can only reserve between 1 and 1000 values in a single request."));
}
Map<String, List<String>> params = context.getParameterValuesMap();
TrackedEntityAttribute attribute = trackedEntityAttributeService.getTrackedEntityAttribute(id);
if (attribute == null) {
throw new WebMessageException(notFound("No attribute found with id " + id));
}
if (attribute.getTextPattern() == null) {
throw new WebMessageException(conflict("This attribute has no pattern"));
}
Map<String, String> values = getRequiredValues(attribute, params);
Date expiration = DateUtils.getDateAfterAddition(new Date(), daysToLive);
try {
List<ReservedValue> result = reservedValueService.reserve(attribute, numberToReserve, values, expiration);
if (result.isEmpty()) {
throw new WebMessageException(conflict("Unable to reserve id. This may indicate that there are too few available ids left."));
}
return result;
} catch (ReserveValueException ex) {
throw new WebMessageException(conflict(ex.getMessage()));
} catch (TextPatternGenerationException ex) {
throw new WebMessageException(error(ex.getMessage()));
}
}
use of org.hisp.dhis.reservedvalue.ReservedValue in project dhis2-core by dhis2.
the class HibernateReservedValueStoreTest method isReservedShouldBeTrue.
@Test
void isReservedShouldBeTrue() {
ReservedValue rv = reservedValue.value(prog001).build();
reservedValueStore.save(rv);
assertTrue(reservedValueStore.isReserved(rv.getOwnerObject(), rv.getOwnerUid(), prog001));
}
use of org.hisp.dhis.reservedvalue.ReservedValue in project dhis2-core by dhis2.
the class HibernateReservedValueStoreTest method getAvailableValuesWhenAlreadyUsed.
@Test
void getAvailableValuesWhenAlreadyUsed() throws TextPatternParser.TextPatternParsingException, IllegalAccessException {
OrganisationUnit ou = createOrganisationUnit("OU");
organisationUnitStore.save(ou);
TrackedEntityInstance tei = createTrackedEntityInstance(ou);
trackedEntityInstanceStore.save(tei);
TrackedEntityAttribute tea = createTrackedEntityAttribute('Y');
TextPattern textPattern = TextPatternParser.parse(key);
textPattern.setOwnerObject(Objects.fromClass(tea.getClass()));
textPattern.setOwnerUid(tea.getUid());
tea.setTextPattern(textPattern);
tea.setUid(teaUid);
trackedEntityAttributeStore.save(tea);
TrackedEntityAttributeValue teav = createTrackedEntityAttributeValue('Z', tei, tea);
teav.setValue(prog001);
trackedEntityAttributeValueStore.save(teav);
ReservedValue rv = reservedValue.value(prog001).build();
rv.setTrackedEntityAttributeId(teav.getAttribute().getId());
assertEquals(1, trackedEntityAttributeValueStore.getAll().size());
assertEquals(0, reservedValueStore.getAll().size());
List<ReservedValue> res = reservedValueStore.getAvailableValues(rv, Lists.newArrayList(prog001, prog002), rv.getOwnerObject());
assertFalse(res.stream().anyMatch(r -> r.getValue().equals(prog001)));
assertTrue(res.stream().anyMatch(r -> r.getValue().equals(prog002)));
assertEquals(1, res.size());
}
use of org.hisp.dhis.reservedvalue.ReservedValue in project dhis2-core by dhis2.
the class HibernateReservedValueStoreTest method reserveValuesSingleValue.
@Test
void reserveValuesSingleValue() {
reservedValueStore.save(reservedValue.value(prog001).build());
int count = reservedValueStore.getCount();
ReservedValue rv = reservedValue.value(prog002).build();
List<ReservedValue> res = reservedValueStore.reserveValuesJpa(rv, Lists.newArrayList(rv.getValue()));
assertEquals(1, res.size());
assertEquals(reservedValueStore.getCount(), count + 1);
}
use of org.hisp.dhis.reservedvalue.ReservedValue in project dhis2-core by dhis2.
the class HibernateReservedValueStoreTest method getAvailableValuesWhenNotReserved.
@Test
void getAvailableValuesWhenNotReserved() {
ReservedValue rv = reservedValue.value(prog001).build();
reservedValueStore.save(rv);
assertEquals(1, reservedValueStore.getAll().size());
List<ReservedValue> res = reservedValueStore.getAvailableValues(rv, Lists.newArrayList(prog001, prog002), rv.getOwnerObject());
assertEquals(1, res.size());
assertTrue(res.stream().anyMatch(r -> r.getValue().equals(prog002)));
}
Aggregations