aboutsummaryrefslogtreecommitdiffstats
path: root/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java
diff options
context:
space:
mode:
Diffstat (limited to 'ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java')
-rw-r--r--ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java718
1 files changed, 718 insertions, 0 deletions
diff --git a/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java
new file mode 100644
index 000000000..c3329db14
--- /dev/null
+++ b/ECOMP-PAP-REST/src/main/java/org/openecomp/policy/pap/xacml/rest/controller/MicroServiceDictionaryController.java
@@ -0,0 +1,718 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP-PAP-REST
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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=========================================================
+ */
+
+package org.openecomp.policy.pap.xacml.rest.controller;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.compress.utils.IOUtils;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.json.JSONObject;
+import org.openecomp.policy.pap.xacml.rest.util.JsonMessage;
+import org.openecomp.policy.rest.dao.DCAEUUIDDao;
+import org.openecomp.policy.rest.dao.MicroServiceConfigNameDao;
+import org.openecomp.policy.rest.dao.MicroServiceLocationDao;
+import org.openecomp.policy.rest.dao.MicroServiceModelsDao;
+import org.openecomp.policy.rest.dao.UserInfoDao;
+import org.openecomp.policy.rest.jpa.DCAEuuid;
+import org.openecomp.policy.rest.jpa.MicroServiceConfigName;
+import org.openecomp.policy.rest.jpa.MicroServiceLocation;
+import org.openecomp.policy.rest.jpa.MicroServiceModels;
+import org.openecomp.policy.rest.jpa.UserInfo;
+import org.openecomp.policy.rest.util.MSAttributeObject;
+import org.openecomp.policy.rest.util.MSModelUtitils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@Controller
+public class MicroServiceDictionaryController {
+ private static final Log logger = LogFactory.getLog(MicroServiceDictionaryController.class);
+
+ @Autowired
+ MicroServiceConfigNameDao microServiceConfigNameDao;
+
+ @Autowired
+ MicroServiceLocationDao microServiceLocationDao;
+
+ @Autowired
+ MicroServiceModelsDao microServiceModelsDao;
+
+ @Autowired
+ DCAEUUIDDao dcaeUUIDDao;
+
+ @Autowired
+ UserInfoDao userInfoDao;
+
+
+ private String newFile;
+ private String directory;
+ private List<String> dirDependencyList = new ArrayList<String>();
+ private HashMap<String,MSAttributeObject > classMap = new HashMap<String,MSAttributeObject>();
+ MSModelUtitils utils = new MSModelUtitils();
+ private MicroServiceModels newModel;
+
+ public UserInfo getUserInfo(String loginId){
+ UserInfo name = userInfoDao.getUserInfoByLoginId(loginId);
+ return name;
+ }
+
+ @RequestMapping(value={"/get_DCAEUUIDDataByName"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
+ public void getDCAEUUIDDictionaryByNameEntityData(HttpServletRequest request, HttpServletResponse response){
+ try{
+ Map<String, Object> model = new HashMap<String, Object>();
+ ObjectMapper mapper = new ObjectMapper();
+ model.put("dcaeUUIDDictionaryDatas", mapper.writeValueAsString(dcaeUUIDDao.getDCAEuuidDataByName()));
+ JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
+ JSONObject j = new JSONObject(msg);
+ response.getWriter().write(j.toString());
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ @RequestMapping(value={"/get_DCAEUUIDData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
+ public void getDCAEUUIDDictionaryEntityData(HttpServletRequest request, HttpServletResponse response){
+ try{
+ Map<String, Object> model = new HashMap<String, Object>();
+ ObjectMapper mapper = new ObjectMapper();
+ model.put("dcaeUUIDDictionaryDatas", mapper.writeValueAsString(dcaeUUIDDao.getDCAEuuidData()));
+ JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
+ JSONObject j = new JSONObject(msg);
+ response.getWriter().write(j.toString());
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ @RequestMapping(value={"/ms_dictionary/save_dcaeUUID.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+ public ModelAndView saveDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws Exception{
+ try {
+ boolean duplicateflag = false;
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ JsonNode root = mapper.readTree(request.getReader());
+ DCAEuuid dCAEuuid = (DCAEuuid)mapper.readValue(root.get("dcaeUUIDDictionaryData").toString(), DCAEuuid.class);
+ if(dCAEuuid.getId() == 0){
+ CheckDictionaryDuplicateEntries entry = new CheckDictionaryDuplicateEntries();
+ List<Object> duplicateData = entry.CheckDuplicateEntry(dCAEuuid.getName(), "name", DCAEuuid.class);
+ if(!duplicateData.isEmpty()){
+ duplicateflag = true;
+ }else{
+ dcaeUUIDDao.Save(dCAEuuid);
+ }
+ }else{
+ dcaeUUIDDao.update(dCAEuuid);
+ }
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("application / json");
+ request.setCharacterEncoding("UTF-8");
+
+ PrintWriter out = response.getWriter();
+ String responseString = "";
+ if(duplicateflag){
+ responseString = "Duplicate";
+ }else{
+ responseString = mapper.writeValueAsString(this.dcaeUUIDDao.getDCAEuuidData());
+ }
+ JSONObject j = new JSONObject("{dcaeUUIDDictionaryDatas: " + responseString + "}");
+
+ out.write(j.toString());
+
+ return null;
+ }
+ catch (Exception e){
+ response.setCharacterEncoding("UTF-8");
+ request.setCharacterEncoding("UTF-8");
+ PrintWriter out = response.getWriter();
+ out.write(e.getMessage());
+ }
+ return null;
+ }
+
+ @RequestMapping(value={"/ms_dictionary/remove_dcaeuuid.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+ public ModelAndView removeDCAEUUIDDictionary(HttpServletRequest request, HttpServletResponse response) throws Exception {
+ try{
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ JsonNode root = mapper.readTree(request.getReader());
+ DCAEuuid dCAEuuid = (DCAEuuid)mapper.readValue(root.get("data").toString(), DCAEuuid.class);
+ dcaeUUIDDao.delete(dCAEuuid);
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("application / json");
+ request.setCharacterEncoding("UTF-8");
+
+ PrintWriter out = response.getWriter();
+
+ String responseString = mapper.writeValueAsString(this.dcaeUUIDDao.getDCAEuuidData());
+ JSONObject j = new JSONObject("{dcaeUUIDDictionaryDatas: " + responseString + "}");
+ out.write(j.toString());
+
+ return null;
+ }
+ catch (Exception e){
+ System.out.println(e);
+ response.setCharacterEncoding("UTF-8");
+ request.setCharacterEncoding("UTF-8");
+ PrintWriter out = response.getWriter();
+ out.write(e.getMessage());
+ }
+ return null;
+ }
+
+
+ @RequestMapping(value={"/get_MicroServiceConfigNameDataByName"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
+ public void getMicroServiceConfigNameByNameDictionaryEntityData(HttpServletRequest request, HttpServletResponse response){
+ try{
+ Map<String, Object> model = new HashMap<String, Object>();
+ ObjectMapper mapper = new ObjectMapper();
+ model.put("microServiceCongigNameDictionaryDatas", mapper.writeValueAsString(microServiceConfigNameDao.getMSConfigDataByName()));
+ JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
+ JSONObject j = new JSONObject(msg);
+ response.getWriter().write(j.toString());
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+
+
+ @RequestMapping(value={"/get_MicroServiceConfigNameData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
+ public void getMicroServiceConfigNameDictionaryEntityData(HttpServletRequest request, HttpServletResponse response){
+ try{
+ Map<String, Object> model = new HashMap<String, Object>();
+ ObjectMapper mapper = new ObjectMapper();
+ model.put("microServiceCongigNameDictionaryDatas", mapper.writeValueAsString(microServiceConfigNameDao.getMicroServiceConfigNameData()));
+ JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
+ JSONObject j = new JSONObject(msg);
+ response.getWriter().write(j.toString());
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ @RequestMapping(value={"/ms_dictionary/save_configName.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+ public ModelAndView saveMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) throws Exception{
+ try {
+ boolean duplicateflag = false;
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ JsonNode root = mapper.readTree(request.getReader());
+ MicroServiceConfigName microServiceConfigName = (MicroServiceConfigName)mapper.readValue(root.get("microServiceCongigNameDictionaryData").toString(), MicroServiceConfigName.class);
+ if(microServiceConfigName.getId() == 0){
+ CheckDictionaryDuplicateEntries entry = new CheckDictionaryDuplicateEntries();
+ List<Object> duplicateData = entry.CheckDuplicateEntry(microServiceConfigName.getName(), "name", MicroServiceConfigName.class);
+ if(!duplicateData.isEmpty()){
+ duplicateflag = true;
+ }else{
+ microServiceConfigNameDao.Save(microServiceConfigName);
+ }
+ }else{
+ microServiceConfigNameDao.update(microServiceConfigName);
+ }
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("application / json");
+ request.setCharacterEncoding("UTF-8");
+
+ PrintWriter out = response.getWriter();
+ String responseString = "";
+ if(duplicateflag){
+ responseString = "Duplicate";
+ }else{
+ responseString = mapper.writeValueAsString(this.microServiceConfigNameDao.getMicroServiceConfigNameData());
+ }
+ JSONObject j = new JSONObject("{microServiceCongigNameDictionaryDatas: " + responseString + "}");
+
+ out.write(j.toString());
+
+ return null;
+ }
+ catch (Exception e){
+ response.setCharacterEncoding("UTF-8");
+ request.setCharacterEncoding("UTF-8");
+ PrintWriter out = response.getWriter();
+ out.write(e.getMessage());
+ }
+ return null;
+ }
+
+ @RequestMapping(value={"/ms_dictionary/remove_msConfigName.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+ public ModelAndView removeMicroServiceConfigNameDictionary(HttpServletRequest request, HttpServletResponse response) throws Exception {
+ try{
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ JsonNode root = mapper.readTree(request.getReader());
+ MicroServiceConfigName microServiceConfigName = (MicroServiceConfigName)mapper.readValue(root.get("data").toString(), MicroServiceConfigName.class);
+ microServiceConfigNameDao.delete(microServiceConfigName);
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("application / json");
+ request.setCharacterEncoding("UTF-8");
+
+ PrintWriter out = response.getWriter();
+
+ String responseString = mapper.writeValueAsString(this.microServiceConfigNameDao.getMicroServiceConfigNameData());
+ JSONObject j = new JSONObject("{microServiceCongigNameDictionaryDatas: " + responseString + "}");
+ out.write(j.toString());
+
+ return null;
+ }
+ catch (Exception e){
+ System.out.println(e);
+ response.setCharacterEncoding("UTF-8");
+ request.setCharacterEncoding("UTF-8");
+ PrintWriter out = response.getWriter();
+ out.write(e.getMessage());
+ }
+ return null;
+ }
+
+ @RequestMapping(value={"/get_MicroServiceLocationDataByName"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
+ public void getMicroServiceLocationByNameDictionaryEntityData(HttpServletRequest request, HttpServletResponse response){
+ try{
+ Map<String, Object> model = new HashMap<String, Object>();
+ ObjectMapper mapper = new ObjectMapper();
+ model.put("microServiceLocationDictionaryDatas", mapper.writeValueAsString(microServiceLocationDao.getMSLocationDataByName()));
+ JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
+ JSONObject j = new JSONObject(msg);
+ response.getWriter().write(j.toString());
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ @RequestMapping(value={"/get_MicroServiceLocationData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
+ public void getMicroServiceLocationDictionaryEntityData(HttpServletRequest request, HttpServletResponse response){
+ try{
+ Map<String, Object> model = new HashMap<String, Object>();
+ ObjectMapper mapper = new ObjectMapper();
+ model.put("microServiceLocationDictionaryDatas", mapper.writeValueAsString(microServiceLocationDao.getMicroServiceLocationData()));
+ JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
+ JSONObject j = new JSONObject(msg);
+ response.getWriter().write(j.toString());
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ @RequestMapping(value={"/ms_dictionary/save_location.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+ public ModelAndView saveMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response) throws Exception{
+ try {
+ boolean duplicateflag = false;
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ JsonNode root = mapper.readTree(request.getReader());
+ MicroServiceLocation microServiceLocation = (MicroServiceLocation)mapper.readValue(root.get("microServiceLocationDictionaryData").toString(), MicroServiceLocation.class);
+ if(microServiceLocation.getId() == 0){
+ CheckDictionaryDuplicateEntries entry = new CheckDictionaryDuplicateEntries();
+ List<Object> duplicateData = entry.CheckDuplicateEntry(microServiceLocation.getName(), "name", MicroServiceLocation.class);
+ if(!duplicateData.isEmpty()){
+ duplicateflag = true;
+ }else{
+ microServiceLocationDao.Save(microServiceLocation);
+ }
+ }else{
+ microServiceLocationDao.update(microServiceLocation);
+ }
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("application / json");
+ request.setCharacterEncoding("UTF-8");
+
+ PrintWriter out = response.getWriter();
+ String responseString = "";
+ if(duplicateflag){
+ responseString = "Duplicate";
+ }else{
+ responseString = mapper.writeValueAsString(this.microServiceLocationDao.getMicroServiceLocationData());
+ }
+ JSONObject j = new JSONObject("{microServiceLocationDictionaryDatas: " + responseString + "}");
+
+ out.write(j.toString());
+
+ return null;
+ }
+ catch (Exception e){
+ response.setCharacterEncoding("UTF-8");
+ request.setCharacterEncoding("UTF-8");
+ PrintWriter out = response.getWriter();
+ out.write(e.getMessage());
+ }
+ return null;
+ }
+
+ @RequestMapping(value={"/ms_dictionary/remove_msLocation.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+ public ModelAndView removeMicroServiceLocationDictionary(HttpServletRequest request, HttpServletResponse response) throws Exception {
+ try{
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ JsonNode root = mapper.readTree(request.getReader());
+ MicroServiceLocation microServiceLocation = (MicroServiceLocation)mapper.readValue(root.get("data").toString(), MicroServiceLocation.class);
+ microServiceLocationDao.delete(microServiceLocation);
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("application / json");
+ request.setCharacterEncoding("UTF-8");
+
+ PrintWriter out = response.getWriter();
+
+ String responseString = mapper.writeValueAsString(this.microServiceLocationDao.getMicroServiceLocationData());
+ JSONObject j = new JSONObject("{microServiceLocationDictionaryDatas: " + responseString + "}");
+ out.write(j.toString());
+
+ return null;
+ }
+ catch (Exception e){
+ System.out.println(e);
+ response.setCharacterEncoding("UTF-8");
+ request.setCharacterEncoding("UTF-8");
+ PrintWriter out = response.getWriter();
+ out.write(e.getMessage());
+ }
+ return null;
+ }
+
+ @RequestMapping(value={"/get_MicroServiceModelsDataByName"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
+ public void getMicroServiceModelsDictionaryByNameEntityData(HttpServletRequest request, HttpServletResponse response){
+ try{
+ Map<String, Object> model = new HashMap<String, Object>();
+ ObjectMapper mapper = new ObjectMapper();
+ model.put("microServiceModelsDictionaryDatas", mapper.writeValueAsString(microServiceModelsDao.getMSModelsDataByName()));
+ JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
+ JSONObject j = new JSONObject(msg);
+ response.getWriter().write(j.toString());
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ @RequestMapping(value={"/get_MicroServiceModelsData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
+ public void getMicroServiceModelsDictionaryEntityData(HttpServletRequest request, HttpServletResponse response){
+ try{
+ Map<String, Object> model = new HashMap<String, Object>();
+ ObjectMapper mapper = new ObjectMapper();
+ model.put("microServiceModelsDictionaryDatas", mapper.writeValueAsString(microServiceModelsDao.getMicroServiceModelsData()));
+ JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
+ JSONObject j = new JSONObject(msg);
+ response.getWriter().write(j.toString());
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ @RequestMapping(value={"/ms_dictionary/save_model.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+ public ModelAndView saveMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws Exception{
+ try {
+ boolean duplicateflag = false;
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ JsonNode root = mapper.readTree(request.getReader());
+ MicroServiceModels microServiceModels = (MicroServiceModels)mapper.readValue(root.get("microServiceModelsDictionaryData").toString(), MicroServiceModels.class);
+ String userId = root.get("loginId").textValue();
+ microServiceModels.setAttributes(this.newModel.getAttributes());
+ microServiceModels.setRef_attributes(this.newModel.getRef_attributes());
+ microServiceModels.setDependency(this.newModel.getDependency());
+ microServiceModels.setModelName(this.newModel.getModelName());
+ microServiceModels.setSub_attributes(this.newModel.getSub_attributes());
+ microServiceModels.setVersion(this.newModel.getVersion());
+ if(microServiceModels.getId() == 0){
+ CheckDictionaryDuplicateEntries entry = new CheckDictionaryDuplicateEntries();
+ List<Object> duplicateData = entry.CheckDuplicateEntry(microServiceModels.getModelName(), "modelName", MicroServiceModels.class);
+ if(!duplicateData.isEmpty()){
+ duplicateflag = true;
+ }else{
+ microServiceModels.setUserCreatedBy(this.getUserInfo(userId));
+ microServiceModelsDao.Save(microServiceModels);
+ }
+ }else{
+ microServiceModelsDao.update(microServiceModels);
+ }
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("application / json");
+ request.setCharacterEncoding("UTF-8");
+
+ PrintWriter out = response.getWriter();
+ String responseString = "";
+ if(duplicateflag){
+ responseString = "Duplicate";
+ }else{
+ responseString = mapper.writeValueAsString(this.microServiceModelsDao.getMicroServiceModelsData());
+ }
+ JSONObject j = new JSONObject("{microServiceModelsDictionaryDatas: " + responseString + "}");
+
+ out.write(j.toString());
+
+ return null;
+ }
+ catch (Exception e){
+ response.setCharacterEncoding("UTF-8");
+ request.setCharacterEncoding("UTF-8");
+ PrintWriter out = response.getWriter();
+ out.write(e.getMessage());
+ }
+ return null;
+ }
+
+ @RequestMapping(value={"/ms_dictionary/remove_msModel.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+ public ModelAndView removeMicroServiceModelsDictionary(HttpServletRequest request, HttpServletResponse response) throws Exception {
+ try{
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ JsonNode root = mapper.readTree(request.getReader());
+ MicroServiceModels microServiceModels = (MicroServiceModels)mapper.readValue(root.get("data").toString(), MicroServiceModels.class);
+ microServiceModelsDao.delete(microServiceModels);
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("application / json");
+ request.setCharacterEncoding("UTF-8");
+
+ PrintWriter out = response.getWriter();
+
+ String responseString = mapper.writeValueAsString(this.microServiceModelsDao.getMicroServiceModelsData());
+ JSONObject j = new JSONObject("{microServiceModelsDictionaryDatas: " + responseString + "}");
+ out.write(j.toString());
+
+ return null;
+ }
+ catch (Exception e){
+ System.out.println(e);
+ response.setCharacterEncoding("UTF-8");
+ request.setCharacterEncoding("UTF-8");
+ PrintWriter out = response.getWriter();
+ out.write(e.getMessage());
+ }
+ return null;
+ }
+
+ @RequestMapping(value={"/ms_dictionary/set_MSModelData.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+ public void SetRuleData(HttpServletRequest request, HttpServletResponse response) throws Exception{
+ List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
+ for (FileItem item : items) {
+ if(item.getName().endsWith(".zip")){
+ this.newModel = new MicroServiceModels();
+ try{
+ File file = new File(item.getName());
+ OutputStream outputStream = new FileOutputStream(file);
+ IOUtils.copy(item.getInputStream(), outputStream);
+ outputStream.close();
+ this.newFile = file.toString();
+ this.newModel.setModelName(this.newFile.toString().split("-v")[0]);
+ if (this.newFile.toString().contains("-v")){
+ this.newModel.setVersion(this.newFile.toString().split("-v")[1].replace(".zip", ""));
+ }
+ }catch(Exception e){
+ logger.error("Upload error : " + e);
+ }
+ }
+ }
+ extractFolder(this.newFile);
+ List<File> fileList = listModelFiles(this.directory);
+
+ File folder = new File(this.directory);
+ File[] test = folder.listFiles();
+
+ //Process Main Model file first
+ String ignoreFile = null;
+ for (File file : test) {
+ if(!file.isDirectory() && file.getName().endsWith(".xmi")){
+ retreiveDependency(file.toString(), true);
+ ignoreFile = file.toString();
+ }
+ }
+
+ for(File tempFile: fileList){
+ if (!tempFile.toString().contains(ignoreFile)){
+ retreiveDependency(tempFile.toString(), false);
+ }
+ }
+
+ addValuesToNewModel();
+
+ File deleteFile = new File(this.newFile);
+ deleteFile.delete();
+ }
+
+ private void addValuesToNewModel() {
+ //Loop through the classmap and pull out the required info for the new file.
+ MSAttributeObject mainClass = null;
+ ArrayList<String> dependency = null;
+ String subAttribute = null;
+
+ mainClass = classMap.get(this.newModel.getModelName());
+
+ if (mainClass !=null){
+ String dependTemp = StringUtils.replaceEach(mainClass.getDependency(), new String[]{"[", "]", " "}, new String[]{"", "", ""});
+ dependency = new ArrayList<String>(Arrays.asList(dependTemp.split(",")));
+ dependency = getFullDependencyList(dependency);
+ for (String element : dependency){
+ MSAttributeObject temp = new MSAttributeObject();
+ temp = classMap.get(element);
+ if (temp!=null){
+ mainClass.addAllRefAttribute(temp.getRefAttribute());
+ mainClass.addAllAttribute(temp.getAttribute());
+ }
+ }
+ subAttribute = utils.createSubAttributes(dependency, classMap, this.newModel.getModelName());
+ }else{
+ subAttribute = "{}";
+ this.newModel.setDependency("");
+ }
+
+ if (mainClass.getDependency()==null){
+ mainClass.setDependency("");
+ }
+
+ this.newModel.setDependency(mainClass.getDependency());
+ this.newModel.setSub_attributes(subAttribute.toString());
+ this.newModel.setAttributes(mainClass.getAttribute().toString().replace("{", "").replace("}", ""));
+ this.newModel.setRef_attributes(mainClass.getRefAttribute().toString().replace("{", "").replace("}", ""));
+
+ }
+
+ private ArrayList<String> getFullDependencyList(ArrayList<String> dependency) {
+ ArrayList<String> returnList = new ArrayList<String>();
+ ArrayList<String> workingList = new ArrayList<String>();
+ returnList.addAll(dependency);
+ for (String element : dependency ){
+ if (classMap.containsKey(element)){
+ MSAttributeObject value = classMap.get(element);
+ String rawValue = StringUtils.replaceEach(value.getDependency(), new String[]{"[", "]"}, new String[]{"", ""});
+ workingList = new ArrayList<String>(Arrays.asList(rawValue.split(",")));
+ for(String depend : workingList){
+ if (!returnList.contains(depend) && !depend.isEmpty()){
+ returnList.add(depend.trim());
+ //getFullDepedency(workingList)
+ }
+ }
+ }
+ }
+
+ return returnList;
+ }
+
+
+ /*
+ * Unzip file and store in the model directory for processing
+ */
+ @SuppressWarnings("rawtypes")
+ private void extractFolder(String zipFile ) {
+ int BUFFER = 2048;
+ File file = new File(zipFile);
+
+ ZipFile zip;
+ try {
+ zip = new ZipFile(file);
+ String newPath = "model" + File.separator + zipFile.substring(0, zipFile.length() - 4);
+ this.directory = "model" + File.separator + zipFile.substring(0, zipFile.length() - 4);
+ new File(newPath).mkdir();
+ Enumeration zipFileEntries = zip.entries();
+
+ // Process each entry
+ while (zipFileEntries.hasMoreElements()){
+ // grab a zip file entry
+ ZipEntry entry = (ZipEntry) zipFileEntries.nextElement();
+ String currentEntry = entry.getName();
+ File destFile = new File("model" + File.separator + currentEntry);
+ File destinationParent = destFile.getParentFile();
+
+ destinationParent.mkdirs();
+
+ if (!entry.isDirectory()){
+ BufferedInputStream is = new BufferedInputStream(zip.getInputStream(entry));
+ int currentByte;
+ byte data[] = new byte[BUFFER];
+ FileOutputStream fos = new FileOutputStream(destFile);
+ BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER);
+ while ((currentByte = is.read(data, 0, BUFFER)) != -1) {
+ dest.write(data, 0, currentByte);
+ }
+ dest.flush();
+ dest.close();
+ is.close();
+ }
+
+ if (currentEntry.endsWith(".zip")){
+ extractFolder(destFile.getAbsolutePath());
+ }
+ }
+ } catch (IOException e) {
+ logger.error("Failed to unzip model file " + zipFile);
+ }
+ }
+
+ private void retreiveDependency(String workingFile, Boolean modelClass) {
+
+ MSModelUtitils utils = new MSModelUtitils();
+ HashMap<String, MSAttributeObject> tempMap = new HashMap<String, MSAttributeObject>();
+
+ tempMap = utils.processEpackage(workingFile);
+
+ classMap.putAll(tempMap);
+ System.out.println(tempMap);
+
+ return; }
+
+ private List<File> listModelFiles(String directoryName) {
+ File directory = new File(directoryName);
+ List<File> resultList = new ArrayList<File>();
+ File[] fList = directory.listFiles();
+ for (File file : fList) {
+ if (file.isFile()) {
+ resultList.add(file);
+ } else if (file.isDirectory()) {
+ dirDependencyList.add(file.getName());
+ resultList.addAll(listModelFiles(file.getAbsolutePath()));
+ }
+ }
+ return resultList;
+ }
+}