2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2019 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2019 Amdocs
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
21 package org.onap.aai.schemaif.oxm;
23 import java.util.HashSet;
24 import java.util.List;
28 import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
29 import org.onap.aai.edges.EdgeRule;
30 import org.onap.aai.schemaif.SchemaProvider;
31 import org.onap.aai.schemaif.SchemaProviderException;
32 import org.onap.aai.schemaif.definitions.EdgeSchema;
33 import org.onap.aai.schemaif.definitions.VertexSchema;
36 public class OxmSchemaProvider implements SchemaProvider {
39 public void loadSchema() throws SchemaProviderException {
40 OxmEdgeRulesLoader.loadModels();
41 OxmSchemaLoader.loadModels();
45 public String getLatestSchemaVersion() throws SchemaProviderException {
46 return OxmSchemaLoader.getLatestVersion();
50 public VertexSchema getVertexSchema(String vertexName, String schemaVersion) throws SchemaProviderException {
51 DynamicJAXBContext jaxbContext = OxmSchemaLoader.getContextForVersion(schemaVersion);
52 FromOxmVertexSchema vs = new FromOxmVertexSchema();
55 vs.fromOxm(vertexName, jaxbContext, OxmSchemaLoader.getXmlLookupMap(schemaVersion));
57 catch (SchemaProviderException ex) {
58 // Node doesn't exist in schema. Return null.
66 public EdgeSchema getEdgeSchema(String edgeType, String sourceVertex, String targetVertex, String version)
67 throws SchemaProviderException {
68 RelationshipSchema relSchema = OxmEdgeRulesLoader.getSchemaForVersion(version);
69 String key = sourceVertex + ":" + targetVertex + ":" + edgeType;
71 EdgeRule edgeRule = relSchema.lookupEdgeRule(key);
72 if (edgeRule == null) {
76 FromOxmEdgeSchema es = new FromOxmEdgeSchema();
77 es.fromEdgeRule(edgeRule);
83 public Set<EdgeSchema> getAdjacentEdgeSchema(String vertexType, String version) throws SchemaProviderException {
84 RelationshipSchema relSchema = OxmEdgeRulesLoader.getSchemaForVersion(version);
85 Set<EdgeSchema> edges = new HashSet<EdgeSchema>();
86 List<EdgeRule> rules = relSchema.lookupAdjacentEdges(vertexType);
88 for (EdgeRule rule : rules) {
89 FromOxmEdgeSchema es = new FromOxmEdgeSchema();
90 es.fromEdgeRule(rule);
98 public Set<EdgeSchema> getEdgeSchemaForSourceTarget(String sourceType, String targetType, String version) throws SchemaProviderException {
99 RelationshipSchema relSchema = OxmEdgeRulesLoader.getSchemaForVersion(version);
100 Set<EdgeSchema> edges = new HashSet<EdgeSchema>();
101 Set<String> relTypes = relSchema.getValidRelationTypes(sourceType, targetType);
103 for (String type : relTypes) {
104 EdgeSchema edgeSchema = getEdgeSchema(type, sourceType, targetType, version);
105 if (edgeSchema != null) {
106 edges.add(edgeSchema);
114 public Map<String, VertexSchema> getVertexMap(String schemaVersion) throws SchemaProviderException {
115 return OxmSchemaLoader.getVertexLookupForVersion(schemaVersion);