use of io.vertigo.dynamo.domain.metamodel.DtDefinition in project vertigo by KleeGroup.
the class Criterion method test.
private boolean test(final E entity) {
final DtDefinition entitytDefinition = DtObjectUtil.findDtDefinition(entity.getClass());
final Object value = entitytDefinition.getField(dtFieldName).getDataAccessor().getValue(entity);
switch(criterionOperator) {
case IS_NOT_NULL:
return value != null;
case IS_NULL:
return value == null;
case EQ:
return Objects.equals(value, values[0]);
case NEQ:
return !Objects.equals(value, values[0]);
// with Comparable(s)
case GT:
if (values[0] == null || value == null) {
return false;
}
return ((Comparable) values[0]).compareTo(value) < 0;
case GTE:
if (values[0] == null || value == null) {
return false;
}
return ((Comparable) values[0]).compareTo(value) <= 0;
case LT:
if (values[0] == null || value == null) {
return false;
}
return ((Comparable) values[0]).compareTo(value) > 0;
case LTE:
if (values[0] == null || value == null) {
return false;
}
return ((Comparable) values[0]).compareTo(value) >= 0;
case BETWEEN:
if (value == null) {
return false;
}
final CriterionLimit min = CriterionLimit.class.cast(values[0]);
final CriterionLimit max = CriterionLimit.class.cast(values[1]);
if (!min.isDefined() && !max.isDefined()) {
// there is no limit
return true;
}
boolean test = true;
if (min.isDefined()) {
if (min.isIncluded()) {
test = test && min.getValue().compareTo(value) <= 0;
} else {
test = test && min.getValue().compareTo(value) < 0;
}
}
if (max.isDefined()) {
if (max.isIncluded()) {
test = test && max.getValue().compareTo(value) >= 0;
} else {
test = test && max.getValue().compareTo(value) > 0;
}
}
return test;
// with String
case STARTS_WITH:
if (values[0] == null || value == null) {
return false;
}
return String.class.cast(value).startsWith((String) values[0]);
// with list of comparables
case IN:
return Arrays.asList(values).contains(value);
default:
throw new IllegalAccessError();
}
}
use of io.vertigo.dynamo.domain.metamodel.DtDefinition in project vertigo by KleeGroup.
the class StoreManagerInitializer method init.
/**
* {@inheritDoc}
*/
@Override
public void init() {
final DtDefinition dtDefinition = DtObjectUtil.findDtDefinition(Item.class);
storeManager.getDataStoreConfig().registerCacheable(dtDefinition, 3600, true, true);
}
use of io.vertigo.dynamo.domain.metamodel.DtDefinition in project vertigo by KleeGroup.
the class AbstractStoreManagerTest method testGetFamilliesCars.
/**
* Test que les listes 1N ne reste pas en cache après une mise à jour.
* Ici l'entité en cache est la destination de la navigation : Car
*/
@Test
public void testGetFamilliesCars() {
// on crée une famille
final Famille famille = new Famille();
famille.setLibelle("Ma famille");
final DtList<Car> firstResult;
try (final VTransactionWritable transaction = transactionManager.createCurrentTransaction()) {
final Famille createdFamille = storeManager.getDataStore().create(famille);
// on récupère la liste des voitures
final DtList<Car> cars = storeManager.getDataStore().findAll(allCarsUri);
Assert.assertNotNull(cars);
Assert.assertFalse("La liste des cars est vide", cars.isEmpty());
// on associe la liste de voiture à la famille en 1N
for (final Car car : cars) {
car.setFamId(createdFamille.getFamId());
storeManager.getDataStore().update(car);
}
// On garde le résultat de l'association 1N
firstResult = createdFamille.getVoituresFamilleList();
// On met à jour l'association en retirant le premier élément
final Car firstCar = cars.get(0);
firstCar.setFamId(null);
storeManager.getDataStore().update(firstCar);
// sans commit le cache n'est pas rafraichit
transaction.commit();
}
try (VTransactionWritable transaction = transactionManager.createCurrentTransaction()) {
// on garde le résultat en lazy : il doit avoir le meme nombre de voiture qu'au début
final DtList<Car> lazyResult = famille.getVoituresFamilleList();
Assert.assertEquals("Test tailles du nombre de voiture pour une 1-N", firstResult.size(), lazyResult.size());
// on recharge la famille et on recharge la liste issus de l'association 1N : il doit avoir une voiture de moins qu'au début
final DtDefinition dtFamille = DtObjectUtil.findDtDefinition(Famille.class);
final Famille famille2 = storeManager.getDataStore().readOne(new URI<Famille>(dtFamille, famille.getFamId()));
final DtList<Car> secondResult = famille2.getVoituresFamilleList();
Assert.assertEquals("Test tailles du nombre de voiture pour une 1-N", firstResult.size() - 1, secondResult.size());
transaction.commit();
}
}
use of io.vertigo.dynamo.domain.metamodel.DtDefinition in project vertigo by KleeGroup.
the class AbstractStoreManagerTest method testGetFamilleLocationCars.
/**
* Test que les listes NN ne reste pas en cache après une mise à jour.
* Ici l'entité en cache est la destination de la navigation : Car
*/
@Test
public void testGetFamilleLocationCars() {
try (VTransactionWritable transaction = transactionManager.createCurrentTransaction()) {
// on crée une famille
final Famille famille = new Famille();
famille.setLibelle("Ma famille");
final Famille createdFamille = storeManager.getDataStore().create(famille);
// on récupère la liste des voitures
final DtList<Car> cars = storeManager.getDataStore().findAll(allCarsUri);
Assert.assertNotNull(cars);
Assert.assertFalse("La liste des cars est vide", cars.isEmpty());
// on associe la liste de voiture à la famille en NN
final List<URI> carUriList = new ArrayList<>();
for (final Car car : cars) {
carUriList.add(new URI(dtDefinitionCar, car.getId()));
}
familleDAO.updateNN(createdFamille.getVoituresLocationDtListURI(), carUriList);
// On garde le résultat de l'association NN
final DtList<Car> firstResult = createdFamille.getVoituresLocationList();
Assert.assertEquals("Test tailles du nombre de voiture dans une NN", cars.size(), firstResult.size());
// On met à jour l'association en retirant le premier élément
carUriList.remove(0);
familleDAO.updateNN(createdFamille.getVoituresLocationDtListURI(), carUriList);
// on garde le résultat en lazy : il doit avoir le meme nombre de voiture qu'au début
final DtList<Car> lazyResult = createdFamille.getVoituresLocationList();
Assert.assertEquals("Test tailles du nombre de voiture pour une NN", firstResult.size(), lazyResult.size());
// on recharge la famille et on recharge la liste issus de l'association NN : il doit avoir une voiture de moins qu'au début
final DtDefinition dtFamille = DtObjectUtil.findDtDefinition(Famille.class);
final Famille famille2 = storeManager.getDataStore().readOne(new URI<Famille>(dtFamille, createdFamille.getFamId()));
final DtList<Car> secondResult = famille2.getVoituresLocationList();
Assert.assertEquals("Test tailles du nombre de voiture dans une NN", firstResult.size() - 1, secondResult.size());
transaction.commit();
}
}
use of io.vertigo.dynamo.domain.metamodel.DtDefinition in project vertigo by KleeGroup.
the class OOMParserStereotypesTest method testStereotypeData.
/**
* Test du stereotype Data
*/
@Test
public void testStereotypeData() {
final DtDefinition dtDefinitionAttachment = getDtDefinition("DT_ATTACHMENT");
Assert.assertNotNull(dtDefinitionAttachment);
Assert.assertEquals(DtStereotype.Entity, dtDefinitionAttachment.getStereotype());
final DtDefinition dtDefinitionCommandValidation = getDtDefinition("DT_COMMAND_VALIDATION");
Assert.assertNotNull(dtDefinitionCommandValidation);
Assert.assertEquals(DtStereotype.Entity, dtDefinitionCommandValidation.getStereotype());
}
Aggregations