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.
}
});
}
}
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);
}
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);
}
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;
}
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;
}
Aggregations