Skip to content

Commit ca12066

Browse files
committed
Fixes for ability to not draw arrows pointing to an empty box
1 parent e5bdab0 commit ca12066

File tree

8 files changed

+40
-23
lines changed

8 files changed

+40
-23
lines changed

shacl-diagram/src/main/java/fr/sparna/rdf/shacl/diagram/Main.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ public static void main(String[] args) throws Exception {
3737
}
3838

3939

40-
ShaclPlantUmlWriter writer = new ShaclPlantUmlWriter(true, false);
41-
String output = writer.writeInPlantUml(shaclGraph,owlGraph,outExpandDiagram);
40+
ShaclPlantUmlWriter writer = new ShaclPlantUmlWriter(true, false, outExpandDiagram);
41+
String output = writer.writeInPlantUml(shaclGraph,owlGraph);
4242

4343
String outputDirectory ="C:/Temp" ; //args[1];
4444

shacl-diagram/src/main/java/fr/sparna/rdf/shacl/diagram/PlantUmlRenderer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,14 +232,14 @@ public String renderDefault(PlantUmlProperty property, String boxName) {
232232
return output;
233233
}
234234

235-
public String renderNodeShape(PlantUmlBox box, List<PlantUmlBox> GlobalBox, boolean outExpandDiagram) {
235+
public String renderNodeShape(PlantUmlBox box, List<PlantUmlBox> GlobalBox, boolean avoidArrowsToEmptyBoxes) {
236236
// String declaration = "Class"+"
237237
// "+"\""+box.getNameshape()+"\""+((box.getNametargetclass() != null)?"
238238
// "+"<"+box.getNametargetclass()+">":"");
239239
String declaration = "";
240240
// Array for control inverse
241241

242-
if (outExpandDiagram) {
242+
if (avoidArrowsToEmptyBoxes) {
243243
if (box.getProperties().size() > 0) {
244244

245245
declaration = "Class" + " " + "\"" + box.getLabel() + "\"";

shacl-diagram/src/main/java/fr/sparna/rdf/shacl/diagram/ShaclPlantUmlWriter.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,29 @@
66
import java.util.stream.Collectors;
77

88
import org.apache.jena.rdf.model.Model;
9-
import org.apache.jena.rdf.model.Property;
109
import org.apache.jena.rdf.model.RDFNode;
1110
import org.apache.jena.rdf.model.Resource;
12-
import org.apache.jena.vocabulary.OWL;
1311
import org.apache.jena.vocabulary.RDF;
1412
import org.topbraid.shacl.vocabulary.SH;
1513

1614
public class ShaclPlantUmlWriter {
1715

1816
protected boolean includeSubclassLinks = true;
1917
protected boolean generateAnchorHyperlink = false;
18+
protected boolean avoidArrowsToEmptyBoxes = true;
2019

21-
public ShaclPlantUmlWriter(boolean includeSubclassLinks, boolean generateAnchorHyperlink) {
20+
public ShaclPlantUmlWriter(
21+
boolean includeSubclassLinks,
22+
boolean generateAnchorHyperlink,
23+
boolean avoidArrowsToEmptyBoxes
24+
) {
2225
super();
2326
this.includeSubclassLinks = includeSubclassLinks;
2427
this.generateAnchorHyperlink = generateAnchorHyperlink;
28+
this.avoidArrowsToEmptyBoxes = avoidArrowsToEmptyBoxes;
2529
}
2630

27-
public String writeInPlantUml(Model shaclGraph, Model owlGraph, boolean outExpandDiagram) {
31+
public String writeInPlantUml(Model shaclGraph, Model owlGraph) {
2832

2933
// read everything typed as NodeShape
3034
List<Resource> nodeShapes = shaclGraph.listResourcesWithProperty(RDF.type, SH.NodeShape).toList();
@@ -95,7 +99,7 @@ public String writeInPlantUml(Model shaclGraph, Model owlGraph, boolean outExpan
9599
}
96100

97101
for (PlantUmlBox plantUmlBox : plantUmlBoxes.stream().filter(b -> b.getPackageName().equals(aPackage)).collect(Collectors.toList())) {
98-
sourceuml.append(renderer.renderNodeShape(plantUmlBox,plantUmlBoxes,outExpandDiagram));
102+
sourceuml.append(renderer.renderNodeShape(plantUmlBox,plantUmlBoxes,this.avoidArrowsToEmptyBoxes));
99103
}
100104

101105
if(!aPackage.equals("")) {

shacl-doc/src/main/java/fr/sparna/rdf/shacl/doc/PlantUmlSourceGenerator.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,24 @@
99

1010
public class PlantUmlSourceGenerator {
1111

12-
public String generatePlantUmlDiagram(Model shapesModel, Model owlModel, boolean subclasssOf,boolean Classlink, boolean outExpandDiagram) throws IOException {
12+
public String generatePlantUmlDiagram(
13+
Model shapesModel,
14+
Model owlModel,
15+
boolean subclasssOf,
16+
boolean Classlink,
17+
boolean avoidArrowsToEmptyBoxes
18+
) throws IOException {
1319

1420
// draw - without subclasses links
1521
// set first parameter to true to draw subclassOf links
16-
ShaclPlantUmlWriter writer = new ShaclPlantUmlWriter(subclasssOf, Classlink);
22+
ShaclPlantUmlWriter writer = new ShaclPlantUmlWriter(subclasssOf, Classlink, avoidArrowsToEmptyBoxes);
1723
Model finalModel = ModelFactory.createDefaultModel();
1824
finalModel.add(shapesModel);
1925
if(owlModel != null) {
2026
finalModel.add(owlModel);
2127
}
2228
//String plantUmlString = writer.writeInPlantUml(finalModel,,outExpandDiagram);
23-
String plantUmlString = writer.writeInPlantUml(shapesModel,owlModel,outExpandDiagram);
29+
String plantUmlString = writer.writeInPlantUml(shapesModel,owlModel);
2430
return plantUmlString;
2531
}
2632

shacl-doc/src/main/java/fr/sparna/rdf/shacl/doc/SVGGenerator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@
1414

1515
public class SVGGenerator {
1616

17-
public String generateSvgDiagram(Model shapesModel, Model owlModel,boolean outExpandDiagram) throws IOException {
17+
public String generateSvgDiagram(Model shapesModel, Model owlModel,boolean avoidArrowsToEmptyBoxes) throws IOException {
1818

1919
// draw - without subclasses links
2020
// set first parameter to true to draw subclassOf links
21-
ShaclPlantUmlWriter writer = new ShaclPlantUmlWriter(true, true);
21+
ShaclPlantUmlWriter writer = new ShaclPlantUmlWriter(true, true, avoidArrowsToEmptyBoxes);
2222
Model finalModel = ModelFactory.createDefaultModel();
2323
finalModel.add(shapesModel);
2424
if(owlModel != null) {
2525
finalModel.add(owlModel);
2626
}
2727
//String plantUmlString = writer.writeInPlantUml(finalModel);
28-
String plantUmlString = writer.writeInPlantUml(shapesModel,owlModel,outExpandDiagram);
28+
String plantUmlString = writer.writeInPlantUml(shapesModel,owlModel);
2929

3030
// System.out.println(plantUmlString);
3131

shacl-play-app/src/main/java/fr/sparna/rdf/shacl/app/draw/Draw.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ public void execute(Object args) throws Exception {
3333
InputModelReader.populateModel(shapesModel, a.getInput(), null);
3434

3535
// draw
36-
ShaclPlantUmlWriter writer = new ShaclPlantUmlWriter(a.isIncludeSubclasses(), false);
36+
ShaclPlantUmlWriter writer = new ShaclPlantUmlWriter(a.isIncludeSubclasses(), false, true);
3737
// TODO : add parameter with OWL file
38-
String plantUmlString = writer.writeInPlantUml(shapesModel, ModelFactory.createDefaultModel(), false);
38+
String plantUmlString = writer.writeInPlantUml(shapesModel, ModelFactory.createDefaultModel());
3939

4040
for(File outputFile : a.getOutput()) {
4141

shacl-play/src/main/java/fr/sparna/rdf/shacl/shaclplay/doc/DocController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,8 @@ protected void doOutputDoc(
167167
ShapesDocumentationReaderIfc reader = new ShapesDocumentationModelReader(true);
168168
ShapesDocumentation doc = reader.readShapesDocumentation(
169169
shapesModel,
170-
null,
170+
// OWL graph
171+
ModelFactory.createDefaultModel(),
171172
"en",
172173
filename,
173174
false

shacl-play/src/main/java/fr/sparna/rdf/shacl/shaclplay/draw/DrawController.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -185,14 +185,20 @@ protected void doOutputDiagram(
185185
FORMAT format,
186186
HttpServletResponse response
187187
) throws IOException {
188-
// includes the subClassOf links in the generated diagram
189-
// don't generate hyperlinks
190-
ShaclPlantUmlWriter writer = new ShaclPlantUmlWriter(true, false);
188+
189+
190+
ShaclPlantUmlWriter writer = new ShaclPlantUmlWriter(
191+
// includes the subClassOf links in the generated diagram
192+
true,
193+
// don't generate hyperlinks
194+
false,
195+
// avoid arrows to empty boxes
196+
true);
191197
String plantumlString = writer.writeInPlantUml(
192198
shapesModel,
193199
// OWL Model
194-
ModelFactory.createDefaultModel(),
195-
false);
200+
ModelFactory.createDefaultModel()
201+
);
196202

197203
response.setContentType(format.mimeType);
198204
response.setHeader("Content-Disposition", "inline; filename=\""+filename+"."+format.extension+"\"");

0 commit comments

Comments
 (0)