Commit includes ControlLoopPolicy API and bugfixes
[policy/engine.git] / POLICY-SDK-APP / src / main / java / org / openecomp / policy / admin / PolicyRestController.java
index 2a1129c..4f0710b 100644 (file)
@@ -28,6 +28,7 @@ import java.io.PrintWriter;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
 import java.util.Base64;
 import java.util.List;
 
@@ -92,10 +93,29 @@ public class PolicyRestController extends RestrictedBaseController{
                JsonNode root = mapper.readTree(request.getReader());
                
                PolicyRestAdapter policyData = (PolicyRestAdapter)mapper.readValue(root.get("policyData").get("policy").toString(), PolicyRestAdapter.class);
-               policyData.setDomainDir(root.get("policyData").get("model").get("name").toString().replace("\"", ""));
+       
                if(root.get("policyData").get("model").get("type").toString().replace("\"", "").equals("file")){
                        policyData.isEditPolicy = true;
                }
+               if(root.get("policyData").get("model").get("path").size() != 0){
+                       String dirName = "";
+                       for(int i = 0; i < root.get("policyData").get("model").get("path").size(); i++){
+                               dirName = dirName.replace("\"", "") + root.get("policyData").get("model").get("path").get(i).toString().replace("\"", "") + File.separator;
+                       }
+                       if(policyData.isEditPolicy){
+                               policyData.setDomainDir(dirName.substring(0, dirName.lastIndexOf(File.separator)));
+                       }else{
+                               policyData.setDomainDir(dirName + root.get("policyData").get("model").get("name").toString().replace("\"", ""));
+                       }
+               }else{
+                       String domain = root.get("policyData").get("model").get("name").toString();
+                       if(domain.contains("/")){
+                               domain = domain.substring(0, domain.lastIndexOf("/")).replace("/", File.separator);
+                       }
+                       domain = domain.replace("\"", "");
+                       policyData.setDomainDir(domain);
+               }
+               
                if(policyData.getConfigPolicyType() != null){
                        if(policyData.getConfigPolicyType().equalsIgnoreCase("ClosedLoop_Fault")){
                                CreateClosedLoopFaultController faultController = new CreateClosedLoopFaultController();
@@ -111,19 +131,6 @@ public class PolicyRestController extends RestrictedBaseController{
                
                policyData.setUserId(userId);
                
-               if(root.get("policyData").get("model").get("path").size() != 0){
-                       String dirName = "";
-                       for(int i = 0; i < root.get("policyData").get("model").get("path").size(); i++){
-                               dirName = dirName.replace("\"", "") + root.get("policyData").get("model").get("path").get(i).toString().replace("\"", "") + File.separator;
-                       }
-                       if(policyData.isEditPolicy){
-                               policyData.setDomainDir(dirName.substring(0, dirName.lastIndexOf(File.separator)));
-                       }else{
-                               policyData.setDomainDir(dirName + root.get("policyData").get("model").get("name").toString().replace("\"", ""));
-                       }
-               }else{
-                       policyData.setDomainDir(root.get("policyData").get("model").get("name").toString().replace("\"", ""));
-               }
                String result;
                String body = PolicyUtils.objectToJsonString(policyData);
                String uri = request.getRequestURI();
@@ -239,7 +246,7 @@ public class PolicyRestController extends RestrictedBaseController{
                                String newFile = file.toString();
                                uri = uri +"&dictionaryName="+newFile;
                        } catch (Exception e2) {
-                               e2.printStackTrace();
+                               LOGGER.error("Exception Occured while calling PAP with import dictionary request"+e2);
                        }
                }
 
@@ -253,7 +260,8 @@ public class PolicyRestController extends RestrictedBaseController{
                        connection.setDoOutput(true);
                        connection.setDoInput(true);
 
-                       if(!uri.contains("searchPolicy")){
+                       if(!uri.contains("searchPolicy?action=delete&")){
+                               
                                if(!(uri.endsWith("set_BRMSParamData") || uri.contains("import_dictionary"))){
                                        connection.setRequestProperty("Content-Type","application/json");
                                        ObjectMapper mapper = new ObjectMapper();
@@ -262,7 +270,7 @@ public class PolicyRestController extends RestrictedBaseController{
                                        try {
                                                root = mapper.readTree(request.getReader());
                                        }catch (Exception e1) {
-                                               e1.printStackTrace();
+                                               LOGGER.error("Exception Occured while calling PAP"+e1);
                                        }
 
                                        ObjectMapper mapper1 = new ObjectMapper();
@@ -273,7 +281,7 @@ public class PolicyRestController extends RestrictedBaseController{
 
                                        Object content =  new ByteArrayInputStream(json.getBytes());
 
-                                       if (content != null && (content instanceof InputStream)) {
+                                       if (content instanceof InputStream) {
                                                // send current configuration
                                                try (OutputStream os = connection.getOutputStream()) {
                                                        int count = IOUtils.copy((InputStream) content, os);
@@ -292,7 +300,9 @@ public class PolicyRestController extends RestrictedBaseController{
                                                boundary = "===" + System.currentTimeMillis() + "===";
                                                connection.setRequestProperty("Content-Type","multipart/form-data; boundary=" + boundary);
                                                try (OutputStream os = connection.getOutputStream()) {
-                                                       IOUtils.copy((InputStream) item.getInputStream(), os);
+                                                       if(item != null){
+                                                               IOUtils.copy((InputStream) item.getInputStream(), os);
+                                                       }
                                                }
                                        }
                                }
@@ -314,7 +324,7 @@ public class PolicyRestController extends RestrictedBaseController{
                        }
 
                } catch (Exception e) {
-                       e.printStackTrace();
+                       LOGGER.error("Exception Occured"+e);
                }finally{
                        if(file != null){
                                if(file.exists()){
@@ -371,6 +381,53 @@ public class PolicyRestController extends RestrictedBaseController{
                return null;
        }
        
+       @RequestMapping(value={"/searchDictionary"}, method={RequestMethod.POST})
+       public ModelAndView searchDictionaryController(HttpServletRequest request, HttpServletResponse response) throws Exception{
+               Object resultList = null;
+               String uri = request.getRequestURI();
+               String body = callPAP(request, response, "POST", uri.replaceFirst("/", "").trim());
+               if(body.contains("CouldNotConnectException")){
+                       List<String> data = new ArrayList<>();
+                       data.add("Elastic Search Server is down");
+                       resultList = data;
+               }else{
+                       JSONObject json = new JSONObject(body);
+                       resultList = json.get("policyresult");
+               }
+               
+               response.setCharacterEncoding("UTF-8");
+               response.setContentType("application / json");
+               PrintWriter out = response.getWriter();
+               JSONObject j = new JSONObject("{result: " + resultList + "}");
+               out.write(j.toString());
+               return null;
+       }
+       
+       @RequestMapping(value={"/searchPolicy"}, method={RequestMethod.POST})
+       public ModelAndView searchPolicy(HttpServletRequest request, HttpServletResponse response) throws Exception{
+               Object resultList = null;
+               String uri = request.getRequestURI()+"?action=search";
+               String body = callPAP(request, response, "POST", uri.replaceFirst("/", "").trim());
+
+               JSONObject json = new JSONObject(body);
+               try{
+                       resultList = json.get("policyresult");
+               }catch(Exception e){
+                       List<String> data = new ArrayList<>();
+                       data.add("Elastic Search Server is down");
+                       resultList = data;
+               }
+
+               response.setCharacterEncoding("UTF-8");
+               response.setContentType("application / json");
+               request.setCharacterEncoding("UTF-8");
+
+               PrintWriter out = response.getWriter();
+               JSONObject j = new JSONObject("{result: " + resultList + "}");
+               out.write(j.toString());
+               return null;
+       }
+       
        public void deleteElasticData(String fileName){
                String uri = "searchPolicy?action=delete&policyName='"+fileName+"'";
                callPAP(null, null, "POST", uri.trim());