From 6aec50e7531735d4cb0e5aae3f1482789f8e463c Mon Sep 17 00:00:00 2001 From: Starec Vlastimil Date: Wed, 1 Jul 2020 16:51:24 +0200 Subject: Perform repository cleanup Register v18 and v19 aai-schemas. Refactor some easy java code. Issue-ID: AAI-2861 Change-Id: I00a7ea4b62ea3e2f59825b37bdca220c3b67b1a7 Signed-off-by: Starec Vlastimil --- .gitignore | 4 +- graphgraph-fe/public/index.html | 36 +++++----- graphgraph-fe/public/manifest.json | 26 +++---- src/main/java/org/onap/aai/graphgraph/App.java | 2 +- src/main/java/org/onap/aai/graphgraph/Config.java | 16 ++--- .../java/org/onap/aai/graphgraph/CorsFilter.java | 13 ++-- .../org/onap/aai/graphgraph/ModelExporter.java | 82 ++++++++++++---------- .../org/onap/aai/graphgraph/SchemaResource.java | 7 +- .../org/onap/aai/graphgraph/SchemaValidator.java | 2 +- .../aai/graphgraph/reader/BasicSchemaReader.java | 13 ++-- .../onap/aai/graphgraph/reader/MetadataEdge.java | 7 +- .../onap/aai/graphgraph/reader/SchemaReader.java | 3 +- .../aai/graphgraph/reader/SchemaRepository.java | 2 +- .../graphgraph/velocity/VelocityAssociation.java | 6 +- .../onap/aai/graphgraph/velocity/VelocityId.java | 4 +- src/main/resources/application.properties | 2 +- 16 files changed, 116 insertions(+), 109 deletions(-) diff --git a/.gitignore b/.gitignore index 42fef25..385b223 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ # production /graphgraph-fe/build +/target # misc /graphgraph-fe/DS_Store @@ -21,5 +22,6 @@ /graphgraph-fe/yarn-debug.log* /graphgraph-fe/yarn-error.log* +# idea /.idea -/target +*.iml diff --git a/graphgraph-fe/public/index.html b/graphgraph-fe/public/index.html index 4a301ff..9775121 100644 --- a/graphgraph-fe/public/index.html +++ b/graphgraph-fe/public/index.html @@ -6,19 +6,19 @@ + manifest.json provides metadata used when your web app is added to the + homescreen on Android. See https://developers.google.com/web/fundamentals/web-app-manifest/ + --> + Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will + work correctly both with client-side routing and a non-root public URL. + Learn how to configure a non-root public URL by running `npm run build`. + --> GraphGraph @@ -27,14 +27,14 @@
- + To begin the development, run `npm start` or `yarn start`. + To create a production bundle, use `npm run build` or `yarn build`. + --> + diff --git a/graphgraph-fe/public/manifest.json b/graphgraph-fe/public/manifest.json index b353df6..926e0af 100644 --- a/graphgraph-fe/public/manifest.json +++ b/graphgraph-fe/public/manifest.json @@ -1,15 +1,15 @@ { - "short_name": "GraphGraph", - "name": "Tool for exploring AAI schemas", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "GraphGraph", + "name": "Tool for exploring AAI schemas", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/src/main/java/org/onap/aai/graphgraph/App.java b/src/main/java/org/onap/aai/graphgraph/App.java index 1c6bc61..3aa326e 100644 --- a/src/main/java/org/onap/aai/graphgraph/App.java +++ b/src/main/java/org/onap/aai/graphgraph/App.java @@ -50,7 +50,7 @@ public class App { // to some initialization issues. By all means feel free to improve and move it to Spring public static void loadSchemes(ConfigurableApplicationContext context) { String version; - for (int i = 10; i < 19; i++) { + for (int i = 10; i <= 20; i++) { version = "v" + i; moxyLoaders.put(version, new MoxyLoader( new SchemaVersion(version), (NodeIngestor) context.getBean("nodeIngestor")) diff --git a/src/main/java/org/onap/aai/graphgraph/Config.java b/src/main/java/org/onap/aai/graphgraph/Config.java index bbc082f..286d40e 100644 --- a/src/main/java/org/onap/aai/graphgraph/Config.java +++ b/src/main/java/org/onap/aai/graphgraph/Config.java @@ -19,10 +19,9 @@ */ package org.onap.aai.graphgraph; -import java.util.LinkedList; -import java.util.List; +import java.util.Arrays; +import java.util.stream.Collectors; import org.onap.aai.graphgraph.reader.BasicSchemaReader; -import org.onap.aai.graphgraph.reader.SchemaReader; import org.onap.aai.graphgraph.reader.SchemaRepository; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -42,11 +41,10 @@ public class Config { @Bean SchemaRepository createSchemaRepository() { - List readers = new LinkedList<>(); - for (String s : schemaVersions.split(",")) { - readers.add(new BasicSchemaReader(s)); - } - return new SchemaRepository(readers); + return new SchemaRepository( + Arrays.stream(schemaVersions.split(",")) + .map(BasicSchemaReader::new) + .collect(Collectors.toList()) + ); } } - diff --git a/src/main/java/org/onap/aai/graphgraph/CorsFilter.java b/src/main/java/org/onap/aai/graphgraph/CorsFilter.java index ab97255..384476b 100644 --- a/src/main/java/org/onap/aai/graphgraph/CorsFilter.java +++ b/src/main/java/org/onap/aai/graphgraph/CorsFilter.java @@ -31,14 +31,15 @@ import org.springframework.web.filter.OncePerRequestFilter; public class CorsFilter extends OncePerRequestFilter { @Override - protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, - final FilterChain filterChain) throws ServletException, IOException { + protected void doFilterInternal( + final HttpServletRequest request, + final HttpServletResponse response, + final FilterChain filterChain + ) throws ServletException, IOException { response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, PATCH, HEAD"); - response.addHeader("Access-Control-Allow-Headers", - "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); - response.addHeader("Access-Control-Expose-Headers", - "Access-Control-Allow-Origin, Access-Control-Allow-Credentials"); + response.addHeader("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); + response.addHeader("Access-Control-Expose-Headers", "Access-Control-Allow-Origin, Access-Control-Allow-Credentials"); response.addHeader("Access-Control-Allow-Credentials", "true"); response.addIntHeader("Access-Control-Max-Age", 10); filterChain.doFilter(request, response); diff --git a/src/main/java/org/onap/aai/graphgraph/ModelExporter.java b/src/main/java/org/onap/aai/graphgraph/ModelExporter.java index 047bd92..474e7de 100644 --- a/src/main/java/org/onap/aai/graphgraph/ModelExporter.java +++ b/src/main/java/org/onap/aai/graphgraph/ModelExporter.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -77,10 +78,11 @@ public class ModelExporter { private static void addOxmRelationships( Multimap allRules, - Map allEntities) { + Map allEntities + ) { for (Entry currentParent : allEntities.entrySet()) { currentParent.getValue().getProperties().stream() - .filter(v -> allEntities.containsKey(v)) + .filter(allEntities::containsKey) .filter(v -> !currentParent.getKey().equals(v)) .forEach(v -> { String key = currentParent.getKey() + "|" + v; @@ -128,11 +130,13 @@ public class ModelExporter { private static VelocityContext populateVelocityContext( String schemaVersion, - Map allObjects) { + Map allObjects + ) { VelocityContext context = new VelocityContext(); Multimap edgeRules = getEdgeRules(schemaVersion); Set entityList = createEntityList(edgeRules); - Set associationsList = createVelocityAssociations(entityList, edgeRules); + Set associationsList = createVelocityAssociations( + entityList, Objects.requireNonNull(edgeRules)); updateEntities(entityList, associationsList, allObjects); context.put("entityList", entityList); context.put("associationList", associationsList); @@ -150,7 +154,8 @@ public class ModelExporter { private static void updateEntities( Set entityList, Set associationsList, - Map allObjects) { + Map allObjects + ) { entityList.forEach(e -> { List associations = associationsList.stream() .filter(a -> a.getFromEntityId().equals(e.getId())).collect( @@ -161,16 +166,16 @@ public class ModelExporter { }); entityList.forEach( - entity -> entity.setProperties(getPropertiesForEntity(allObjects.get(entity.getName()), entityList))); - + e -> e.setProperties(getPropertiesForEntity(allObjects.get(e.getName()), entityList))); } private static void updateNeighbour( - Set entityList, List associations) { + Set entityList, List associations + ) { associations.forEach(ass -> { - VelocityEntity velocityEntity = entityList.stream() - .filter(e -> e.getId().equals(ass.getToEntityId())).findFirst().get(); - velocityEntity.addNeighbours(ass); + Optional velocityEntity = entityList.stream() + .filter(e -> e.getId().equals(ass.getToEntityId())).findFirst(); + velocityEntity.ifPresent(entity -> entity.addNeighbours(ass)); }); } @@ -217,33 +222,36 @@ public class ModelExporter { private static VelocityAssociation createVelocityAssociation( Set entities, String from, String to, String label, String multiplicity, String contains) { - VelocityEntity fromEntity = entities.stream() - .filter(ent -> ent.getName().equals(from)).findFirst().get(); - VelocityEntity toEntity = entities.stream() - .filter(ent -> ent.getName().equals(to)).findFirst().get(); - switch (contains) { - case "IN": - return new VelocityAssociation( - fromEntity, - toEntity, - String.format("%s - %s (%s)", from, to, shortenLabel(label)), - multiplicity, - true); - case "OUT": - return new VelocityAssociation( - toEntity, - fromEntity, - String.format("%s - %s (%s)", to, from, shortenLabel(label)), - multiplicity.equals("ONE2MANY") ? "MANY2ONE" : multiplicity, - true); - default: - return new VelocityAssociation( - fromEntity, - toEntity, - String.format("%s - %s (%s)", from, to, shortenLabel(label)), - multiplicity, - false); + Optional fromEntity = entities.stream() + .filter(ent -> ent.getName().equals(from)).findFirst(); + Optional toEntity = entities.stream() + .filter(ent -> ent.getName().equals(to)).findFirst(); + if (fromEntity.isPresent() && toEntity.isPresent()) { + switch (contains) { + case "IN": + return new VelocityAssociation( + fromEntity.get(), + toEntity.get(), + String.format("%s - %s (%s)", from, to, shortenLabel(label)), + multiplicity, + true); + case "OUT": + return new VelocityAssociation( + toEntity.get(), + fromEntity.get(), + String.format("%s - %s (%s)", to, from, shortenLabel(label)), + multiplicity.equals("ONE2MANY") ? "MANY2ONE" : multiplicity, + true); + default: + return new VelocityAssociation( + fromEntity.get(), + toEntity.get(), + String.format("%s - %s (%s)", from, to, shortenLabel(label)), + multiplicity, + false); + } } + return null; } private static String shortenLabel(String label) { diff --git a/src/main/java/org/onap/aai/graphgraph/SchemaResource.java b/src/main/java/org/onap/aai/graphgraph/SchemaResource.java index 577e235..34f7dae 100644 --- a/src/main/java/org/onap/aai/graphgraph/SchemaResource.java +++ b/src/main/java/org/onap/aai/graphgraph/SchemaResource.java @@ -19,6 +19,9 @@ */ package org.onap.aai.graphgraph; +import java.util.Collections; +import java.util.List; +import javax.annotation.Resource; import org.onap.aai.graphgraph.dto.Graph; import org.onap.aai.graphgraph.dto.NodeName; import org.onap.aai.graphgraph.dto.NodeProperty; @@ -32,10 +35,6 @@ 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; -import java.util.Collections; -import java.util.List; - @RestController public class SchemaResource { diff --git a/src/main/java/org/onap/aai/graphgraph/SchemaValidator.java b/src/main/java/org/onap/aai/graphgraph/SchemaValidator.java index 076c31e..73484f7 100644 --- a/src/main/java/org/onap/aai/graphgraph/SchemaValidator.java +++ b/src/main/java/org/onap/aai/graphgraph/SchemaValidator.java @@ -70,7 +70,7 @@ public class SchemaValidator { } /** - * computes edgerules which don't have the necessary connection to relationship-list in OXM + * computes edgerules which don't have the necessary connection to relationship-list in OXM * @param validationProblems */ private void checkIfDanglingEdgerules(ValidationProblems 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 7f903f7..1a7d963 100644 --- a/src/main/java/org/onap/aai/graphgraph/reader/BasicSchemaReader.java +++ b/src/main/java/org/onap/aai/graphgraph/reader/BasicSchemaReader.java @@ -20,7 +20,6 @@ package org.onap.aai.graphgraph.reader; import com.google.common.collect.Multimap; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -28,10 +27,12 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.function.Predicate; import java.util.stream.Collectors; +import java.util.stream.Stream; import org.jgrapht.Graph; import org.jgrapht.GraphPath; import org.jgrapht.alg.shortestpath.FloydWarshallShortestPaths; @@ -53,8 +54,8 @@ public class BasicSchemaReader implements SchemaReader { private Map allEntities; private Graph graph = new DefaultDirectedGraph<>(MetadataEdge.class); private EdgeIngestor edgeIngestor; - private String version; - private List schemaErrors = new LinkedList<>(); + private final String version; + private final List schemaErrors = new LinkedList<>(); public BasicSchemaReader(String version) { this.version = version; @@ -99,8 +100,8 @@ public class BasicSchemaReader implements SchemaReader { //TODO fix } - allRules.asMap().values().stream() - .flatMap(e -> e.stream()) + Objects.requireNonNull(allRules).asMap().values().stream() + .flatMap(Collection::stream) .forEach(e -> { switch (e.getDirection()) { case OUT: @@ -158,7 +159,7 @@ public class BasicSchemaReader implements SchemaReader { return createGraph( isParentChildFilter(edgeFilter), isEdgeRulesFilter(edgeFilter)).edgeSet().stream() - .flatMap(e -> Arrays.asList(e.getSource(), e.getTarget()).stream()) + .flatMap(e -> Stream.of(e.getSource(), e.getTarget())) .sorted().distinct() .map(NodeName::new) .collect(Collectors.toList()); diff --git a/src/main/java/org/onap/aai/graphgraph/reader/MetadataEdge.java b/src/main/java/org/onap/aai/graphgraph/reader/MetadataEdge.java index 2dea403..548d550 100644 --- a/src/main/java/org/onap/aai/graphgraph/reader/MetadataEdge.java +++ b/src/main/java/org/onap/aai/graphgraph/reader/MetadataEdge.java @@ -28,11 +28,8 @@ public class MetadataEdge extends DefaultEdge { private final String source; private final String label; - MetadataEdge(String type, String source, String target) { - this.source = source; - this.target = target; - this.type = type; - this.label = ""; + MetadataEdge(String type, String target, String source) { + this(type, source, target, ""); } MetadataEdge(String type, String target, String source, String label) { diff --git a/src/main/java/org/onap/aai/graphgraph/reader/SchemaReader.java b/src/main/java/org/onap/aai/graphgraph/reader/SchemaReader.java index 38e1bf6..4150764 100644 --- a/src/main/java/org/onap/aai/graphgraph/reader/SchemaReader.java +++ b/src/main/java/org/onap/aai/graphgraph/reader/SchemaReader.java @@ -19,13 +19,12 @@ */ package org.onap.aai.graphgraph.reader; +import java.util.List; import org.onap.aai.graphgraph.dto.Graph; import org.onap.aai.graphgraph.dto.NodeName; import org.onap.aai.graphgraph.dto.NodeProperty; import org.onap.aai.graphgraph.dto.Property; -import java.util.List; - public interface SchemaReader { String getSchemaName(); diff --git a/src/main/java/org/onap/aai/graphgraph/reader/SchemaRepository.java b/src/main/java/org/onap/aai/graphgraph/reader/SchemaRepository.java index 5764c50..8760974 100644 --- a/src/main/java/org/onap/aai/graphgraph/reader/SchemaRepository.java +++ b/src/main/java/org/onap/aai/graphgraph/reader/SchemaRepository.java @@ -25,7 +25,7 @@ import java.util.stream.Collectors; public class SchemaRepository { - private List readers; + private final List readers; public SchemaRepository(List readers) { this.readers = readers; diff --git a/src/main/java/org/onap/aai/graphgraph/velocity/VelocityAssociation.java b/src/main/java/org/onap/aai/graphgraph/velocity/VelocityAssociation.java index dda37b5..b7b1503 100644 --- a/src/main/java/org/onap/aai/graphgraph/velocity/VelocityAssociation.java +++ b/src/main/java/org/onap/aai/graphgraph/velocity/VelocityAssociation.java @@ -29,8 +29,10 @@ public class VelocityAssociation extends VelocityId { private final String multiplicity; private final boolean isComposition; - public VelocityAssociation(VelocityEntity fromEntity, - VelocityEntity toEntity, String name, String multiplicity, boolean isComposition) { + public VelocityAssociation( + VelocityEntity fromEntity, VelocityEntity toEntity, + String name, String multiplicity, boolean isComposition + ) { this.fromEntity = fromEntity; this.toEntity = toEntity; this.name = name; diff --git a/src/main/java/org/onap/aai/graphgraph/velocity/VelocityId.java b/src/main/java/org/onap/aai/graphgraph/velocity/VelocityId.java index 9b59c82..dc67639 100644 --- a/src/main/java/org/onap/aai/graphgraph/velocity/VelocityId.java +++ b/src/main/java/org/onap/aai/graphgraph/velocity/VelocityId.java @@ -23,13 +23,13 @@ import java.util.UUID; public abstract class VelocityId { - private String id = getRandomId(); + private final String id = getRandomId(); public String getId() { return id; } - public String getRandomId() { + public static String getRandomId() { return UUID.randomUUID().toString(); } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 1576633..4076e38 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -14,7 +14,7 @@ schema.ingest.file=${server.local.startpath}/application.properties schema.uri.base.path=/aai # Lists all of the versions in the schema -schema.version.list=v10,v11,v12,v13,v14,v15,v16,v17,v18 +schema.version.list=v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20 # Specifies from which version should the depth parameter to default to zero schema.version.depth.start=v10 # Specifies from which version should the related link be displayed in response payload -- cgit 1.2.3-korg