Search in sources :

Example 26 with URI

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

the class ESDocumentCodec method index2XContentBuilder.

/**
 * Transformation d'un index en un document ElasticSearch.
 * @param <S> Type du sujet représenté par ce document
 * @param <I> Type d'object indexé
 * @param index Objet logique de recherche
 * @return Document SOLR
 * @throws IOException Json exception
 */
<S extends KeyConcept, I extends DtObject> XContentBuilder index2XContentBuilder(final SearchIndex<S, I> index) throws IOException {
    Assertion.checkNotNull(index);
    // -----
    final DtDefinition dtDefinition = index.getDefinition().getIndexDtDefinition();
    // on ne copie pas les champs not stored dans le domain
    final List<DtField> notStoredFields = getNotStoredFields(dtDefinition);
    // on ne copie pas les champs (copyTo)
    notStoredFields.addAll(index.getDefinition().getIndexCopyToFields());
    final I dtResult;
    if (notStoredFields.isEmpty()) {
        dtResult = index.getIndexDtObject();
    } else {
        dtResult = cloneDto(dtDefinition, index.getIndexDtObject(), notStoredFields);
    }
    /* 2: Result stocké */
    final String result = encode(dtResult);
    /* 1 : URI */
    try (final XContentBuilder xContentBuilder = XContentFactory.jsonBuilder()) {
        xContentBuilder.startObject().field(FULL_RESULT, result);
        /* 3 : Les champs du dto index */
        final DtObject dtIndex = index.getIndexDtObject();
        final DtDefinition indexDtDefinition = DtObjectUtil.findDtDefinition(dtIndex);
        final Set<DtField> copyToFields = index.getDefinition().getIndexCopyToFields();
        for (final DtField dtField : indexDtDefinition.getFields()) {
            if (!copyToFields.contains(dtField)) {
                // On index pas les copyFields
                final Object value = dtField.getDataAccessor().getValue(dtIndex);
                if (value != null) {
                    // les valeurs null ne sont pas indexées => conséquence : on ne peut pas les rechercher
                    final String indexFieldName = dtField.getName();
                    if (value instanceof String) {
                        final String encodedValue = escapeInvalidUTF8Char((String) value);
                        xContentBuilder.field(indexFieldName, encodedValue);
                    } else {
                        xContentBuilder.field(indexFieldName, value);
                    }
                }
            }
        }
        return xContentBuilder.endObject();
    }
}
Also used : DtObject(io.vertigo.dynamo.domain.model.DtObject) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) URI(io.vertigo.dynamo.domain.model.URI) DtObject(io.vertigo.dynamo.domain.model.DtObject) XContentBuilder(org.elasticsearch.common.xcontent.XContentBuilder) DtField(io.vertigo.dynamo.domain.metamodel.DtField)

Example 27 with URI

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

the class ESDocumentCodec method searchHit2Index.

/**
 * Transformation d'un resultat ElasticSearch en un index.
 * Les highlights sont ajoutés avant ou après (non determinable).
 * @param <S> Type du sujet représenté par ce document
 * @param <I> Type d'object indexé
 * @param indexDefinition Definition de l'index
 * @param searchHit Resultat ElasticSearch
 * @return Objet logique de recherche
 */
<S extends KeyConcept, I extends DtObject> SearchIndex<S, I> searchHit2Index(final SearchIndexDefinition indexDefinition, final SearchHit searchHit) {
    /* On lit du document les données persistantes. */
    /* 1. URI */
    final String urn = searchHit.getId();
    final URI uri = io.vertigo.dynamo.domain.model.URI.fromURN(urn);
    /* 2 : Result stocké */
    final I resultDtObjectdtObject;
    if (searchHit.field(FULL_RESULT) == null) {
        resultDtObjectdtObject = decode((String) searchHit.getSource().get(FULL_RESULT));
    } else {
        resultDtObjectdtObject = decode(searchHit.field(FULL_RESULT).getValue());
    }
    // -----
    return SearchIndex.createIndex(indexDefinition, uri, resultDtObjectdtObject);
}
Also used : URI(io.vertigo.dynamo.domain.model.URI) URI(io.vertigo.dynamo.domain.model.URI)

