Search in sources :

Example 1 with URI

use of io.vertigo.dynamo.domain.model.URI in project vertigo by KleeGroup.

the class RamLuceneIndex method getStringValue.

private static String getStringValue(final DtObject dto, final DtField field) {
    final String stringValue;
    final Object value = field.getDataAccessor().getValue(dto);
    if (value != null) {
        if (field.getType() == DtField.FieldType.FOREIGN_KEY && getStoreManager().getMasterDataConfig().containsMasterData(field.getFkDtDefinition())) {
            // TODO voir pour mise en cache de cette navigation
            final DtListURIForMasterData mdlUri = getStoreManager().getMasterDataConfig().getDtListURIForMasterData(field.getFkDtDefinition());
            final DtField displayField = mdlUri.getDtDefinition().getDisplayField().get();
            final URI<Entity> uri = new URI<>(field.getFkDtDefinition(), value);
            final DtObject fkDto = getStoreManager().getDataStore().readOne(uri);
            final Object displayValue = displayField.getDataAccessor().getValue(fkDto);
            stringValue = displayField.getDomain().valueToString(displayValue);
        } else {
            stringValue = String.valueOf(field.getDataAccessor().getValue(dto));
        }
        return stringValue.trim();
    }
    return null;
}
Also used : Entity(io.vertigo.dynamo.domain.model.Entity) DtObject(io.vertigo.dynamo.domain.model.DtObject) DtObject(io.vertigo.dynamo.domain.model.DtObject) DtListURIForMasterData(io.vertigo.dynamo.domain.model.DtListURIForMasterData) URI(io.vertigo.dynamo.domain.model.URI) DtField(io.vertigo.dynamo.domain.metamodel.DtField)

Example 2 with URI

use of io.vertigo.dynamo.domain.model.URI in project vertigo by KleeGroup.

the class CarSearchLoader method loadNextURI.

/**
 * {@inheritDoc}
 */
@Override
protected List<URI<Car>> loadNextURI(final Long lastId, final DtDefinition dtDefinition) {
    final SearchIndexDefinition indexDefinition = searchManager.findFirstIndexDefinitionByKeyConcept(Car.class);
    final List<URI<Car>> uris = new ArrayList<>(SEARCH_CHUNK_SIZE);
    // call loader service
    int i = 0;
    for (final Car car : carDataBase.getAllCars()) {
        if (i > lastId) {
            uris.add(new URI(indexDefinition.getKeyConceptDtDefinition(), car.getId()));
        }
        if (uris.size() >= SEARCH_CHUNK_SIZE) {
            break;
        }
        i++;
    }
    return uris;
}
Also used : SearchIndexDefinition(io.vertigo.dynamo.search.metamodel.SearchIndexDefinition) ArrayList(java.util.ArrayList) URI(io.vertigo.dynamo.domain.model.URI)

Example 3 with URI

use of io.vertigo.dynamo.domain.model.URI in project vertigo by KleeGroup.

the class CarSearchLoader method getTaskLoadCarList.

private TaskDefinition getTaskLoadCarList(final SearchChunk<Car> searchChunk) {
    final Domain doCarList = definitionSpace.resolve("DO_DT_CAR_DTC", Domain.class);
    final String sql = searchChunk.getAllURIs().stream().map(uri -> uri.getId().toString()).collect(Collectors.joining(", ", "select * from CAR where ID in (", ")"));
    return TaskDefinition.builder("TK_LOAD_ALL_CARS").withEngine(TaskEngineSelect.class).withRequest(sql).withPackageName(TaskEngineSelect.class.getPackage().getName()).withOutRequired("dtc", doCarList).build();
}
Also used : AbstractSqlSearchLoader(io.vertigo.dynamox.search.AbstractSqlSearchLoader) SearchChunk(io.vertigo.dynamo.search.metamodel.SearchChunk) TaskDefinition(io.vertigo.dynamo.task.metamodel.TaskDefinition) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) URI(io.vertigo.dynamo.domain.model.URI) DtObjectUtil(io.vertigo.dynamo.domain.util.DtObjectUtil) VTransactionWritable(io.vertigo.commons.transaction.VTransactionWritable) Domain(io.vertigo.dynamo.domain.metamodel.Domain) Task(io.vertigo.dynamo.task.model.Task) DefinitionSpace(io.vertigo.core.definition.DefinitionSpace) DtList(io.vertigo.dynamo.domain.model.DtList) SearchIndex(io.vertigo.dynamo.search.model.SearchIndex) Collectors(java.util.stream.Collectors) VTransactionManager(io.vertigo.commons.transaction.VTransactionManager) SearchIndexDefinition(io.vertigo.dynamo.search.metamodel.SearchIndexDefinition) Car(io.vertigo.dynamo.search_2_4.data.domain.Car) ArrayList(java.util.ArrayList) Inject(javax.inject.Inject) Home(io.vertigo.app.Home) List(java.util.List) TaskManager(io.vertigo.dynamo.task.TaskManager) SearchManager(io.vertigo.dynamo.search.SearchManager) TaskEngineSelect(io.vertigo.dynamox.task.TaskEngineSelect) Assertion(io.vertigo.lang.Assertion) Domain(io.vertigo.dynamo.domain.metamodel.Domain)

Example 4 with URI

use of io.vertigo.dynamo.domain.model.URI in project vertigo by KleeGroup.

