diff options
Diffstat (limited to 'src/main/java')
5 files changed, 34 insertions, 6 deletions
diff --git a/src/main/java/org/onap/aai/graphgraph/App.java b/src/main/java/org/onap/aai/graphgraph/App.java index 58e0d66..910c086 100644 --- a/src/main/java/org/onap/aai/graphgraph/App.java +++ b/src/main/java/org/onap/aai/graphgraph/App.java @@ -20,6 +20,7 @@ package org.onap.aai.graphgraph; import static org.onap.aai.graphgraph.ModelExporter.exportModel; +import static org.onap.aai.graphgraph.ModelExporter.writeExportedModel; import java.io.IOException; import java.nio.file.Files; @@ -74,7 +75,7 @@ public class App{ edgeIngestor = (EdgeIngestor) context.getBean("edgeIngestor"); if (parser.shoudGenerateUml()){ - exportModel(parser.getSchemaVersion()); + writeExportedModel(exportModel(parser.getSchemaVersion())); System.exit(0); } } diff --git a/src/main/java/org/onap/aai/graphgraph/ModelExporter.java b/src/main/java/org/onap/aai/graphgraph/ModelExporter.java index ce7ae39..60a4231 100644 --- a/src/main/java/org/onap/aai/graphgraph/ModelExporter.java +++ b/src/main/java/org/onap/aai/graphgraph/ModelExporter.java @@ -103,15 +103,19 @@ public class ModelExporter { return new EdgeRule(edgeRuleProps); } - static void exportModel(String schemaVersion) { + static String exportModel(String schemaVersion) { Map<String, Introspector> allObjects = App.moxyLoaders.get(schemaVersion).getAllObjects(); Template t = initVelocity(); VelocityContext context = populateVelocityContext(schemaVersion, allObjects); StringWriter writer = new StringWriter(); t.merge( context, writer ); + return writer.toString(); + } + + static void writeExportedModel(String result) { try { FileWriter fw = new FileWriter(AAIMODEL_UML_FILENAME); - fw.write(writer.toString()); + fw.write(result); fw.close(); } catch (IOException e) { e.printStackTrace(); @@ -219,7 +223,7 @@ public class ModelExporter { toEntity, fromEntity, String.format("%s - %s (%s)", to, from, shortenLabel(label)), - multiplicity, + multiplicity.equals("ONE2MANY") ? "MANY2ONE" : multiplicity, true); default: return new VelocityAssociation( diff --git a/src/main/java/org/onap/aai/graphgraph/SchemaResource.java b/src/main/java/org/onap/aai/graphgraph/SchemaResource.java index 3182681..b38ef7b 100644 --- a/src/main/java/org/onap/aai/graphgraph/SchemaResource.java +++ b/src/main/java/org/onap/aai/graphgraph/SchemaResource.java @@ -25,9 +25,11 @@ import org.onap.aai.graphgraph.dto.NodeProperty; import org.onap.aai.graphgraph.dto.Property; import org.onap.aai.graphgraph.dto.ValidationProblems; import org.onap.aai.graphgraph.reader.SchemaRepository; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -96,6 +98,12 @@ public class SchemaResource { public ValidationProblems validateSchema ( @PathVariable("schema") String schemaName) { return new SchemaValidator().validate(schemaName); } + + @RequestMapping(value = "/schemas/{schema}/xmiexport", produces = MediaType.TEXT_XML_VALUE) + @ResponseBody + public String exportSchema ( @PathVariable("schema") String schemaName) { + return ModelExporter.exportModel(schemaName); + } } diff --git a/src/main/java/org/onap/aai/graphgraph/SchemaValidator.java b/src/main/java/org/onap/aai/graphgraph/SchemaValidator.java index b67f1ad..28bb12e 100644 --- a/src/main/java/org/onap/aai/graphgraph/SchemaValidator.java +++ b/src/main/java/org/onap/aai/graphgraph/SchemaValidator.java @@ -2,7 +2,6 @@ package org.onap.aai.graphgraph; import io.vavr.Tuple; import io.vavr.Tuple2; -import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -24,6 +23,7 @@ public class SchemaValidator { checkIfDanglingEdgerules(validationProblems); checkIfObsoleteOxm(validationProblems); + schema.getSchemaErrors().forEach(validationProblems::addProblem); return validationProblems; } diff --git a/src/main/java/org/onap/aai/graphgraph/reader/BasicSchemaReader.java b/src/main/java/org/onap/aai/graphgraph/reader/BasicSchemaReader.java index 1c58550..b2d766b 100644 --- a/src/main/java/org/onap/aai/graphgraph/reader/BasicSchemaReader.java +++ b/src/main/java/org/onap/aai/graphgraph/reader/BasicSchemaReader.java @@ -51,9 +51,14 @@ import org.onap.aai.setup.SchemaVersion; public class BasicSchemaReader implements SchemaReader { private Map<String, Introspector> allEntities; - Graph<String, MetadataEdge> graph = new DefaultDirectedGraph<>(MetadataEdge.class); + private Graph<String, MetadataEdge> graph = new DefaultDirectedGraph<>(MetadataEdge.class); private EdgeIngestor edgeIngestor; private String version; + private List<String> schemaErrors = new LinkedList<>(); + + public List<String> getSchemaErrors() { + return schemaErrors; + } public BasicSchemaReader(String version) { this.version = version; @@ -119,10 +124,20 @@ public class BasicSchemaReader implements SchemaReader { String[] split = label.split("\\."); label = split[split.length - 1]; } + checkVertexExist(graph, parent); + checkVertexExist(graph, child); + graph.addEdge(child, parent, new MetadataEdge(EdgeType.EDGE_RULE.getTypeName(), child, parent, label)); } + private void checkVertexExist(Graph<String, MetadataEdge> graph, String vertex) { + if (! graph.vertexSet().contains(vertex)) { + graph.addVertex(vertex); + schemaErrors.add(String.format("Schema is inconsistent, missing node %s", vertex)); + } + } + private void addParentChildEdge(String parent, String child, Graph<String, MetadataEdge> graph) { graph.addEdge(parent, child, new MetadataEdge(EdgeType.PARENT.getTypeName(), parent, child, EdgeType.PARENT.getTypeName())); |