aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPavel Paroulek <pavel.paroulek@orange.com>2019-09-19 14:16:46 +0200
committerPavel Paroulek <pavel.paroulek@orange.com>2019-09-19 14:16:46 +0200
commit978bcaf8d8319633ae0532d0449e93384a6d912c (patch)
treef80d683d9f6384437677915f8902cad121d91837 /src
parent0a6fb2e8a9e0df82035e8e23c79db79757ace25b (diff)
Adding validations
Adding schema validation rule and export button Change-Id: Id30787cb5c5b98318fa0bd1c34baa31d530e1a58 Issue-ID: AAI-2583 Signed-off-by: Pavel Paroulek <pavel.paroulek@orange.com>
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/onap/aai/graphgraph/App.java3
-rw-r--r--src/main/java/org/onap/aai/graphgraph/ModelExporter.java10
-rw-r--r--src/main/java/org/onap/aai/graphgraph/SchemaResource.java8
-rw-r--r--src/main/java/org/onap/aai/graphgraph/SchemaValidator.java2
-rw-r--r--src/main/java/org/onap/aai/graphgraph/reader/BasicSchemaReader.java17
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()));