the class JpaDataStorePlugin method doFindAll.

private <E extends Entity> DtList<E> doFindAll(final ProcessAnalyticsTracer tracer, final DtDefinition dtDefinition, final DtListURIForNNAssociation dtcUri) {
    final Class<E> resultClass = (Class<E>) ClassUtil.classForName(dtDefinition.getClassCanonicalName());
    // PK de la DtList recherchée
    final String idFieldName = dtDefinition.getIdField().get().getName();
    // FK dans la table nn correspondant à la collection recherchée. (clé de jointure ).
    final AssociationNNDefinition associationNNDefinition = dtcUri.getAssociationDefinition();
    final String joinTableName = associationNNDefinition.getTableName();
    final DtDefinition joinDtDefinition = AssociationUtil.getAssociationNode(associationNNDefinition, dtcUri.getRoleName()).getDtDefinition();
    final DtField joinDtField = joinDtDefinition.getIdField().get();
    // La condition s'applique sur l'autre noeud de la relation (par rapport à la collection attendue)
    final AssociationNode associationNode = AssociationUtil.getAssociationNodeTarget(associationNNDefinition, dtcUri.getRoleName());
    final DtField fkField = associationNode.getDtDefinition().getIdField().get();
    final String fkFieldName = fkField.getName();
    final String request = new StringBuilder(" select t.* from ").append(dtDefinition.getLocalName()).append(" t").append(" join ").append(joinTableName).append(" j on j.").append(joinDtField.getName()).append(" = t.").append(idFieldName).append(" where j.").append(fkFieldName).append(" = :").append(fkFieldName).toString();
    final URI uri = dtcUri.getSource();
    final Query q = getEntityManager().createNativeQuery(request, resultClass);
    q.setParameter(fkFieldName, uri.getId());
    final List<E> results = q.getResultList();
    final DtList<E> dtc = new DtList<>(dtDefinition);
    dtc.addAll(results);
    tracer.setMeasure("nbSelectedRow", dtc.size());
    return dtc;
}
Also used : TypedQuery(javax.persistence.TypedQuery) Query(javax.persistence.Query) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) URI(io.vertigo.dynamo.domain.model.URI) AssociationNNDefinition(io.vertigo.dynamo.domain.metamodel.association.AssociationNNDefinition) DtField(io.vertigo.dynamo.domain.metamodel.DtField) AssociationNode(io.vertigo.dynamo.domain.metamodel.association.AssociationNode) DtList(io.vertigo.dynamo.domain.model.DtList)

Example 5 with URI

use of io.vertigo.dynamo.domain.model.URI in project vertigo by KleeGroup.

the class TwoTablesDbFileStorePlugin method delete.

/**
 * {@inheritDoc}
 */
@Override
public void delete(final FileInfoURI fileInfoUri) {
    checkReadonly();
    checkDefinitionStoreBinding(fileInfoUri.getDefinition());
    // -----
    final URI<Entity> dtoMetaDataUri = new URI<>(storeMetaDataDtDefinition, fileInfoUri.getKey());
    final DtObject fileMetadataDtoOld = getStoreManager().getDataStore().readOne(dtoMetaDataUri);
    final Object fdtId = getValue(fileMetadataDtoOld, DtoFields.FDT_ID, Object.class);
    final URI<Entity> dtoDataUri = new URI<>(storeFileDtDefinition, fdtId);
    getStoreManager().getDataStore().delete(dtoMetaDataUri);
    getStoreManager().getDataStore().delete(dtoDataUri);
}
Also used : Entity(io.vertigo.dynamo.domain.model.Entity) DtObject(io.vertigo.dynamo.domain.model.DtObject) DtObject(io.vertigo.dynamo.domain.model.DtObject) URI(io.vertigo.dynamo.domain.model.URI) FileInfoURI(io.vertigo.dynamo.domain.model.FileInfoURI)

Aggregations

URI (io.vertigo.dynamo.domain.model.URI)38 DtDefinition (io.vertigo.dynamo.domain.metamodel.DtDefinition)21 DtField (io.vertigo.dynamo.domain.metamodel.DtField)11 Entity (io.vertigo.dynamo.domain.model.Entity)10 ArrayList (java.util.ArrayList)10 DtObject (io.vertigo.dynamo.domain.model.DtObject)9 SearchIndexDefinition (io.vertigo.dynamo.search.metamodel.SearchIndexDefinition)8 DtListURI (io.vertigo.dynamo.domain.model.DtListURI)7 VTransactionWritable (io.vertigo.commons.transaction.VTransactionWritable)6 DtList (io.vertigo.dynamo.domain.model.DtList)5 Account (io.vertigo.account.account.Account)4 AccountGroup (io.vertigo.account.account.AccountGroup)4 Home (io.vertigo.app.Home)4 AssociationNNDefinition (io.vertigo.dynamo.domain.metamodel.association.AssociationNNDefinition)4 FileInfoURI (io.vertigo.dynamo.domain.model.FileInfoURI)4 KeyConcept (io.vertigo.dynamo.domain.model.KeyConcept)4 VFile (io.vertigo.dynamo.file.model.VFile)4 SearchIndex (io.vertigo.dynamo.search.model.SearchIndex)4 TaskDefinition (io.vertigo.dynamo.task.metamodel.TaskDefinition)4 Task (io.vertigo.dynamo.task.model.Task)4