Search in sources :

Example 31 with DtDefinition

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();
    }
}
Also used : DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition)

Example 32 with DtDefinition

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);
}
Also used : DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition)

Example 33 with DtDefinition

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();
    }
}
Also used : Famille(io.vertigo.dynamo.store.data.domain.famille.Famille) Car(io.vertigo.dynamo.store.data.domain.car.Car) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) VTransactionWritable(io.vertigo.commons.transaction.VTransactionWritable) Test(org.junit.Test)

Example 34 with DtDefinition

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();
    }
}
Also used : Famille(io.vertigo.dynamo.store.data.domain.famille.Famille) Car(io.vertigo.dynamo.store.data.domain.car.Car) ArrayList(java.util.ArrayList) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) VTransactionWritable(io.vertigo.commons.transaction.VTransactionWritable) URI(io.vertigo.dynamo.domain.model.URI) DtListURI(io.vertigo.dynamo.domain.model.DtListURI) Test(org.junit.Test)

Example 35 with DtDefinition

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());
}
Also used : DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) Test(org.junit.Test)

Aggregations

DtDefinition (io.vertigo.dynamo.domain.metamodel.DtDefinition)91 DtField (io.vertigo.dynamo.domain.metamodel.DtField)29 Test (org.junit.Test)21 URI (io.vertigo.dynamo.domain.model.URI)18 List (java.util.List)17 ArrayList (java.util.ArrayList)16 Assertion (io.vertigo.lang.Assertion)12 Collectors (java.util.stream.Collectors)11 Home (io.vertigo.app.Home)10 Optional (java.util.Optional)10 Domain (io.vertigo.dynamo.domain.metamodel.Domain)9 Collections (java.util.Collections)8 DefinitionUtil (io.vertigo.core.definition.DefinitionUtil)7 DtObjectUtil (io.vertigo.dynamo.domain.util.DtObjectUtil)7 TaskDefinition (io.vertigo.dynamo.task.metamodel.TaskDefinition)7 Inject (javax.inject.Inject)7 Authorization (io.vertigo.account.authorization.metamodel.Authorization)6 SecuredEntity (io.vertigo.account.authorization.metamodel.SecuredEntity)6 Criterions (io.vertigo.dynamo.criteria.Criterions)6 DefinitionSpace (io.vertigo.core.definition.DefinitionSpace)5