diff options
author | Shwetank Dave <shwetank.dave@amdocs.com> | 2017-08-02 17:10:38 -0400 |
---|---|---|
committer | Shwetank Dave <shwetank.dave@amdocs.com> | 2017-08-03 11:28:39 -0400 |
commit | e9c94429a8ada3e55854515060df817945b73d87 (patch) | |
tree | 3c5a9ac766d99570d542c1996f1321c99e5498e5 /src/main/java/org/openecomp/crud/service/CrudGraphDataService.java | |
parent | 27ff75c77611a8bdae37c7c0092787938c63a786 (diff) |
[AAI-26] Adding gizmo data to the repository.
Change-Id: I183f837d45acbfe3c673fde1acf8768d5e3fd37b
Signed-off-by: Shwetank Dave <shwetank.dave@amdocs.com>
Diffstat (limited to 'src/main/java/org/openecomp/crud/service/CrudGraphDataService.java')
-rw-r--r-- | src/main/java/org/openecomp/crud/service/CrudGraphDataService.java | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java b/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java new file mode 100644 index 0000000..ce60c3c --- /dev/null +++ b/src/main/java/org/openecomp/crud/service/CrudGraphDataService.java @@ -0,0 +1,209 @@ +/** + * ============LICENSE_START======================================================= + * Gizmo + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. + * Copyright © 2017 Amdocs + * All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.openecomp.crud.service; + +import com.att.ecomp.event.api.EventPublisher; + +import org.openecomp.crud.dao.GraphDao; +import org.openecomp.crud.dao.champ.ChampDao; +import org.openecomp.crud.entity.Edge; +import org.openecomp.crud.entity.Vertex; +import org.openecomp.crud.exception.CrudException; +import org.openecomp.crud.parser.CrudResponseBuilder; +import org.openecomp.crud.util.CrudProperties; +import org.openecomp.crud.util.CrudServiceConstants; +import org.openecomp.schema.OxmModelLoader; +import org.openecomp.schema.OxmModelValidator; +import org.openecomp.schema.RelationshipSchemaLoader; +import org.openecomp.schema.RelationshipSchemaValidator; + +import java.util.List; +import java.util.Map; +import java.util.Properties; + +public class CrudGraphDataService { + + private GraphDao dao; + + public CrudGraphDataService(EventPublisher champEventPublisher) throws CrudException { + + // Configure the GraphDao and wire it + Properties champProperties = new Properties(); + champProperties.put(ChampDao.CONFIG_STORAGE_BACKEND, "titan"); + champProperties.put(ChampDao.CONFIG_STORAGE_BACKEND_DB, + CrudProperties.get(CrudServiceConstants.CRD_STORAGE_BACKEND_DB, "hbase")); + champProperties.put(ChampDao.CONFIG_STORAGE_HOSTNAMES, + CrudProperties.get(CrudServiceConstants.CRD_GRAPH_HOST)); + champProperties.put(ChampDao.CONFIG_STORAGE_PORT, + CrudProperties.get(CrudServiceConstants.CRD_GRAPH_PORT, "2181")); + champProperties.put(ChampDao.CONFIG_HBASE_ZNODE_PARENT, + CrudProperties.get(CrudServiceConstants.CRD_HBASE_ZNODE_PARENT, "/hbase-unsecure")); + + if (CrudProperties.get("crud.graph.name") != null) { + champProperties.put(ChampDao.CONFIG_GRAPH_NAME, CrudProperties.get("crud.graph.name")); + } + + if (champEventPublisher != null) { + champProperties.put(ChampDao.CONFIG_EVENT_STREAM_PUBLISHER, champEventPublisher); + } + + if (CrudProperties.get(ChampDao.CONFIG_EVENT_STREAM_NUM_PUBLISHERS) != null) { + champProperties.put(ChampDao.CONFIG_EVENT_STREAM_NUM_PUBLISHERS, + Integer.parseInt(CrudProperties.get(ChampDao.CONFIG_EVENT_STREAM_NUM_PUBLISHERS))); + } + + ChampDao champDao = new ChampDao(champProperties); + + this.dao = champDao; + + //load the schemas + OxmModelLoader.loadModels(); + RelationshipSchemaLoader.loadModels(); + } + + + public String addVertex(String version, String type, VertexPayload payload) throws CrudException { + Vertex vertex = OxmModelValidator.validateIncomingUpsertPayload(null, version, type, + payload.getProperties()); + return addVertex(version, vertex); + } + + private String addVertex(String version, Vertex vertex) throws CrudException { + Vertex addedVertex = dao.addVertex(vertex.getType(), vertex.getProperties()); + return CrudResponseBuilder + .buildUpsertVertexResponse(OxmModelValidator.validateOutgoingPayload(version, addedVertex), + version); + } + + public String addEdge(String version, String type, EdgePayload payload) throws CrudException { + Edge edge = RelationshipSchemaValidator.validateIncomingAddPayload(version, type, payload); + return addEdge(version, edge); + } + + private String addEdge(String version, Edge edge) throws CrudException { + Edge addedEdge = dao.addEdge(edge.getType(), edge.getSource(), edge.getTarget(), + edge.getProperties()); + return CrudResponseBuilder.buildUpsertEdgeResponse( + RelationshipSchemaValidator.validateOutgoingPayload(version, addedEdge), version); + } + + public String getEdge(String version, String id, String type) throws CrudException { + RelationshipSchemaValidator.validateType(version, type); + Edge edge = dao.getEdge(id, type); + + return CrudResponseBuilder.buildGetEdgeResponse(RelationshipSchemaValidator + .validateOutgoingPayload(version, edge), + version); + } + + public String getEdges(String version, String type, Map<String, String> filter) + throws CrudException { + RelationshipSchemaValidator.validateType(version, type); + List<Edge> items = dao.getEdges(type, RelationshipSchemaValidator + .resolveCollectionfilter(version, type, filter)); + return CrudResponseBuilder.buildGetEdgesResponse(items, version); + } + + + public String updateVertex(String version, String id, String type, VertexPayload payload) + throws CrudException { + Vertex vertex = OxmModelValidator.validateIncomingUpsertPayload(id, version, type, + payload.getProperties()); + return updateVertex(version, vertex); + + } + + private String updateVertex(String version, Vertex vertex) throws CrudException { + Vertex updatedVertex = dao.updateVertex(vertex.getId().get(), vertex.getType(), + vertex.getProperties()); + return CrudResponseBuilder + .buildUpsertVertexResponse(OxmModelValidator.validateOutgoingPayload(version, + updatedVertex), version); + } + + public String patchVertex(String version, String id, String type, VertexPayload payload) + throws CrudException { + Vertex existingVertex = dao.getVertex(id, OxmModelValidator.resolveCollectionType(version, + type)); + Vertex vertex = OxmModelValidator.validateIncomingPatchPayload(id, version, type, + payload.getProperties(), existingVertex); + return updateVertex(version, vertex); + + } + + public String deleteVertex(String version, String id, String type) throws CrudException { + type = OxmModelValidator.resolveCollectionType(version, type); + dao.deleteVertex(id, type); + return ""; + + } + + public String deleteEdge(String version, String id, String type) throws CrudException { + RelationshipSchemaValidator.validateType(version, type); + dao.deleteEdge(id, type); + return ""; + + } + + public String updateEdge(String version, String id, String type, EdgePayload payload) + throws CrudException { + Edge edge = dao.getEdge(id, type); + Edge validatedEdge = RelationshipSchemaValidator.validateIncomingUpdatePayload(edge, + version, payload); + return updateEdge(version, validatedEdge); + + } + + private String updateEdge(String version, Edge edge) throws CrudException { + Edge updatedEdge = dao.updateEdge(edge); + return CrudResponseBuilder.buildUpsertEdgeResponse( + RelationshipSchemaValidator.validateOutgoingPayload(version, updatedEdge), version); + } + + public String patchEdge(String version, String id, String type, EdgePayload payload) + throws CrudException { + Edge edge = dao.getEdge(id, type); + Edge patchedEdge = RelationshipSchemaValidator.validateIncomingPatchPayload(edge, + version, payload); + return updateEdge(version, patchedEdge); + + } + + public String getVertex(String version, String id, String type) throws CrudException { + type = OxmModelValidator.resolveCollectionType(version, type); + Vertex vertex = dao.getVertex(id, type); + List<Edge> edges = dao.getVertexEdges(id); + return CrudResponseBuilder.buildGetVertexResponse(OxmModelValidator + .validateOutgoingPayload(version, vertex), edges, version); + } + + public String getVertices(String version, String type, Map<String, String> filter) + throws CrudException { + type = OxmModelValidator.resolveCollectionType(version, type); + List<Vertex> items = dao.getVertices(type, OxmModelValidator.resolveCollectionfilter(version, + type, filter)); + return CrudResponseBuilder.buildGetVerticesResponse(items, version); + } + +} |