Move jsonRepresentation

Move the storage of jsonRepresentation to OperationalPolicy level

Issue-ID: CLAMP-582
Change-Id: Id555ebc1f2f04468f7bf0ffd813de7732bcee97f
Signed-off-by: xuegao <xg353y@intl.att.com>
diff --git a/extra/sql/bulkload/create-tables.sql b/extra/sql/bulkload/create-tables.sql
index 85b8f85..6e9ff7c 100644
--- a/extra/sql/bulkload/create-tables.sql
+++ b/extra/sql/bulkload/create-tables.sql
@@ -23,7 +23,6 @@
         dcae_deployment_status_url varchar(255),
         global_properties_json json,
         last_computed_state varchar(255) not null,
-        operational_policy_schema json,
         svg_representation MEDIUMTEXT,
         service_uuid varchar(255),
         primary key (name)
@@ -48,6 +47,7 @@
     create table operational_policies (
        name varchar(255) not null,
         configurations_json json,
+        json_representation json not null,
         loop_id varchar(255) not null,
         primary key (name)
     ) engine=InnoDB;
diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java
index bf68366..531587a 100644
--- a/src/main/java/org/onap/clamp/loop/Loop.java
+++ b/src/main/java/org/onap/clamp/loop/Loop.java
@@ -26,10 +26,8 @@
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.google.gson.JsonObject;
-import com.google.gson.JsonSyntaxException;
 import com.google.gson.annotations.Expose;
 
-import java.io.IOException;
 import java.io.Serializable;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -65,7 +63,6 @@
 import org.onap.clamp.loop.service.Service;
 import org.onap.clamp.policy.microservice.MicroServicePolicy;
 import org.onap.clamp.policy.operational.OperationalPolicy;
-import org.onap.clamp.policy.operational.OperationalPolicyRepresentationBuilder;
 
 @Entity
 @Table(name = "loops")
@@ -102,11 +99,6 @@
 
     @Expose
     @Type(type = "json")
-    @Column(columnDefinition = "json", name = "operational_policy_schema")
-    private JsonObject operationalPolicySchema;
-
-    @Expose
-    @Type(type = "json")
     @Column(columnDefinition = "json", name = "global_properties_json")
     private JsonObject globalPropertiesJson;
 
@@ -274,13 +266,6 @@
 
     void setModelService(Service modelService) {
         this.modelService = modelService;
-        try {
-            this.operationalPolicySchema = OperationalPolicyRepresentationBuilder
-                    .generateOperationalPolicySchema(this.getModelService());
-        } catch (JsonSyntaxException | IOException | NullPointerException e) {
-            logger.error("Unable to generate the operational policy Schema ... ", e);
-            this.operationalPolicySchema = new JsonObject();
-        }
     }
 
     public Map<String, ExternalComponent> getComponents() {
diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
index c6ed498..1411269 100644
--- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
+++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
@@ -30,8 +30,10 @@
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
+import com.google.gson.JsonSyntaxException;
 import com.google.gson.annotations.Expose;
 
+import java.io.IOException;
 import java.io.Serializable;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
@@ -79,6 +81,11 @@
     @Column(columnDefinition = "json", name = "configurations_json")
     private JsonObject configurationsJson;
 
+    @Expose
+    @Type(type = "json")
+    @Column(columnDefinition = "json", name = "json_representation", nullable = false)
+    private JsonObject jsonRepresentation;
+
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "loop_id", nullable = false)
     private Loop loop;
@@ -100,6 +107,13 @@
         this.loop = loop;
         this.configurationsJson = configurationsJson;
         LegacyOperationalPolicy.preloadConfiguration(this.configurationsJson, loop);
+        try {
+            this.jsonRepresentation = OperationalPolicyRepresentationBuilder
+                    .generateOperationalPolicySchema(loop.getModelService());
+        } catch (JsonSyntaxException | IOException | NullPointerException e) {
+            logger.error("Unable to generate the operational policy Schema ... ", e);
+            this.jsonRepresentation = new JsonObject();
+        }
     }
 
     @Override
@@ -125,7 +139,11 @@
 
     @Override
     public JsonObject getJsonRepresentation() {
-        return null;
+         return jsonRepresentation;
+    }
+
+    void setJsonRepresentation(JsonObject jsonRepresentation) {
+        this.jsonRepresentation = jsonRepresentation;
     }
 
     @Override
