Search in sources :

Example 26 with Domain

use of io.vertigo.dynamo.domain.metamodel.Domain in project vertigo by KleeGroup.

the class BrokerBatchImpl method getList.

private DtList<E> getList(final DtDefinition dtDefinition, final String fieldName, final DtList<E> dtc) {
    // On splitte la collection par paquet
    final List<DtList<E>> paquet = new ArrayList<>();
    DtList<E> tmp = null;
    for (int i = 0; i < dtc.size(); i++) {
        if (i % GET_LIST_PAQUET_SIZE == 0) {
            tmp = new DtList<>(dtc.getDefinition());
            paquet.add(tmp);
        }
        if (tmp != null) {
            tmp.add(dtc.get(i));
        }
    }
    // On génère la requête
    // Corps de la requete
    // On génère maintenant la requête proc batch
    final DtDefinition dtDef = dtc.getDefinition();
    final String dtcName = getDtcName(dtDef);
    final String inDtcName = dtcName + "_IN";
    final String request = new StringBuilder("select * from ").append(dtDef.getLocalName()).append(" where ").append(fieldName).append(" in (#").append(inDtcName).append(".ROWNUM.").append(fieldName).append("#)").toString();
    // Exécution de la tache
    final Domain dtcDomain = Home.getApp().getDefinitionSpace().resolve(DOMAIN_PREFIX + SEPARATOR + dtDef.getName() + "_DTC", Domain.class);
    final String taskName = "TK_LOAD_BY_LST_" + fieldName + "_" + dtDef.getLocalName();
    final TaskDefinition taskDefinition = TaskDefinition.builder(taskName).withEngine(TaskEngineSelect.class).withDataSpace(dtDef.getDataSpace()).withRequest(request).addInRequired(inDtcName, dtcDomain).withOutRequired("out", dtcDomain).build();
    // On exécute par paquet
    final DtList<E> ret = new DtList<>(dtDefinition);
    for (final DtList<E> paq : paquet) {
        /* Création de la tache. */
        final Task task = Task.builder(taskDefinition).addValue(inDtcName, paq).build();
        // Exécution de la tache
        final DtList<E> result = taskManager.execute(task).getResult();
        ret.addAll(result);
    }
    return ret;
}
Also used : Task(io.vertigo.dynamo.task.model.Task) TaskEngineSelect(io.vertigo.dynamox.task.TaskEngineSelect) ArrayList(java.util.ArrayList) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) TaskDefinition(io.vertigo.dynamo.task.metamodel.TaskDefinition) Domain(io.vertigo.dynamo.domain.metamodel.Domain) DtList(io.vertigo.dynamo.domain.model.DtList)

Aggregations

Domain (io.vertigo.dynamo.domain.metamodel.Domain)26 DefinitionSpace (io.vertigo.core.definition.DefinitionSpace)8 DtDefinition (io.vertigo.dynamo.domain.metamodel.DtDefinition)7 TaskDefinition (io.vertigo.dynamo.task.metamodel.TaskDefinition)7 Task (io.vertigo.dynamo.task.model.Task)7 TaskEngineSelect (io.vertigo.dynamox.task.TaskEngineSelect)7 Test (org.junit.Test)6 DslDefinition (io.vertigo.dynamo.plugins.environment.dsl.dynamic.DslDefinition)5 ArrayList (java.util.ArrayList)4 AutoCloseableApp (io.vertigo.app.AutoCloseableApp)3 AppConfig (io.vertigo.app.config.AppConfig)3 DtList (io.vertigo.dynamo.domain.model.DtList)3 SearchIndexDefinition (io.vertigo.dynamo.search.metamodel.SearchIndexDefinition)3 FormatterDefault (io.vertigo.dynamox.domain.formatter.FormatterDefault)3 Assertion (io.vertigo.lang.Assertion)3 List (java.util.List)3 Collectors (java.util.stream.Collectors)3 Home (io.vertigo.app.Home)2 VTransactionManager (io.vertigo.commons.transaction.VTransactionManager)2 VTransactionWritable (io.vertigo.commons.transaction.VTransactionWritable)2