Search in sources :

Example 1 with DtDefinitionBuilder

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

the class DomainDynamicRegistry method createFragmentDtDefinition.

private static DtDefinition createFragmentDtDefinition(final DefinitionSpace definitionSpace, final DslDefinition xdtDefinition) {
    final DtDefinition from = definitionSpace.resolve(xdtDefinition.getDefinitionLinkName("from"), DtDefinition.class);
    final String sortFieldName = (String) xdtDefinition.getPropertyValue(KspProperty.SORT_FIELD);
    final String displayFieldName = (String) xdtDefinition.getPropertyValue(KspProperty.DISPLAY_FIELD);
    // 0. clones characteristics
    final DtDefinitionBuilder dtDefinitionBuilder = DtDefinition.builder(xdtDefinition.getName()).withFragment(from).withPackageName(xdtDefinition.getPackageName()).withDataSpace(from.getDataSpace()).withPackageName(from.getPackageName()).withSortField(sortFieldName).withDisplayField(displayFieldName);
    // 1. adds aliases
    for (final DslDefinition alias : xdtDefinition.getChildDefinitions("alias")) {
        final DtField aliasDtField = from.getField(alias.getName());
        // --- REQUIRED
        final Boolean overiddenRequired = (Boolean) alias.getPropertyValue(KspProperty.NOT_NULL);
        final boolean required = overiddenRequired != null ? overiddenRequired : aliasDtField.isRequired();
        // --- LABEL
        final String overiddenLabel = (String) alias.getPropertyValue(KspProperty.LABEL);
        final String label = overiddenLabel != null ? overiddenLabel : aliasDtField.getLabel().getDisplay();
        dtDefinitionBuilder.addDataField(aliasDtField.getName(), label, aliasDtField.getDomain(), required, aliasDtField.isPersistent());
    }
    // 2. adds data and computed fields
    // Déclaration des champs du DT
    final List<DslDefinition> fields = xdtDefinition.getChildDefinitions(DomainGrammar.FIELD);
    populateDataDtField(definitionSpace, dtDefinitionBuilder, fields);
    // Déclaration des champs calculés
    final List<DslDefinition> computedFields = xdtDefinition.getChildDefinitions(DomainGrammar.COMPUTED);
    populateComputedDtField(definitionSpace, dtDefinitionBuilder, computedFields);
    final DtDefinition dtDefinition = dtDefinitionBuilder.build();
    // 0. adds ID field -->>> Should be first, but needs an already build DtDefinition
    if (from.getIdField().isPresent()) {
        final DtField idField = from.getIdField().get();
        dtDefinitionBuilder.addForeignKey(idField.getName(), idField.getLabel().getDisplay(), idField.getDomain(), true, from.getName());
    }
    return dtDefinition;
}
Also used : DslDefinition(io.vertigo.dynamo.plugins.environment.dsl.dynamic.DslDefinition) DtDefinitionBuilder(io.vertigo.dynamo.domain.metamodel.DtDefinitionBuilder) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) DtField(io.vertigo.dynamo.domain.metamodel.DtField)

Example 2 with DtDefinitionBuilder

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

the class DomainDynamicRegistry method createDtDefinition.

/**
 * @param xdtDefinition Définition de DT
 */
private DtDefinition createDtDefinition(final DefinitionSpace definitionSpace, final DslDefinition xdtDefinition) {
    // Déclaration de la définition
    final String sortFieldName = (String) xdtDefinition.getPropertyValue(KspProperty.SORT_FIELD);
    final String displayFieldName = (String) xdtDefinition.getPropertyValue(KspProperty.DISPLAY_FIELD);
    // -----
    final String tmpStereotype = (String) xdtDefinition.getPropertyValue(KspProperty.STEREOTYPE);
    // Si Stereotype est non renseigné on suppose que la définition est DtStereotype.Data.
    final DtStereotype stereotype = tmpStereotype != null ? DtStereotype.valueOf(tmpStereotype) : null;
    // -----
    final String dataSpace = (String) xdtDefinition.getPropertyValue(KspProperty.DATA_SPACE);
    // -----
    final String fragmentOf = (String) xdtDefinition.getPropertyValue(KspProperty.FRAGMENT_OF);
    // -----
    // -----
    final String dtDefinitionName = xdtDefinition.getName();
    final DtDefinitionBuilder dtDefinitionBuilder = DtDefinition.builder(dtDefinitionName).withPackageName(xdtDefinition.getPackageName()).withDataSpace(dataSpace).withSortField(sortFieldName).withDisplayField(displayFieldName);
    if (stereotype != null) {
        dtDefinitionBuilder.withStereoType(stereotype);
    }
    if (!StringUtil.isEmpty(fragmentOf)) {
        dtDefinitionBuilder.withFragment(definitionSpace.resolve(fragmentOf, DtDefinition.class));
    }
    // On enregistre les Builder pour pouvoir les mettre à jour sur les associations.
    Assertion.checkArgument(!dtDefinitionBuilders.containsKey(dtDefinitionName), "Definition '{0}' already registered", dtDefinitionName);
    dtDefinitionBuilders.put(dtDefinitionName, dtDefinitionBuilder);
    // Déclaration de la clé primaire
    final List<DslDefinition> keys = xdtDefinition.getChildDefinitions(DomainGrammar.ID);
    populateIdDtField(definitionSpace, dtDefinitionBuilder, keys);
    // Déclaration des champs du DT
    final List<DslDefinition> fields = xdtDefinition.getChildDefinitions(DomainGrammar.FIELD);
    populateDataDtField(definitionSpace, dtDefinitionBuilder, fields);
    // Déclaration des champs calculés
    final List<DslDefinition> computedFields = xdtDefinition.getChildDefinitions(DomainGrammar.COMPUTED);
    populateComputedDtField(definitionSpace, dtDefinitionBuilder, computedFields);
    return dtDefinitionBuilder.build();
}
Also used : DslDefinition(io.vertigo.dynamo.plugins.environment.dsl.dynamic.DslDefinition) DtDefinitionBuilder(io.vertigo.dynamo.domain.metamodel.DtDefinitionBuilder) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) DtStereotype(io.vertigo.dynamo.domain.metamodel.DtStereotype)

Aggregations

DtDefinition (io.vertigo.dynamo.domain.metamodel.DtDefinition)2 DtDefinitionBuilder (io.vertigo.dynamo.domain.metamodel.DtDefinitionBuilder)2 DslDefinition (io.vertigo.dynamo.plugins.environment.dsl.dynamic.DslDefinition)2 DtField (io.vertigo.dynamo.domain.metamodel.DtField)1 DtStereotype (io.vertigo.dynamo.domain.metamodel.DtStereotype)1