diff --git a/src/test/resources/tosca/loop.json b/src/test/resources/tosca/loop.json
index 557fa6f..cb1697b 100644
--- a/src/test/resources/tosca/loop.json
+++ b/src/test/resources/tosca/loop.json
@@ -3,580 +3,6 @@
   "dcaeDeploymentId": "123456789",
   "dcaeDeploymentStatusUrl": "https://dcaetest.org",
   "dcaeBlueprintId": "UUID-blueprint",
-  "operationalPolicySchema": {
-    "schema": {
-      "uniqueItems": "true",
-      "format": "tabs",
-      "type": "array",
-      "minItems": 1,
-      "maxItems": 1,
-      "title": "Operational policies",
-      "items": {
-        "type": "object",
-        "title": "Operational Policy Item",
-        "id": "operational_policy_item",
-        "headerTemplate": "{{self.name}}",
-        "required": [
-          "name",
-          "configurationsJson"
-        ],
-        "properties": {
-          "name": {
-            "type": "string",
-            "title": "Operational policy name",
-            "readOnly": "True"
-          },
-          "configurationsJson": {
-            "type": "object",
-            "title": "Configuration",
-            "required": [
-              "operational_policy",
-              "guard_policies"
-            ],
-            "properties": {
-              "operational_policy": {
-                "type": "object",
-                "title": "Related Parameters",
-                "required": [
-                  "controlLoop",
-                  "policies"
-                ],
-                "properties": {
-                  "controlLoop": {
-                    "type": "object",
-                    "title": "Control Loop details",
-                    "required": [
-                      "timeout",
-                      "abatement",
-                      "trigger_policy",
-                      "controlLoopName"
-                    ],
-                    "properties": {
-                      "timeout": {
-                        "type": "string",
-                        "title": "Overall Time Limit",
-                        "default": "0",
-                        "format": "number"
-                      },
-                      "abatement": {
-                        "type": "string",
-                        "title": "Abatement",
-                        "enum": [
-                          "True",
-                          "False"
-                        ]
-                      },
-                      "trigger_policy": {
-                        "type": "string",
-                        "title": "Policy Decision Entry"
-                      },
-                      "controlLoopName": {
-                        "type": "string",
-                        "title": "Control loop name",
-                        "readOnly": "True"
-                      }
-                    }
-                  },
-                  "policies": {
-                    "uniqueItems": "true",
-                    "id": "policies_array",
-                    "type": "array",
-                    "title": "Policy Decision Tree",
-                    "format": "tabs-top",
-                    "items": {
-                      "title": "Policy Decision",
-                      "type": "object",
-                      "id": "policy_item",
-                      "headerTemplate": "{{self.id}} - {{self.recipe}}",
-                      "format": "categories",
-                      "basicCategoryTitle": "recipe",
-                      "required": [
-                        "id",
-                        "recipe",
-                        "retry",
-                        "timeout",
-                        "actor",
-                        "success",
-                        "failure",
-                        "failure_timeout",
-                        "failure_retries",
-                        "failure_exception",
-                        "failure_guard",
-                        "target"
-                      ],
-                      "properties": {
-                        "id": {
-                          "default": "Policy 1",
-                          "title": "Policy ID",
-                          "type": "string"
-                        },
-                        "recipe": {
-                          "title": "Recipe",
-                          "type": "string",
-                          "enum": [
-                            "Restart",
-                            "Rebuild",
-                            "Migrate",
-                            "Health-Check",
-                            "ModifyConfig",
-                            "VF Module Create",
-                            "VF Module Delete",
-                            "Reroute"
-                          ]
-                        },
-                        "retry": {
-                          "default": "0",
-                          "title": "Number of Retry",
-                          "type": "string",
-                          "format": "number"
-                        },
-                        "timeout": {
-                          "default": "0",
-                          "title": "Timeout",
-                          "type": "string",
-                          "format": "number"
-                        },
-                        "actor": {
-                          "title": "Actor",
-                          "type": "string",
-                          "enum": [
-                            "APPC",
-                            "SO",
-                            "VFC",
-                            "SDNC",
-                            "SDNR"
-                          ]
-                        },
-                        "payload": {
-                          "title": "Payload (YAML)",
-                          "type": "string",
-                          "format": "textarea"
-                        },
-                        "success": {
-                          "default": "final_success",
-                          "title": "When Success",
-                          "type": "string"
-                        },
-                        "failure": {
-                          "default": "final_failure",
-                          "title": "When Failure",
-                          "type": "string"
-                        },
-                        "failure_timeout": {
-                          "default": "final_failure_timeout",
-                          "title": "When Failure Timeout",
-                          "type": "string"
-                        },
-                        "failure_retries": {
-                          "default": "final_failure_retries",
-                          "title": "When Failure Retries",
-                          "type": "string"
-                        },
-                        "failure_exception": {
-                          "default": "final_failure_exception",
-                          "title": "When Failure Exception",
-                          "type": "string"
-                        },
-                        "failure_guard": {
-                          "default": "final_failure_guard",
-                          "title": "When Failure Guard",
-                          "type": "string"
-                        },
-                        "target": {
-                          "type": "object",
-                          "required": [
-                            "type",
-                            "resourceID"
-                          ],
-                          "anyOf": [
-                            {
-                              "title": "User Defined",
-                              "additionalProperties": "True",
-                              "properties": {
-                                "type": {
-                                  "title": "Target type",
-                                  "type": "string",
-                                  "default": "",
-                                  "enum": [
-                                    "VNF",
-                                    "VFMODULE",
-                                    "VM"
-                                  ]
-                                },
-                                "resourceID": {
-                                  "title": "Target type",
-                                  "type": "string",
-                                  "default": ""
-                                }
-                              }
-                            },
-                            {
-                              "title": "VNF-vLoadBalancerMS 0",
-                              "properties": {
-                                "type": {
-                                  "title": "Type",
-                                  "type": "string",
-                                  "default": "VNF",
-                                  "readOnly": "True"
-                                },
-                                "resourceID": {
-                                  "title": "Resource ID",
-                                  "type": "string",
-                                  "default": "vLoadBalancerMS",
-                                  "readOnly": "True"
-                                }
-                              }
-                            },
-                            {
-                              "title": "VFMODULE-Vloadbalancerms..vpkg..module-1",
-                              "properties": {
-                                "type": {
-                                  "title": "Type",
-                                  "type": "string",
-                                  "default": "VFMODULE",
-                                  "readOnly": "True"
-                                },
-                                "resourceID": {
-                                  "title": "Resource ID",
-                                  "type": "string",
-                                  "default": "Vloadbalancerms..vpkg..module-1",
-                                  "readOnly": "True"
-                                },
-                                "modelInvariantId": {
-                                  "title": "Model Invariant Id (ModelInvariantUUID)",
-                                  "type": "string",
-                                  "default": "ca052563-eb92-4b5b-ad41-9111768ce043",
-                                  "readOnly": "True"
-                                },
-                                "modelVersionId": {
-                                  "title": "Model Version Id (ModelUUID)",
-                                  "type": "string",
-                                  "default": "1e725ccc-b823-4f67-82b9-4f4367070dbc",
-                                  "readOnly": "True"
-                                },
-                                "modelName": {
-                                  "title": "Model Name",
-                                  "type": "string",
-                                  "default": "Vloadbalancerms..vpkg..module-1",
-                                  "readOnly": "True"
-                                },
-                                "modelVersion": {
-                                  "title": "Model Version",
-                                  "type": "string",
-                                  "default": "1",
-                                  "readOnly": "True"
-                                },
-                                "modelCustomizationId": {
-                                  "title": "Customization ID",
-                                  "type": "string",
-                                  "default": "1bffdc31-a37d-4dee-b65c-dde623a76e52",
-                                  "readOnly": "True"
-                                }
-                              }
-                            },
-                            {
-                              "title": "VFMODULE-Vloadbalancerms..vdns..module-3",
-                              "properties": {
-                                "type": {
-                                  "title": "Type",
-                                  "type": "string",
-                                  "default": "VFMODULE",
-                                  "readOnly": "True"
-                                },
-                                "resourceID": {
-                                  "title": "Resource ID",
-                                  "type": "string",
-                                  "default": "Vloadbalancerms..vdns..module-3",
-                                  "readOnly": "True"
-                                },
-                                "modelInvariantId": {
-                                  "title": "Model Invariant Id (ModelInvariantUUID)",
-                                  "type": "string",
-                                  "default": "4c10ba9b-f88f-415e-9de3-5d33336047fa",
-                                  "readOnly": "True"
-                                },
-                                "modelVersionId": {
-                                  "title": "Model Version Id (ModelUUID)",
-                                  "type": "string",
-                                  "default": "4fa73b49-8a6c-493e-816b-eb401567b720",
-                                  "readOnly": "True"
-                                },
-                                "modelName": {
-                                  "title": "Model Name",
-                                  "type": "string",
-                                  "default": "Vloadbalancerms..vdns..module-3",
-                                  "readOnly": "True"
-                                },
-                                "modelVersion": {
-                                  "title": "Model Version",
-                                  "type": "string",
-                                  "default": "1",
-                                  "readOnly": "True"
-                                },
-                                "modelCustomizationId": {
-                                  "title": "Customization ID",
-                                  "type": "string",
-                                  "default": "bafcdab0-801d-4d81-9ead-f464640a38b1",
-                                  "readOnly": "True"
-                                }
-                              }
-                            },
-                            {
-                              "title": "VFMODULE-Vloadbalancerms..base_template..module-0",
-                              "properties": {
-                                "type": {
-                                  "title": "Type",
-                                  "type": "string",
-                                  "default": "VFMODULE",
-                                  "readOnly": "True"
-                                },
-                                "resourceID": {
-                                  "title": "Resource ID",
-                                  "type": "string",
-                                  "default": "Vloadbalancerms..base_template..module-0",
-                                  "readOnly": "True"
-                                },
-                                "modelInvariantId": {
-                                  "title": "Model Invariant Id (ModelInvariantUUID)",
-                                  "type": "string",
-                                  "default": "921f7c96-ebdd-42e6-81b9-1cfc0c9796f3",
-                                  "readOnly": "True"
-                                },
-                                "modelVersionId": {
-                                  "title": "Model Version Id (ModelUUID)",
-                                  "type": "string",
-                                  "default": "63734409-f745-4e4d-a38b-131638a0edce",
-                                  "readOnly": "True"
-                                },
-                                "modelName": {
-                                  "title": "Model Name",
-                                  "type": "string",
-                                  "default": "Vloadbalancerms..base_template..module-0",
-                                  "readOnly": "True"
-                                },
-                                "modelVersion": {
-                                  "title": "Model Version",
-                                  "type": "string",
-                                  "default": "1",
-                                  "readOnly": "True"
-                                },
-                                "modelCustomizationId": {
-                                  "title": "Customization ID",
-                                  "type": "string",
-                                  "default": "86baddea-c730-4fb8-9410-cd2e17fd7f27",
-                                  "readOnly": "True"
-                                }
-                              }
-                            },
-                            {
-                              "title": "VFMODULE-Vloadbalancerms..vlb..module-2",
-                              "properties": {
-                                "type": {
-                                  "title": "Type",
-                                  "type": "string",
-                                  "default": "VFMODULE",
-                                  "readOnly": "True"
-                                },
-                                "resourceID": {
-                                  "title": "Resource ID",
-                                  "type": "string",
-                                  "default": "Vloadbalancerms..vlb..module-2",
-                                  "readOnly": "True"
-                                },
-                                "modelInvariantId": {
-                                  "title": "Model Invariant Id (ModelInvariantUUID)",
-                                  "type": "string",
-                                  "default": "a772a1f4-0064-412c-833d-4749b15828dd",
-                                  "readOnly": "True"
-                                },
-                                "modelVersionId": {
-                                  "title": "Model Version Id (ModelUUID)",
-                                  "type": "string",
-                                  "default": "0f5c3f6a-650a-4303-abb6-fff3e573a07a",
-                                  "readOnly": "True"
-                                },
-                                "modelName": {
-                                  "title": "Model Name",
-                                  "type": "string",
-                                  "default": "Vloadbalancerms..vlb..module-2",
-                                  "readOnly": "True"
-                                },
-                                "modelVersion": {
-                                  "title": "Model Version",
-                                  "type": "string",
-                                  "default": "1",
-                                  "readOnly": "True"
-                                },
-                                "modelCustomizationId": {
-                                  "title": "Customization ID",
-                                  "type": "string",
-                                  "default": "96a78aad-4ffb-4ef0-9c4f-deb03bf1d806",
-                                  "readOnly": "True"
-                                }
-                              }
-                            }
-                          ]
-                        }
-                      }
-                    }
-                  }
-                }
-              },
-              "guard_policies": {
-                "type": "array",
-                "format": "tabs-top",
-                "title": "Associated Guard policies",
-                "items": {
-                  "headerTemplate": "{{self.policy-id}} - {{self.content.recipe}}",
-                  "anyOf": [
-                    {
-                      "title": "Guard MinMax",
-                      "type": "object",
-                      "properties": {
-                        "policy-id": {
-                          "type": "string",
-                          "default": "guard.minmax.new",
-                          "pattern": "^(guard.minmax\\..*)$"
-                        },
-                        "content": {
-                          "properties": {
-                            "actor": {
-                              "type": "string",
-                              "enum": [
-                                "APPC",
-                                "SO",
-                                "VFC",
-                                "SDNC",
-                                "SDNR"
-                              ]
-                            },
-                            "recipe": {
-                              "type": "string",
-                              "enum": [
-                                "Restart",
-                                "Rebuild",
-                                "Migrate",
-                                "Health-Check",
-                                "ModifyConfig",
-                                "VF Module Create",
-                                "VF Module Delete",
-                                "Reroute"
-                              ]
-                            },
-                            "targets": {
-                              "type": "string",
-                              "default": ".*"
-                            },
-                            "clname": {
-                              "type": "string",
-                              "template": "{{loopName}}",
-                              "watch": {
-                                "loopName": "operational_policy_item.configurationsJson.operational_policy.controlLoop.controlLoopName"
-                              }
-                            },
-                            "guardActiveStart": {
-                              "type": "string",
-                              "default": "00:00:00Z"
-                            },
-                            "guardActiveEnd": {
-                              "type": "string",
-                              "default": "10:00:00Z"
-                            },
-                            "min": {
-                              "type": "string",
-                              "default": "0"
-                            },
-                            "max": {
-                              "type": "string",
-                              "default": "1"
-                            }
-                          }
-                        }
-                      }
-                    },
-                    {
-                      "title": "Guard Frequency",
-                      "type": "object",
-                      "properties": {
-                        "policy-id": {
-                          "type": "string",
-                          "default": "guard.frequency.new",
-                          "pattern": "^(guard.frequency\\..*)$"
-                        },
-                        "content": {
-                          "properties": {
-                            "actor": {
-                              "type": "string",
-                              "enum": [
-                                "APPC",
-                                "SO",
-                                "VFC",
-                                "SDNC",
-                                "SDNR"
-                              ]
-                            },
-                            "recipe": {
-                              "type": "string",
-                              "enum": [
-                                "Restart",
-                                "Rebuild",
-                                "Migrate",
-                                "Health-Check",
-                                "ModifyConfig",
-                                "VF Module Create",
-                                "VF Module Delete",
-                                "Reroute"
-                              ]
-                            },
-                            "targets": {
-                              "type": "string",
-                              "default": ".*"
-                            },
-                            "clname": {
-                              "type": "string",
-                              "template": "{{loopName}}",
-                              "watch": {
-                                "loopName": "operational_policy_item.configurationsJson.operational_policy.controlLoop.controlLoopName"
-                              }
-                            },
-                            "guardActiveStart": {
-                              "type": "string",
-                              "default": "00:00:00Z"
-                            },
-                            "guardActiveEnd": {
-                              "type": "string",
-                              "default": "10:00:00Z"
-                            },
-                            "limit": {
-                              "type": "string"
-                            },
-                            "timeWindow": {
-                              "type": "string"
-                            },
-                            "timeUnits": {
-                              "type": "string",
-                              "enum": [
-                                "minute",
-                                "hour",
-                                "day",
-                                "week",
-                                "month",
-                                "year"
-                              ]
-                            }
-                          }
-                        }
-                      }
-                    }
-                  ]
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-  },
   "globalPropertiesJson": {
     "testname": "testvalue"
   },