aboutsummaryrefslogtreecommitdiffstats
path: root/aai-traversal/src/main/java/org/onap/aai/dbgraphmap/SearchGraph.java
diff options
context:
space:
mode:
Diffstat (limited to 'aai-traversal/src/main/java/org/onap/aai/dbgraphmap/SearchGraph.java')
-rw-r--r--aai-traversal/src/main/java/org/onap/aai/dbgraphmap/SearchGraph.java81
1 files changed, 51 insertions, 30 deletions
diff --git a/aai-traversal/src/main/java/org/onap/aai/dbgraphmap/SearchGraph.java b/aai-traversal/src/main/java/org/onap/aai/dbgraphmap/SearchGraph.java
index 40d3027..0725802 100644
--- a/aai-traversal/src/main/java/org/onap/aai/dbgraphmap/SearchGraph.java
+++ b/aai-traversal/src/main/java/org/onap/aai/dbgraphmap/SearchGraph.java
@@ -51,6 +51,10 @@ import org.onap.aai.dbgen.PropertyLimitDesc;
import org.onap.aai.dbgraphgen.ModelBasedProcessing;
import org.onap.aai.dbgraphgen.ResultSet;
import org.onap.aai.dbmap.DBConnectionType;
+import org.onap.aai.edges.EdgeIngestor;
+import org.onap.aai.edges.EdgeRule;
+import org.onap.aai.edges.EdgeRuleQuery;
+import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException;
import org.onap.aai.exceptions.AAIException;
import org.onap.aai.extensions.AAIExtensionMap;
import org.onap.aai.introspection.Introspector;
@@ -64,14 +68,14 @@ import org.onap.aai.query.builder.QueryBuilder;
import org.onap.aai.schema.enums.ObjectMetadata;
import org.onap.aai.schema.enums.PropertyMetadata;
import org.onap.aai.serialization.db.DBSerializer;
-import org.onap.aai.serialization.db.EdgeRule;
-import org.onap.aai.serialization.db.EdgeRules;
import org.onap.aai.serialization.engines.QueryStyle;
import org.onap.aai.serialization.engines.JanusGraphDBEngine;
import org.onap.aai.serialization.engines.TransactionalGraphEngine;
import org.onap.aai.serialization.queryformats.exceptions.AAIFormatVertexException;
import org.onap.aai.serialization.queryformats.utils.UrlBuilder;
+import org.onap.aai.setup.SchemaVersions;
import org.onap.aai.util.StoreNotificationEvent;
+import org.springframework.beans.factory.annotation.Autowired;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
@@ -79,6 +83,10 @@ import com.google.common.base.CaseFormat;
import edu.emory.mathcs.backport.java.util.Collections;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.Multimap;
+import com.jcabi.log.Logger;
+
/**
* Database Mapping class which acts as the middle man between the REST interface objects
* for the Search namespace
@@ -86,9 +94,20 @@ import edu.emory.mathcs.backport.java.util.Collections;
*/
public class SearchGraph {
- private final String COMPONENT = "aaidbmap";
- private AAIExtensionMap aaiExtMap;
private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(SearchGraph.class);
+
+ private LoaderFactory loaderFactory;
+
+ private EdgeIngestor edgeIngestor;
+
+ private SchemaVersions schemaVersions;
+
+ @Autowired
+ public SearchGraph(LoaderFactory loaderFactory, EdgeIngestor edgeIngestor, SchemaVersions schemaVersions){
+ this.loaderFactory = loaderFactory;
+ this.edgeIngestor = edgeIngestor;
+ this.schemaVersions = schemaVersions;
+ }
/**
* Get the search result based on the includeNodeType and depth provided.
*
@@ -227,7 +246,7 @@ public class SearchGraph {
return response;
}
- private URI craftUriFromQueryParams(Loader loader, String startNodeType, List<String> startNodeKeyParams) throws UnsupportedEncodingException, AAIException {
+ private URI craftUriFromQueryParams(Loader loader, String startNodeType, List<String> startNodeKeyParams) throws UnsupportedEncodingException, IllegalArgumentException, UriBuilderException, AAIException {
Introspector relationship = loader.introspectorFromName("relationship");
relationship.setValue("related-to", startNodeType);
@@ -491,10 +510,18 @@ public class SearchGraph {
* @param nodeType the node type
* @return the edge label
* @throws AAIException the AAI exception
+ * @throws EdgeRuleNotFoundException
*/
- public static String[] getEdgeLabel(String targetNodeType, String nodeType) {
- Map<String, EdgeRule> rules = EdgeRules.getInstance().getEdgeRules(targetNodeType, nodeType);
- return rules.keySet().toArray(new String[0]);
+ public String[] getEdgeLabel(String targetNodeType, String nodeType) throws AAIException, EdgeRuleNotFoundException{
+
+
+ EdgeRuleQuery query = new EdgeRuleQuery.Builder(targetNodeType, nodeType).build();
+ Multimap<String, EdgeRule> edgeRules = ArrayListMultimap.create();
+ edgeRules = edgeIngestor.getRules(query);
+
+ //Map<String, EdgeRule> rules = EdgeRules.getInstance().getEdgeRules(targetNodeType, nodeType);
+ String[] results = edgeRules.keySet().toArray(new String[0]);
+ return results;
}
@@ -511,20 +538,20 @@ public class SearchGraph {
*/
public Response runNamedQuery(String fromAppId, String transId, String queryParameters,
DBConnectionType connectionType,
- AAIExtensionMap aaiExtMap) throws AAIException {
+ AAIExtensionMap aaiExtMap) throws JAXBException, AAIException {
Introspector inventoryItems;
boolean success = true;
TransactionalGraphEngine dbEngine = null;
try {
- MoxyLoader loader = (MoxyLoader)LoaderFactory.createLoaderForVersion(ModelType.MOXY, AAIProperties.LATEST);
+ MoxyLoader loader = (MoxyLoader)loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion());
DynamicJAXBContext jaxbContext = loader.getJAXBContext();
dbEngine = new JanusGraphDBEngine(
QueryStyle.TRAVERSAL,
connectionType,
loader);
- DBSerializer serializer = new DBSerializer(AAIProperties.LATEST, dbEngine, ModelType.MOXY, fromAppId);
+ DBSerializer serializer = new DBSerializer(schemaVersions.getDefaultVersion(), dbEngine, ModelType.MOXY, fromAppId);
ModelBasedProcessing processor = new ModelBasedProcessing(loader, dbEngine, serializer);
dbEngine.startTransaction();
@@ -547,7 +574,7 @@ public class SearchGraph {
DynamicEntity qp = modelAndNamedQuerySearch.get("queryParameters");
String namedQueryUuid = null;
if ((qp != null) && qp.isSet("namedQuery")) {
- DynamicEntity namedQuery = qp.get("namedQuery");
+ DynamicEntity namedQuery = (DynamicEntity) qp.get("namedQuery");
if (namedQuery.isSet("namedQueryUuid")) {
namedQueryUuid = namedQuery.get("namedQueryUuid");
@@ -632,19 +659,19 @@ public class SearchGraph {
public Response executeModelOperation(String fromAppId, String transId, String queryParameters,
DBConnectionType connectionType,
boolean isDelete,
- AAIExtensionMap aaiExtMap) throws AAIException, UnsupportedEncodingException {
+ AAIExtensionMap aaiExtMap) throws JAXBException, AAIException, DynamicException, UnsupportedEncodingException {
Response response;
boolean success = true;
TransactionalGraphEngine dbEngine = null;
try {
- MoxyLoader loader = (MoxyLoader) LoaderFactory.createLoaderForVersion(ModelType.MOXY, AAIProperties.LATEST);
+ MoxyLoader loader = (MoxyLoader) loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion());
DynamicJAXBContext jaxbContext = loader.getJAXBContext();
dbEngine = new JanusGraphDBEngine(
QueryStyle.TRAVERSAL,
connectionType,
loader);
- DBSerializer serializer = new DBSerializer(AAIProperties.LATEST, dbEngine, ModelType.MOXY, fromAppId);
+ DBSerializer serializer = new DBSerializer(schemaVersions.getDefaultVersion(), dbEngine, ModelType.MOXY, fromAppId);
ModelBasedProcessing processor = new ModelBasedProcessing(loader, dbEngine, serializer);
dbEngine.startTransaction();
@@ -688,7 +715,7 @@ public class SearchGraph {
DynamicEntity qp = modelAndNamedQuerySearch.get("queryParameters");
if (qp.isSet("model")) {
- DynamicEntity model = qp.get("model");
+ DynamicEntity model = (DynamicEntity) qp.get("model");
// on an old-style model object, the following 4 attrs were all present
if (model.isSet("modelNameVersionId")) {
@@ -713,7 +740,7 @@ public class SearchGraph {
if (model.isSet("modelVers")) {
// we know that this is new style, because modelVers was not an option
// before v9
- DynamicEntity modelVers = model.get("modelVers");
+ DynamicEntity modelVers = (DynamicEntity) model.get("modelVers");
if (modelVers.isSet("modelVer")) {
List<DynamicEntity> modelVerList = modelVers.get("modelVer");
// if they send more than one, too bad, they get the first one
@@ -734,7 +761,7 @@ public class SearchGraph {
List<Map<String,Object>> startNodeFilterHash = new ArrayList<>();
- String resourceVersion = mapInstanceFilters(modelAndNamedQuerySearch.get("instanceFilters"),
+ String resourceVersion = mapInstanceFilters((DynamicEntity)modelAndNamedQuerySearch.get("instanceFilters"),
startNodeFilterHash, jaxbContext);
if (isDelete) {
@@ -749,13 +776,7 @@ public class SearchGraph {
Vertex firstVert = rs.getVert();
String restURI = serializer.getURIForVertex(firstVert).toString();
- String notificationVersion = AAIProperties.LATEST.toString();
- if (restURI.startsWith("/")) {
- restURI = "/aai/" + notificationVersion + restURI;
- } else {
- restURI = "/aai/" + notificationVersion + "/" + restURI;
- }
-
+ String notificationVersion = schemaVersions.getDefaultVersion().toString();
Map<String,String> delResult = processor.runDeleteByModel( transId, fromAppId,
modelVersionId, topNodeType, startNodeFilterHash.get(0), aaiExtMap.getApiVersion(), resourceVersion );
@@ -836,7 +857,7 @@ public class SearchGraph {
return null;
}
@SuppressWarnings("unchecked")
- List<DynamicEntity> instanceFilter = instanceFilters.get("instanceFilter");
+ List<DynamicEntity> instanceFilter = (ArrayList<DynamicEntity>)instanceFilters.get("instanceFilter");
String resourceVersion = null;
for (DynamicEntity instFilt : instanceFilter) {
@@ -855,7 +876,7 @@ public class SearchGraph {
if (anyEnt.isSet(propName)) {
thisNodeFilterHash.put(nodeType + "." + CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, propName), anyEnt.get(propName));
if (propName.equals("resourceVersion") && resourceVersion == null) {
- resourceVersion = anyEnt.get(propName);
+ resourceVersion = (String)anyEnt.get(propName);
}
}
}
@@ -879,7 +900,7 @@ public class SearchGraph {
return;
}
@SuppressWarnings("unchecked")
- List<DynamicEntity> secondaryFilter = secondaryFilts.get("secondaryFilt");
+ List<DynamicEntity> secondaryFilter = (ArrayList<DynamicEntity>)secondaryFilts.get("secondaryFilt");
for (DynamicEntity secondaryFilt : secondaryFilter) {
List<DynamicEntity> any = secondaryFilt.get("any");
@@ -1061,8 +1082,8 @@ public class SearchGraph {
String modelName = null;
try {
// Try to get the modelName if we can. Otherwise, do not fail, just return what we have already.
- String modelInvariantIdLocal = vert.<String>property("model-invariant-id-local").orElse(null); // this one points at a model
- String modelVersionIdLocal = vert.<String>property("model-version-id-local").orElse(null); // this one points at a model-ver
+ String modelInvariantIdLocal = (String)vert.<String>property("model-invariant-id-local").orElse(null); // this one points at a model
+ String modelVersionIdLocal = (String)vert.<String>property("model-version-id-local").orElse(null); // this one points at a model-ver
if ( (modelInvariantIdLocal != null && modelVersionIdLocal != null)
&& (modelInvariantIdLocal.length() > 0 && modelVersionIdLocal.length() > 0) ) {