Example 28 with URI

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

the class CarSearchLoader method loadData.

/**
 * {@inheritDoc}
 */
@Override
public List<SearchIndex<Car, Car>> loadData(final SearchChunk<Car> searchChunk) {
    final SearchIndexDefinition indexDefinition = searchManager.findFirstIndexDefinitionByKeyConcept(Car.class);
    try (final VTransactionWritable tx = getTransactionManager().createCurrentTransaction()) {
        final List<SearchIndex<Car, Car>> result = new ArrayList<>();
        final DtDefinition dtDefinition = DtObjectUtil.findDtDefinition(Car.class);
        for (final Car car : loadCarList(searchChunk)) {
            final URI<Car> uri = new URI<>(dtDefinition, car.getId());
            result.add(SearchIndex.createIndex(indexDefinition, uri, car));
        }
        return result;
    }
}
Also used : Car(io.vertigo.dynamo.search_2_4.data.domain.Car) SearchIndexDefinition(io.vertigo.dynamo.search.metamodel.SearchIndexDefinition) SearchIndex(io.vertigo.dynamo.search.model.SearchIndex) ArrayList(java.util.ArrayList) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) VTransactionWritable(io.vertigo.commons.transaction.VTransactionWritable) URI(io.vertigo.dynamo.domain.model.URI)

Example 29 with URI

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

the class ItemSearchLoader method getTaskDefinition.

private TaskDefinition getTaskDefinition(final SearchChunk<Item> searchChunk) {
    final Domain doItems = definitionSpace.resolve("DO_DT_ITEM_DTC", Domain.class);
    final String sql = searchChunk.getAllURIs().stream().map(uri -> uri.getId().toString()).collect(Collectors.joining(", ", "select * from ITEM where ID in (", ")"));
    return TaskDefinition.builder("TK_LOAD_ALL_ITEMS").withEngine(TaskEngineSelect.class).withRequest(sql).withPackageName(TaskEngineSelect.class.getPackage().getName()).withOutRequired("dtc", doItems).build();
}
Also used : AbstractSqlSearchLoader(io.vertigo.dynamox.search.AbstractSqlSearchLoader) SearchChunk(io.vertigo.dynamo.search.metamodel.SearchChunk) TaskDefinition(io.vertigo.dynamo.task.metamodel.TaskDefinition) Item(io.vertigo.dynamo.search.data.domain.Item) 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) 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 30 with URI

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

the class ItemSearchLoader method loadData.

/**
 * {@inheritDoc}
 */
@Override
public List<SearchIndex<Item, Item>> loadData(final SearchChunk<Item> searchChunk) {
    final SearchIndexDefinition indexDefinition = searchManager.findFirstIndexDefinitionByKeyConcept(Item.class);
    try (final VTransactionWritable tx = getTransactionManager().createCurrentTransaction()) {
        final List<SearchIndex<Item, Item>> result = new ArrayList<>();
        final DtDefinition dtDefinition = DtObjectUtil.findDtDefinition(Item.class);
        for (final Item item : loadItems(searchChunk)) {
            final URI<Item> uri = new URI<>(dtDefinition, item.getId());
            result.add(SearchIndex.createIndex(indexDefinition, uri, item));
        }
        return result;
    }
}
Also used : Item(io.vertigo.dynamo.search.data.domain.Item) SearchIndexDefinition(io.vertigo.dynamo.search.metamodel.SearchIndexDefinition) SearchIndex(io.vertigo.dynamo.search.model.SearchIndex) ArrayList(java.util.ArrayList) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) VTransactionWritable(io.vertigo.commons.transaction.VTransactionWritable) URI(io.vertigo.dynamo.domain.model.URI)

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