Search in sources :

Example 26 with Import

use of org.kie.workbench.common.dmn.api.definition.model.Import in project kie-wb-common by kiegroup.

the class DMNDomainValidatorImpl method validate.

@Override
public Collection<DomainViolation> validate(final Diagram diagram, final String diagramXml) {
    final List<Reader> dmnXMLReaders = new ArrayList<>();
    try {
        dmnXMLReaders.add(getStringReader(diagramXml));
        // Load Readers for all other imported DMN models.
        final Definitions uiDefinitions = dmnDiagramUtils.getDefinitions(diagram);
        final List<Import> uiImports = uiDefinitions.getImport();
        final List<org.kie.dmn.model.api.Import> dmnImports = uiImports.stream().map(ImportConverter::dmnFromWb).collect(Collectors.toList());
        final Metadata metadata = diagram.getMetadata();
        final Map<org.kie.dmn.model.api.Import, String> importedDiagramsXML = importsHelper.getImportXML(metadata, dmnImports);
        importedDiagramsXML.values().forEach(importedDiagramXML -> dmnXMLReaders.add(getStringReader(importedDiagramXML)));
        final Reader[] aDMNXMLReaders = new Reader[] {};
        final List<DMNMessage> messages = dmnValidator.validateUsing(DMNValidator.Validation.VALIDATE_MODEL, DMNValidator.Validation.VALIDATE_COMPILATION, DMNValidator.Validation.ANALYZE_DECISION_TABLE).usingImports(getValidatorImportReaderResolver(metadata)).theseModels(dmnXMLReaders.toArray(aDMNXMLReaders));
        return convert(messages);
    } finally {
        dmnXMLReaders.forEach(reader -> {
            try {
                reader.close();
            } catch (IOException ioe) {
            // Swallow. The Reader is already closed.
            }
        });
    }
}
Also used : Import(org.kie.workbench.common.dmn.api.definition.model.Import) Definitions(org.kie.workbench.common.dmn.api.definition.model.Definitions) ArrayList(java.util.ArrayList) Metadata(org.kie.workbench.common.stunner.core.diagram.Metadata) Reader(java.io.Reader) StringReader(java.io.StringReader) IOException(java.io.IOException) DMNMessage(org.kie.dmn.api.core.DMNMessage)

Example 27 with Import

use of org.kie.workbench.common.dmn.api.definition.model.Import in project kie-wb-common by kiegroup.

the class HrefBuilderTest method testGetHrefForImportedDRGElement.

@Test
public void testGetHrefForImportedDRGElement() {
    final DRGElement drgElement = mock(DRGElement.class);
    final Name drgElementName = mock(Name.class);
    final Name importName = mock(Name.class);
    final Id id = mock(Id.class);
    final Definitions definitions = mock(Definitions.class);
    final Import anImport = mock(Import.class);
    final List<Import> imports = singletonList(anImport);
    final String includedModelName = "includedModel";
    when(importName.getValue()).thenReturn(includedModelName);
    when(anImport.getName()).thenReturn(importName);
    when(anImport.getNamespace()).thenReturn("https://github.com/kiegroup/dmn/something");
    when(id.getValue()).thenReturn("0000-1111-2222");
    when(drgElementName.getValue()).thenReturn(includedModelName + ".Decision");
    when(drgElement.getId()).thenReturn(id);
    when(drgElement.getName()).thenReturn(drgElementName);
    when(drgElement.getParent()).thenReturn(definitions);
    when(definitions.getImport()).thenReturn(imports);
    final String actual = HrefBuilder.getHref(drgElement);
    final String expected = "https://github.com/kiegroup/dmn/something#0000-1111-2222";
    assertEquals(expected, actual);
}
Also used : Import(org.kie.workbench.common.dmn.api.definition.model.Import) Definitions(org.kie.workbench.common.dmn.api.definition.model.Definitions) Id(org.kie.workbench.common.dmn.api.property.dmn.Id) DRGElement(org.kie.workbench.common.dmn.api.definition.model.DRGElement) Name(org.kie.workbench.common.dmn.api.property.dmn.Name) Test(org.junit.Test)

Example 28 with Import

use of org.kie.workbench.common.dmn.api.definition.model.Import in project kie-wb-common by kiegroup.

the class ImportRecordEngine method update.

@Override
public List<BaseIncludedModelActiveRecord> update(final BaseIncludedModelActiveRecord record) {
    if (!record.isValid()) {
        throw new UnsupportedOperationException("An invalid Included Model cannot be updated.");
    }
    final Import anImport = getImport(record);
    final String oldModelName = anImport.getName().getValue();
    drgElementHandlers.forEach(handler -> handler.update(oldModelName, record.getName()));
    anImport.setName(new Name(record.getName()));
    return singletonList(record);
}
Also used : Import(org.kie.workbench.common.dmn.api.definition.model.Import) Name(org.kie.workbench.common.dmn.api.property.dmn.Name)

Example 29 with Import

use of org.kie.workbench.common.dmn.api.definition.model.Import in project kie-wb-common by kiegroup.

the class ImportFactory method makeImport.

