use of org.kie.workbench.common.dmn.backend.definition.v1_1.dd.DMNShape in project kie-wb-common by kiegroup.
the class DMNMarshaller method ddExtAugmentStunner.
private void ddExtAugmentStunner(Optional<org.kie.workbench.common.dmn.backend.definition.v1_1.dd.DMNDiagram> dmnDDDiagram, Node currentNode) {
if (!dmnDDDiagram.isPresent()) {
return;
}
Stream<DMNShape> drgShapeStream = dmnDDDiagram.get().getAny().stream().filter(DMNShape.class::isInstance).map(DMNShape.class::cast);
View content = (View) currentNode.getContent();
if (content.getDefinition() instanceof Decision) {
Decision d = (Decision) content.getDefinition();
internalAugment(drgShapeStream, d.getId(), content.getBounds().getUpperLeft(), d.getDimensionsSet(), content.getBounds().getLowerRight(), d.getBackgroundSet(), d::setFontSet);
} else if (content.getDefinition() instanceof InputData) {
InputData d = (InputData) content.getDefinition();
internalAugment(drgShapeStream, d.getId(), content.getBounds().getUpperLeft(), d.getDimensionsSet(), content.getBounds().getLowerRight(), d.getBackgroundSet(), d::setFontSet);
} else if (content.getDefinition() instanceof BusinessKnowledgeModel) {
BusinessKnowledgeModel d = (BusinessKnowledgeModel) content.getDefinition();
internalAugment(drgShapeStream, d.getId(), content.getBounds().getUpperLeft(), d.getDimensionsSet(), content.getBounds().getLowerRight(), d.getBackgroundSet(), d::setFontSet);
} else if (content.getDefinition() instanceof KnowledgeSource) {
KnowledgeSource d = (KnowledgeSource) content.getDefinition();
internalAugment(drgShapeStream, d.getId(), content.getBounds().getUpperLeft(), d.getDimensionsSet(), content.getBounds().getLowerRight(), d.getBackgroundSet(), d::setFontSet);
} else if (content.getDefinition() instanceof TextAnnotation) {
TextAnnotation d = (TextAnnotation) content.getDefinition();
internalAugment(drgShapeStream, d.getId(), content.getBounds().getUpperLeft(), d.getDimensionsSet(), content.getBounds().getLowerRight(), d.getBackgroundSet(), d::setFontSet);
}
}
use of org.kie.workbench.common.dmn.backend.definition.v1_1.dd.DMNShape in project kie-wb-common by kiegroup.
the class DMNMarshaller method stunnerToDDExt.
private static DMNShape stunnerToDDExt(View<? extends DMNElement> v) {
DMNShape result = new DMNShape();
result.setId("dmnshape-" + v.getDefinition().getId().getValue());
result.setDmnElementRef(v.getDefinition().getId().getValue());
Bounds bounds = new Bounds();
result.setBounds(bounds);
bounds.setX(v.getBounds().getUpperLeft().getX());
bounds.setY(v.getBounds().getUpperLeft().getY());
if (v.getDefinition() instanceof Decision) {
Decision d = (Decision) v.getDefinition();
applyBounds(d.getDimensionsSet(), bounds);
applyBackgroundStyles(d.getBackgroundSet(), result);
result.setFontStyle(FontSetPropertyConverter.dmnFromWB(d.getFontSet()));
} else if (v.getDefinition() instanceof InputData) {
InputData d = (InputData) v.getDefinition();
applyBounds(d.getDimensionsSet(), bounds);
applyBackgroundStyles(d.getBackgroundSet(), result);
result.setFontStyle(FontSetPropertyConverter.dmnFromWB(d.getFontSet()));
} else if (v.getDefinition() instanceof BusinessKnowledgeModel) {
BusinessKnowledgeModel d = (BusinessKnowledgeModel) v.getDefinition();
applyBounds(d.getDimensionsSet(), bounds);
applyBackgroundStyles(d.getBackgroundSet(), result);
result.setFontStyle(FontSetPropertyConverter.dmnFromWB(d.getFontSet()));
} else if (v.getDefinition() instanceof KnowledgeSource) {
KnowledgeSource d = (KnowledgeSource) v.getDefinition();
applyBounds(d.getDimensionsSet(), bounds);
applyBackgroundStyles(d.getBackgroundSet(), result);
result.setFontStyle(FontSetPropertyConverter.dmnFromWB(d.getFontSet()));
} else if (v.getDefinition() instanceof TextAnnotation) {
TextAnnotation d = (TextAnnotation) v.getDefinition();
applyBounds(d.getDimensionsSet(), bounds);
applyBackgroundStyles(d.getBackgroundSet(), result);
result.setFontStyle(FontSetPropertyConverter.dmnFromWB(d.getFontSet()));
}
return result;
}
use of org.kie.workbench.common.dmn.backend.definition.v1_1.dd.DMNShape in project kie-wb-common by kiegroup.
the class DMNMarshallerTest method test_diamond.
@Test
public void test_diamond() throws IOException {
// round trip test
roundTripUnmarshalThenMarshalUnmarshal(this.getClass().getResourceAsStream("/diamond.dmn"), this::checkDiamongGraph);
// additionally, check the marshalled is still DMN executable as expected
DMNMarshaller m = new DMNMarshaller(new XMLEncoderDiagramMetadataMarshaller(), applicationFactoryManager);
Graph<?, ?> g = m.unmarshall(null, this.getClass().getResourceAsStream("/diamond.dmn"));
DiagramImpl diagram = new DiagramImpl("", null);
diagram.setGraph(g);
String mString = m.marshall(diagram);
final KieServices ks = KieServices.Factory.get();
final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test_diamond", "1.0"), ks.getResources().newByteArrayResource(mString.getBytes()).setTargetPath("src/main/resources/diamond.dmn"));
final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class);
Assert.assertNotNull(runtime);
DMNModel diamondModel = runtime.getModel("http://www.trisotech.com/definitions/_8afa6c24-55c8-43cf-8a02-fdde7fc5d1f2", "three decisions in a diamond shape");
DMNContext dmnContext = runtime.newContext();
dmnContext.set("My Name", "John Doe");
DMNResult dmnResult = runtime.evaluateAll(diamondModel, dmnContext);
assertFalse(dmnResult.getMessages().toString(), dmnResult.hasErrors());
DMNContext result = dmnResult.getContext();
assertEquals("Hello, John Doe.", result.get("My Decision"));
// additionally, check DMN DD/DI for version 1.1
org.kie.dmn.api.marshalling.v1_1.DMNMarshaller dmnMarshaller = DMNMarshallerFactory.newMarshallerWithExtensions(Arrays.asList(new DDExtensionsRegister()));
Definitions definitions = dmnMarshaller.unmarshal(mString);
assertNotNull(definitions.getExtensionElements());
assertNotNull(definitions.getExtensionElements().getAny());
assertEquals(1, definitions.getExtensionElements().getAny().size());
org.kie.workbench.common.dmn.backend.definition.v1_1.dd.DMNDiagram ddRoot = (org.kie.workbench.common.dmn.backend.definition.v1_1.dd.DMNDiagram) definitions.getExtensionElements().getAny().get(0);
DMNShape myname = findShapeByDMNI(ddRoot, "_4cd17e52-6253-41d6-820d-5824bf5197f3");
assertBounds(500, 500, 100, 50, myname.getBounds());
assertColor(255, 255, 255, myname.getBgColor());
assertColor(0, 0, 0, myname.getBorderColor());
assertEquals(0.5, myname.getBorderSize().getValue(), 0);
assertDMNStyle("Open Sans", 24, 1, 255, 0, 0, myname.getFontStyle());
DMNShape prefix = findShapeByDMNI(ddRoot, "_e920f38a-293c-41b8-adb3-69d0dc184fab");
assertBounds(300, 400, 100, 50, prefix.getBounds());
assertColor(0, 253, 25, prefix.getBgColor());
assertColor(253, 0, 0, prefix.getBorderColor());
assertEquals(1, prefix.getBorderSize().getValue(), 0);
assertDMNStyle("Times New Roman", 8, 2.5, 70, 60, 50, prefix.getFontStyle());
DMNShape postfix = findShapeByDMNI(ddRoot, "_f49f9c34-29d5-4e72-91d2-f4f92117c8da");
assertBounds(700, 400, 100, 50, postfix.getBounds());
assertColor(247, 255, 0, postfix.getBgColor());
assertColor(0, 51, 255, postfix.getBorderColor());
assertEquals(2, postfix.getBorderSize().getValue(), 0);
assertDMNStyle("Arial", 10, 1.5, 50, 60, 70, postfix.getFontStyle());
DMNShape mydecision = findShapeByDMNI(ddRoot, "_9b061fc3-8109-42e2-9fe4-fc39c90b654e");
assertBounds(487.5, 275, 125, 75, mydecision.getBounds());
assertColor(255, 255, 255, mydecision.getBgColor());
assertColor(0, 0, 0, mydecision.getBorderColor());
assertEquals(0.5, mydecision.getBorderSize().getValue(), 0);
assertDMNStyle("Monospaced", 32, 3.5, 55, 66, 77, mydecision.getFontStyle());
}
use of org.kie.workbench.common.dmn.backend.definition.v1_1.dd.DMNShape in project kie-wb-common by kiegroup.
the class DMNMarshaller method internalAugment.
private void internalAugment(Stream<DMNShape> drgShapeStream, Id id, Bound ul, RectangleDimensionsSet dimensionsSet, Bound lr, BackgroundSet bgset, Consumer<FontSet> fontSetSetter) {
Optional<DMNShape> drgShapeOpt = drgShapeStream.filter(shape -> shape.getDmnElementRef().equals(id.getValue())).findFirst();
if (!drgShapeOpt.isPresent()) {
return;
}
DMNShape drgShape = drgShapeOpt.get();
((BoundImpl) ul).setX(drgShape.getBounds().getX());
((BoundImpl) ul).setY(drgShape.getBounds().getY());
dimensionsSet.setWidth(new Width(drgShape.getBounds().getWidth()));
dimensionsSet.setHeight(new Height(drgShape.getBounds().getHeight()));
((BoundImpl) lr).setX(drgShape.getBounds().getX() + drgShape.getBounds().getWidth());
((BoundImpl) lr).setY(drgShape.getBounds().getY() + drgShape.getBounds().getHeight());
if (null != drgShape.getBgColor()) {
bgset.setBgColour(new BgColour(ColorUtils.wbFromDMN(drgShape.getBgColor())));
}
if (null != drgShape.getBorderColor()) {
bgset.setBorderColour(new BorderColour(ColorUtils.wbFromDMN(drgShape.getBorderColor())));
}
if (null != drgShape.getBorderSize()) {
bgset.setBorderSize(new BorderSize(drgShape.getBorderSize().getValue()));
}
if (null != drgShape.getFontStyle()) {
fontSetSetter.accept(FontSetPropertyConverter.wbFromDMN(drgShape.getFontStyle()));
}
}
Aggregations