--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2018 Politecnico di Torino and others.\r
+ *\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Apache License, Version 2.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *******************************************************************************/\r
+package it.polito.verigraph.tosca.converter.grpc;\r
+\r
+import java.util.Map;\r
+\r
+import it.polito.verigraph.grpc.NodeTemplateGrpc;\r
+import it.polito.verigraph.grpc.RelationshipTemplateGrpc;\r
+import it.polito.verigraph.grpc.TopologyTemplateGrpc;\r
+import it.polito.verigraph.grpc.ToscaConfigurationGrpc;\r
+import it.polito.verigraph.grpc.ToscaTestGrpc;\r
+import it.polito.verigraph.grpc.ToscaVerificationGrpc;\r
+import it.polito.verigraph.model.Configuration;\r
+import it.polito.verigraph.model.Graph;\r
+import it.polito.verigraph.model.Neighbour;\r
+import it.polito.verigraph.model.Node;\r
+import it.polito.verigraph.model.Test;\r
+import it.polito.verigraph.model.Verification;\r
+\r
+public class GraphToGrpc {\r
+\r
+ /** Mapping method --> from model Graph to grpc TopologyTemplate */\r
+ public static TopologyTemplateGrpc obtainTopologyTemplate(Graph graph) {\r
+ TopologyTemplateGrpc.Builder topol = TopologyTemplateGrpc.newBuilder();\r
+ topol.setId(String.valueOf(graph.getId()));\r
+\r
+ //NodeTemplate\r
+ for(Node node : graph.getNodes().values()) {\r
+ NodeTemplateGrpc nt = obtainNodeTemplate(node);\r
+ topol.addNodeTemplate(nt);\r
+ //RelationshipTemplate\r
+ Map<Long,Neighbour> neighMap = node.getNeighbours();\r
+ for (Map.Entry<Long, Neighbour> myentry : neighMap.entrySet()) {\r
+ Neighbour neigh = myentry.getValue();\r
+ RelationshipTemplateGrpc relat = obtainRelationshipTemplate(neigh, node);\r
+ topol.addRelationshipTemplate(relat);\r
+ }\r
+ }\r
+ return topol.build();\r
+ }\r
+\r
+\r
+ /** Mapping method --> from model Node to grpc NodeTemplate */\r
+ private static NodeTemplateGrpc obtainNodeTemplate(Node node){\r
+ NodeTemplateGrpc.Builder nodegrpc = NodeTemplateGrpc.newBuilder();\r
+\r
+ nodegrpc.setId(String.valueOf(node.getId()));\r
+ nodegrpc.setName(node.getName());\r
+ nodegrpc.setType(NodeTemplateGrpc.Type.valueOf(node.getFunctional_type().toLowerCase()));\r
+\r
+ ToscaConfigurationGrpc config = obtainToscaConfiguration(node.getConfiguration());\r
+ nodegrpc.setConfiguration(config);\r
+\r
+ return nodegrpc.build();\r
+ }\r
+\r
+\r
+ /** Mapping method --> from model Neighbour to grpc RelationshipTemplate */\r
+ private static RelationshipTemplateGrpc obtainRelationshipTemplate(Neighbour neigh, Node sourceNode) {\r
+ RelationshipTemplateGrpc.Builder relat = RelationshipTemplateGrpc.newBuilder();\r
+ relat.setId(String.valueOf(sourceNode.getId()));\r
+ //Neighbour does not have a neighbourID! RelationshipTemplate does, so it is set to sourceNodeID\r
+ relat.setIdSourceNodeTemplate(String.valueOf(sourceNode.getId()));\r
+ relat.setIdTargetNodeTemplate(String.valueOf(neigh.getId()));\r
+ relat.setName(sourceNode.getName()+"to"+neigh.getName());\r
+ return relat.build();\r
+ }\r
+\r
+\r
+ /** Mapping method --> from model Configuration to grpc ToscaConfigurationGrpc */\r
+ private static ToscaConfigurationGrpc obtainToscaConfiguration(Configuration conf) {\r
+ return ToscaConfigurationGrpc.newBuilder()\r
+ .setId(conf.getId())\r
+ .setDescription(conf.getDescription())\r
+ .setConfiguration(conf.getConfiguration().toString())\r
+ .build();\r
+ }\r
+\r
+ /** Mapping method --> from model Verification to grpc ToscaVerificationGrpc */\r
+ public static ToscaVerificationGrpc obtainToscaVerification(Verification verify){\r
+ ToscaVerificationGrpc.Builder ver = ToscaVerificationGrpc.newBuilder();\r
+ ver.setComment(verify.getComment());\r
+ ver.setResult(verify.getResult());\r
+ for(Test test:verify.getTests()){\r
+ ToscaTestGrpc.Builder tst = ToscaTestGrpc.newBuilder().setResult(test.getResult());\r
+ for(Node node:test.getPath()){\r
+ NodeTemplateGrpc nodetempl = obtainNodeTemplate(node);\r
+ tst.addNodeTemplate(nodetempl);\r
+ }\r
+ ver.addTest(tst);\r
+ }\r
+ return ver.build();\r
+ }\r
+\r
+}\r