public Import makeImport(final BaseIncludedModelActiveRecord record) {
    Import anImport;
    if (record instanceof DMNIncludedModelActiveRecord) {
        final ImportDMN dmn = new ImportDMN();
        final DMNIncludedModelActiveRecord dmnRecord = (DMNIncludedModelActiveRecord) record;
        dmn.setName(name(record));
        dmn.setNamespace(record.getNamespace());
        dmn.setLocationURI(location(record));
        dmn.setImportType(record.getImportType());
        dmn.setDrgElementsCount(dmnRecord.getDrgElementsCount());
        dmn.setItemDefinitionsCount(dmnRecord.getDataTypesCount());
        anImport = dmn;
    } else if (record instanceof PMMLIncludedModelActiveRecord) {
        final ImportPMML pmml = new ImportPMML();
        final PMMLIncludedModelActiveRecord pmmlRecord = (PMMLIncludedModelActiveRecord) record;
        pmml.setName(name(record));
        pmml.setNamespace(name(record).getValue());
        pmml.setLocationURI(location(record));
        pmml.setImportType(record.getImportType());
        pmml.setModelCount(pmmlRecord.getModelCount());
        anImport = pmml;
    } else {
        anImport = new Import();
    }
    anImport.setLocationURI(location(record));
    anImport.setImportType(record.getImportType());
    return anImport;
}
Also used : Import(org.kie.workbench.common.dmn.api.definition.model.Import) ImportDMN(org.kie.workbench.common.dmn.api.definition.model.ImportDMN) PMMLIncludedModelActiveRecord(org.kie.workbench.common.dmn.client.editors.included.PMMLIncludedModelActiveRecord) DMNIncludedModelActiveRecord(org.kie.workbench.common.dmn.client.editors.included.DMNIncludedModelActiveRecord) ImportPMML(org.kie.workbench.common.dmn.api.definition.model.ImportPMML)

Example 30 with Import

use of org.kie.workbench.common.dmn.api.definition.model.Import in project kie-wb-common by kiegroup.

the class DefinitionsConverter method dmnFromWB.

public static org.kie.dmn.model.api.Definitions dmnFromWB(final Definitions wb) {
    if (wb == null) {
        return null;
    }
    final org.kie.dmn.model.api.Definitions result = new org.kie.dmn.model.v1_2.TDefinitions();
    // TODO currently DMN wb UI does not offer feature to set these required DMN properties, setting some hardcoded defaults for now.
    final String defaultId = (wb.getId() != null) ? wb.getId().getValue() : UUID.uuid();
    final String defaultName = (wb.getName() != null) ? wb.getName().getValue() : UUID.uuid(8);
    final String defaultNamespace = !StringUtils.isEmpty(wb.getNamespace().getValue()) ? wb.getNamespace().getValue() : DMNModelInstrumentedBase.Namespace.DEFAULT.getUri() + UUID.uuid();
    result.setId(defaultId);
    result.setName(defaultName);
    result.setNamespace(defaultNamespace);
    result.setDescription(DescriptionPropertyConverter.dmnFromWB(wb.getDescription()));
    result.getNsContext().putAll(wb.getNsContext());
    result.getNsContext().putIfAbsent(DMNModelInstrumentedBase.Namespace.DEFAULT.getPrefix(), defaultNamespace);
    for (ItemDefinition itemDef : wb.getItemDefinition()) {
        final org.kie.dmn.model.api.ItemDefinition itemDefConverted = ItemDefinitionPropertyConverter.dmnFromWB(itemDef);
        if (itemDefConverted != null) {
            itemDefConverted.setParent(result);
        }
        result.getItemDefinition().add(itemDefConverted);
    }
    for (Import i : wb.getImport()) {
        final org.kie.dmn.model.api.Import importConverted = ImportConverter.dmnFromWb(i);
        if (importConverted != null) {
            importConverted.setParent(result);
        }
        result.getImport().add(importConverted);
    }
    return result;
}
Also used : Import(org.kie.workbench.common.dmn.api.definition.model.Import) ItemDefinition(org.kie.workbench.common.dmn.api.definition.model.ItemDefinition)

Aggregations

Import (org.kie.workbench.common.dmn.api.definition.model.Import)51 Test (org.junit.Test)37 Name (org.kie.workbench.common.dmn.api.property.dmn.Name)26 Definitions (org.kie.workbench.common.dmn.api.definition.model.Definitions)14 ArrayList (java.util.ArrayList)11 BaseIncludedModelActiveRecord (org.kie.workbench.common.dmn.client.editors.included.BaseIncludedModelActiveRecord)11 Id (org.kie.workbench.common.dmn.api.property.dmn.Id)10 LocationURI (org.kie.workbench.common.dmn.api.property.dmn.LocationURI)10 ImportPMML (org.kie.workbench.common.dmn.api.definition.model.ImportPMML)9 JSITImport (org.kie.workbench.common.dmn.webapp.kogito.marshaller.js.model.dmn12.JSITImport)9 HashMap (java.util.HashMap)8 DRGElement (org.kie.workbench.common.dmn.api.definition.model.DRGElement)8 ImportDMN (org.kie.workbench.common.dmn.api.definition.model.ImportDMN)8 JSITDefinitions (org.kie.workbench.common.dmn.webapp.kogito.marshaller.js.model.dmn12.JSITDefinitions)7 JSITDRGElement (org.kie.workbench.common.dmn.webapp.kogito.marshaller.js.model.dmn12.JSITDRGElement)6 DMNIncludedModelActiveRecord (org.kie.workbench.common.dmn.client.editors.included.DMNIncludedModelActiveRecord)5 PMMLDocumentMetadata (org.kie.workbench.common.dmn.api.editors.included.PMMLDocumentMetadata)4 List (java.util.List)3 Map (java.util.Map)3 QName (javax.xml.namespace.QName)3