X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ONAP-PAP-REST%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fpap%2Fxacml%2Frest%2Fservice%2FImportService.java;fp=ONAP-PAP-REST%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fpap%2Fxacml%2Frest%2Fservice%2FImportService.java;h=5e4b4ee7d7fcbab23f04ce1d052e3878b15b2208;hb=4068da123ee33b532b4b52f15545c76a978f977e;hp=7382a77a18f25fe2654898d8161b6206c42a717a;hpb=f0fec2a861ea0a92b27b40882ea38f9422cde0c6;p=policy%2Fengine.git diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/ImportService.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/ImportService.java index 7382a77a1..5e4b4ee7d 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/ImportService.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/ImportService.java @@ -41,187 +41,187 @@ import org.onap.policy.pap.xacml.rest.components.CreateNewMicroServiceModel; import org.onap.policy.pap.xacml.rest.components.CreateNewOptimizationModel; public class ImportService { - private static final Logger logger = FlexLogger.getLogger(ImportService.class); - private static String errorMessage = "Error in reading in file from API call"; - private static String errorMsg = "error"; - private static String operation = "operation"; - private static String importHeader = "import"; - private static String service = "service"; - private static String extractDir = "ExtractDir"; - private static String successMessage = "success"; - private static String invalidServiceName = "Invalid ServiceName"; - private static final String REGEX = "[0-9a-zA-Z._ ]*"; - private static final String MISSING = "missing"; - - public void doImportMicroServicePut(HttpServletRequest request, HttpServletResponse response) { - String importServiceCreation = request.getParameter("importService"); - String fileName = request.getParameter("fileName"); - String version = request.getParameter("version"); - String serviceName = request.getParameter("serviceName"); - - if(serviceName == null || serviceName.isEmpty() || !serviceName.matches(REGEX)){ - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader(errorMsg, MISSING); - response.addHeader(operation, importHeader); - response.addHeader(service, invalidServiceName); - return; - } + private static final Logger logger = FlexLogger.getLogger(ImportService.class); + private static String errorMessage = "Error in reading in file from API call"; + private static String errorMsg = "error"; + private static String operation = "operation"; + private static String importHeader = "import"; + private static String service = "service"; + private static String extractDir = "ExtractDir"; + private static String successMessage = "success"; + private static String invalidServiceName = "Invalid ServiceName"; + private static final String REGEX = "[0-9a-zA-Z._ ]*"; + private static final String MISSING = "missing"; - String description = request.getParameter("description"); - Map successMap = new HashMap<>(); - if(("BRMSPARAM").equals(importServiceCreation)){ - StringBuilder builder = new StringBuilder(); - int ch; - try { - while((ch = request.getInputStream().read()) != -1){ - builder.append((char)ch); - } - } catch (IOException e) { - logger.error(e); - PolicyLogger.error(errorMessage); - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader(errorMsg, MISSING); - response.addHeader(operation, importHeader); - response.addHeader(service, serviceName); - } - CreateBRMSRuleTemplate brmsRuleTemplate = new CreateBRMSRuleTemplate(); - successMap = brmsRuleTemplate.addRule(builder.toString(), serviceName, description, "API"); - } - else if(("MICROSERVICE").equals(importServiceCreation)){ - CreateNewMicroServiceModel newMS = null; - String randomID = UUID.randomUUID().toString(); - String type = ".xmi"; - if ( fileName != null) { - File extracDir = new File(extractDir); - if (!extracDir.exists()){ - extracDir.mkdirs(); - } - if (fileName.contains(".xmi") || fileName.contains(".yml")){ - if(fileName.contains(".yml")){ - type = ".yml"; - } - // get the request content into a String - String xmi = null; - java.util.Scanner scanner; - try { - scanner = new java.util.Scanner(request.getInputStream()); - scanner.useDelimiter("\\A"); - xmi = scanner.hasNext() ? scanner.next() : ""; - scanner.close(); - } catch (IOException e1) { - logger.error(e1); - PolicyLogger.error(errorMessage); - return; - } - PolicyLogger.info("Request from API to import new Service"); - try (Writer writer = new BufferedWriter(new OutputStreamWriter( - new FileOutputStream(extractDir + File.separator + randomID+type), "utf-8"))) { - writer.write(xmi); - } catch (IOException e) { - logger.error(e); - PolicyLogger.error(errorMessage); - return; - } - }else{ - InputStream inputStream = null; - try(FileOutputStream outputStream = new FileOutputStream(extractDir + File.separator + randomID+".zip")) { - inputStream = request.getInputStream(); - byte[] buffer = new byte[4096]; - int bytesRead = -1 ; - while ((bytesRead = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bytesRead) ; - } - } catch (IOException e) { - PolicyLogger.error("Error in reading in Zip File from API call"+e); - return; - }finally{ - try { - if(inputStream != null){ - inputStream.close(); - } - } catch (IOException e) { - PolicyLogger.error("Exception Occured while closing the input/output stream"+e); - } - } - } - - newMS = new CreateNewMicroServiceModel(fileName, serviceName, "API", version, randomID); - - successMap = newMS.addValuesToNewModel(type); - - if (successMap.containsKey(successMessage)) { - successMap.clear(); - successMap = newMS.saveImportService(); - } - } - } else if(("OPTIMIZATION").equals(importServiceCreation)){ - CreateNewOptimizationModel newOOF = null; - String randomID = UUID.randomUUID().toString(); - if ( fileName != null) { - File extracDir = new File(extractDir); - if (!extracDir.exists()){ - extracDir.mkdirs(); - } - - String type = ".yml"; - - // get the request content into a String - String yml = null; - try (java.util.Scanner scanner = new java.util.Scanner(request.getInputStream());){ - scanner.useDelimiter("\\A"); - yml = scanner.hasNext() ? scanner.next() : ""; - } catch (IOException e1) { - logger.error(e1); - PolicyLogger.error(errorMessage); - return; - } - PolicyLogger.info("Request from API to import new Optimization Service Model"); - try (Writer writer = new BufferedWriter(new OutputStreamWriter( - new FileOutputStream(extractDir + File.separator + randomID+type), "utf-8"))) { - writer.write(yml); - } catch (IOException e) { - logger.error(e); - PolicyLogger.error(errorMessage); - return; - } - - newOOF = new CreateNewOptimizationModel(fileName, serviceName, "API Import Service", version, randomID); - successMap = newOOF.addValuesToNewModel(); - if (successMap.containsKey(successMessage)) { - successMap.clear(); - successMap = newOOF.saveImportService(); - } - } - } - - // return a response to the PAP - if (successMap.containsKey(successMessage)) { - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("successMapKey", successMessage); - response.addHeader(operation, importHeader); - response.addHeader(service, serviceName); - } else if (successMap.containsKey("DBError")) { - if (successMap.get("DBError").contains("EXISTS")){ - response.setStatus(HttpServletResponse.SC_CONFLICT); - response.addHeader(service, serviceName); - response.addHeader(errorMsg, "modelExistsDB"); - }else{ - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader(errorMsg, "importDB"); - } - response.addHeader(operation, importHeader); - response.addHeader(service, serviceName); - }else if (successMap.get(errorMsg).contains("MISSING")){ - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader(errorMsg, MISSING); - response.addHeader(operation, importHeader); - response.addHeader(service, serviceName); - }else if (successMap.get(errorMsg).contains("VALIDATION")){ - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - response.addHeader(errorMsg, "validation"); - response.addHeader(operation, importHeader); - response.addHeader(service, serviceName); - } - } + public void doImportMicroServicePut(HttpServletRequest request, HttpServletResponse response) { + String importServiceCreation = request.getParameter("importService"); + String fileName = request.getParameter("fileName"); + String version = request.getParameter("version"); + String serviceName = request.getParameter("serviceName"); + + if(serviceName == null || serviceName.isEmpty() || !serviceName.matches(REGEX)){ + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + response.addHeader(errorMsg, MISSING); + response.addHeader(operation, importHeader); + response.addHeader(service, invalidServiceName); + return; + } + + String description = request.getParameter("description"); + Map successMap = new HashMap<>(); + if(("BRMSPARAM").equals(importServiceCreation)){ + StringBuilder builder = new StringBuilder(); + int ch; + try { + while((ch = request.getInputStream().read()) != -1){ + builder.append((char)ch); + } + } catch (IOException e) { + logger.error(e); + PolicyLogger.error(errorMessage); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader(errorMsg, MISSING); + response.addHeader(operation, importHeader); + response.addHeader(service, serviceName); + } + CreateBRMSRuleTemplate brmsRuleTemplate = new CreateBRMSRuleTemplate(); + successMap = brmsRuleTemplate.addRule(builder.toString(), serviceName, description, "API"); + } + else if(("MICROSERVICE").equals(importServiceCreation)){ + CreateNewMicroServiceModel newMS = null; + String randomID = UUID.randomUUID().toString(); + String type = ".xmi"; + if ( fileName != null) { + File extracDir = new File(extractDir); + if (!extracDir.exists()){ + extracDir.mkdirs(); + } + if (fileName.contains(".xmi") || fileName.contains(".yml")){ + if(fileName.contains(".yml")){ + type = ".yml"; + } + // get the request content into a String + String xmi = null; + java.util.Scanner scanner; + try { + scanner = new java.util.Scanner(request.getInputStream()); + scanner.useDelimiter("\\A"); + xmi = scanner.hasNext() ? scanner.next() : ""; + scanner.close(); + } catch (IOException e1) { + logger.error(e1); + PolicyLogger.error(errorMessage); + return; + } + PolicyLogger.info("Request from API to import new Service"); + try (Writer writer = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream(extractDir + File.separator + randomID+type), "utf-8"))) { + writer.write(xmi); + } catch (IOException e) { + logger.error(e); + PolicyLogger.error(errorMessage); + return; + } + }else{ + InputStream inputStream = null; + try(FileOutputStream outputStream = new FileOutputStream(extractDir + File.separator + randomID+".zip")) { + inputStream = request.getInputStream(); + byte[] buffer = new byte[4096]; + int bytesRead = -1 ; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead) ; + } + } catch (IOException e) { + PolicyLogger.error("Error in reading in Zip File from API call"+e); + return; + }finally{ + try { + if(inputStream != null){ + inputStream.close(); + } + } catch (IOException e) { + PolicyLogger.error("Exception Occured while closing the input/output stream"+e); + } + } + } + + newMS = new CreateNewMicroServiceModel(fileName, serviceName, "API", version, randomID); + + successMap = newMS.addValuesToNewModel(type); + + if (successMap.containsKey(successMessage)) { + successMap.clear(); + successMap = newMS.saveImportService(); + } + } + } else if(("OPTIMIZATION").equals(importServiceCreation)){ + CreateNewOptimizationModel newOOF = null; + String randomID = UUID.randomUUID().toString(); + if ( fileName != null) { + File extracDir = new File(extractDir); + if (!extracDir.exists()){ + extracDir.mkdirs(); + } + + String type = ".yml"; + + // get the request content into a String + String yml = null; + try (java.util.Scanner scanner = new java.util.Scanner(request.getInputStream());){ + scanner.useDelimiter("\\A"); + yml = scanner.hasNext() ? scanner.next() : ""; + } catch (IOException e1) { + logger.error(e1); + PolicyLogger.error(errorMessage); + return; + } + PolicyLogger.info("Request from API to import new Optimization Service Model"); + try (Writer writer = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream(extractDir + File.separator + randomID+type), "utf-8"))) { + writer.write(yml); + } catch (IOException e) { + logger.error(e); + PolicyLogger.error(errorMessage); + return; + } + + newOOF = new CreateNewOptimizationModel(fileName, serviceName, "API Import Service", version, randomID); + successMap = newOOF.addValuesToNewModel(); + if (successMap.containsKey(successMessage)) { + successMap.clear(); + successMap = newOOF.saveImportService(); + } + } + } + + // return a response to the PAP + if (successMap.containsKey(successMessage)) { + response.setStatus(HttpServletResponse.SC_OK); + response.addHeader("successMapKey", successMessage); + response.addHeader(operation, importHeader); + response.addHeader(service, serviceName); + } else if (successMap.containsKey("DBError")) { + if (successMap.get("DBError").contains("EXISTS")){ + response.setStatus(HttpServletResponse.SC_CONFLICT); + response.addHeader(service, serviceName); + response.addHeader(errorMsg, "modelExistsDB"); + }else{ + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader(errorMsg, "importDB"); + } + response.addHeader(operation, importHeader); + response.addHeader(service, serviceName); + }else if (successMap.get(errorMsg).contains("MISSING")){ + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader(errorMsg, MISSING); + response.addHeader(operation, importHeader); + response.addHeader(service, serviceName); + }else if (successMap.get(errorMsg).contains("VALIDATION")){ + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.addHeader(errorMsg, "validation"); + response.addHeader(operation, importHeader); + response.addHeader(service, serviceName); + } + } } \ No newline at end of file