Search in sources :

Example 26 with CountryEnvParam

use of org.cerberus.crud.entity.CountryEnvParam in project cerberus-source by cerberustesting.

the class AddToExecutionQueueV003 method processRequest.

/**
 * Process request for both GET and POST method.
 *
 * <p>
 * Request processing is divided in two parts:
 * <ol>
 * <li>Getting all test cases which have been sent to this servlet;</li>
 * <li>Try to insert all these test cases to the execution queue.</li>
 * </ol>
 * </p>
 *
 * @param request
 * @param response
 * @throws ServletException
 * @throws IOException
 */
private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    final String charset = request.getCharacterEncoding();
    Date requestDate = new Date();
    // Loading Services.
    ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
    inQueueService = appContext.getBean(ITestCaseExecutionQueueService.class);
    inQueueFactoryService = appContext.getBean(IFactoryTestCaseExecutionQueue.class);
    executionThreadService = appContext.getBean(IExecutionThreadPoolService.class);
    testCaseService = appContext.getBean(ITestCaseService.class);
    invariantService = appContext.getBean(IInvariantService.class);
    applicationService = appContext.getBean(IApplicationService.class);
    testCaseCountryService = appContext.getBean(ITestCaseCountryService.class);
    campaignParameterService = appContext.getBean(ICampaignParameterService.class);
    countryEnvParamService = appContext.getBean(ICountryEnvParamService.class);
    // Calling Servlet Transversal Util.
    ServletUtil.servletStart(request);
    // Default message to unexpected error.
    MessageEvent msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_UNEXPECTED);
    msg.setDescription(msg.getDescription().replace("%DESCRIPTION%", ""));
    AnswerItem<List<TestCase>> testcases = null;
    /**
     * Adding Log entry.
     */
    ILogEventService logEventService = appContext.getBean(ILogEventService.class);
    logEventService.createForPublicCalls("/AddToExecutionQueueV003", "CALL", "AddToExecutionQueueV003 called : " + request.getRequestURL(), request);
    // Parsing all parameters.
    // Execution scope parameters : Campaign, TestCases, Countries, Environment, Browser.
    String campaign = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_CAMPAIGN), null, charset);
    List<String> selectTest;
    selectTest = ParameterParserUtil.parseListParamAndDecode(request.getParameterValues(PARAMETER_TEST), null, charset);
    List<String> selectTestCase;
    selectTestCase = ParameterParserUtil.parseListParamAndDecode(request.getParameterValues(PARAMETER_TESTCASE), null, charset);
    List<String> countries;
    countries = ParameterParserUtil.parseListParamAndDecode(request.getParameterValues(PARAMETER_COUNTRY), null, charset);
    List<String> environments;
    environments = ParameterParserUtil.parseListParamAndDecodeAndDeleteEmptyValue(request.getParameterValues(PARAMETER_ENVIRONMENT), null, charset);
    List<String> robots = new ArrayList<>();
    robots = ParameterParserUtil.parseListParamAndDecode(request.getParameterValues(PARAMETER_ROBOT), robots, charset);
    // Execution parameters.
    String tag = ParameterParserUtil.parseStringParam(request.getParameter(PARAMETER_TAG), "");
    String robotIP = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_ROBOT_IP), null, charset);
    String robotPort = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_ROBOT_PORT), null, charset);
    String browser = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_BROWSER), null, charset);
    String browserVersion = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_BROWSER_VERSION), null, charset);
    String platform = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_PLATFORM), null, charset);
    String screenSize = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_SCREENSIZE), null, charset);
    int manualURL = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter(PARAMETER_MANUAL_URL), DEFAULT_VALUE_MANUAL_URL, charset);
    String manualHost = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_MANUAL_HOST), null, charset);
    String manualContextRoot = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_MANUAL_CONTEXT_ROOT), null, charset);
    String manualLoginRelativeURL = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_MANUAL_LOGIN_RELATIVE_URL), null, charset);
    String manualEnvData = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter(PARAMETER_MANUAL_ENV_DATA), null, charset);
    int screenshot = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter(PARAMETER_SCREENSHOT), DEFAULT_VALUE_SCREENSHOT, charset);
    int verbose = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter(PARAMETER_VERBOSE), DEFAULT_VALUE_VERBOSE, charset);
    String timeout = request.getParameter(PARAMETER_TIMEOUT);
    int pageSource = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter(PARAMETER_PAGE_SOURCE), DEFAULT_VALUE_PAGE_SOURCE, charset);
    int seleniumLog = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter(PARAMETER_SELENIUM_LOG), DEFAULT_VALUE_SELENIUM_LOG, charset);
    int retries = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter(PARAMETER_RETRIES), DEFAULT_VALUE_RETRIES, charset);
    String manualExecution = ParameterParserUtil.parseStringParamAndDecode(request.getParameter(PARAMETER_MANUAL_EXECUTION), DEFAULT_VALUE_MANUAL_EXECUTION, charset);
    int priority = ParameterParserUtil.parseIntegerParamAndDecode(request.getParameter(PARAMETER_EXEPRIORITY), DEFAULT_VALUE_PRIORITY, charset);
    if (manualExecution.equals("")) {
        manualExecution = DEFAULT_VALUE_MANUAL_EXECUTION;
    }
    String outputFormat = ParameterParserUtil.parseStringParamAndDecode(request.getParameter(PARAMETER_OUTPUTFORMAT), DEFAULT_VALUE_OUTPUTFORMAT, charset);
    // Defining help message.
    String helpMessage = "This servlet is used to add to Cerberus execution queue a list of execution. Execution list will be calculated from cartesian product of " + "testcase, country, environment and browser list. Those list can be defined from the associated servlet parameter but can also be defined from campaign directy inside Cerberus.\n" + "List defined from servlet overwrite the list defined from the campaign. All other execution parameters will be taken to each execution.\n" + "Available parameters:\n" + "- " + PARAMETER_CAMPAIGN + " : Campaign name from which testcase, countries, environment and browser can be defined from Cerberus. [" + campaign + "]\n" + "- " + PARAMETER_TEST + " : List of test to trigger. That list overwrite the list coming from the Campaign (if defined).. [" + selectTest + "]\n" + "- " + PARAMETER_TESTCASE + " : List of testCase to trigger. That list overwrite the list coming from the Campaign (if defined).. [" + selectTestCase + "]\n" + "- " + PARAMETER_COUNTRY + " : List of countries to trigger. That list overwrite the list coming from the Campaign (if defined).. [" + countries + "]\n" + "- " + PARAMETER_ENVIRONMENT + " : List of environment to trigger. That list overwrite the list coming from the Campaign (if defined).. [" + environments + "]\n" + "- " + PARAMETER_ROBOT + " : List of robot to trigger. That list overwrite the list coming from the Campaign (if defined).. [" + robots + "]\n" + "- " + PARAMETER_ROBOT_IP + " : Robot IP that will be used for every execution triggered. [" + robotIP + "]\n" + "- " + PARAMETER_ROBOT_PORT + " : Robot Port that will be used for every execution triggered. [" + robotPort + "]\n" + "- " + PARAMETER_BROWSER + " : Browser that will be used for every execution triggered. [" + browser + "]\n" + "- " + PARAMETER_BROWSER_VERSION + " : Browser Version that will be used for every execution triggered. [" + browserVersion + "]\n" + "- " + PARAMETER_PLATFORM + " : Platform that will be used for every execution triggered. [" + platform + "]\n" + "- " + PARAMETER_SCREENSIZE + " : Size of the screen that will be used for every execution triggered. [" + screenSize + "]\n" + "- " + PARAMETER_MANUAL_URL + " : Activate (1) or not (0) the Manual URL of the application to execute. If activated the 4 parameters after are necessary. [" + manualURL + "]\n" + "- " + PARAMETER_MANUAL_HOST + " : Host of the application to test (only used when " + PARAMETER_MANUAL_URL + " is activated). [" + manualHost + "]\n" + "- " + PARAMETER_MANUAL_CONTEXT_ROOT + " : Context root of the application to test (only used when " + PARAMETER_MANUAL_URL + " is activated). [" + manualContextRoot + "]\n" + "- " + PARAMETER_MANUAL_LOGIN_RELATIVE_URL + " : Relative login URL of the application (only used when " + PARAMETER_MANUAL_URL + " is activated). [" + manualLoginRelativeURL + "]\n" + "- " + PARAMETER_MANUAL_ENV_DATA + " : Environment where to get the test data when a " + PARAMETER_MANUAL_URL + " is defined. (only used when manualURL is active). [" + manualEnvData + "]\n" + "- " + PARAMETER_TAG + " : Tag that will be used for every execution triggered. [" + tag + "]\n" + "- " + PARAMETER_SCREENSHOT + " : Activate or not the screenshots for every execution triggered. [" + screenshot + "]\n" + "- " + PARAMETER_VERBOSE + " : Verbose level for every execution triggered. [" + verbose + "]\n" + "- " + PARAMETER_TIMEOUT + " : Timeout used for the action that will be used for every execution triggered. [" + timeout + "]\n" + "- " + PARAMETER_PAGE_SOURCE + " : Record Page Source during for every execution triggered. [" + pageSource + "]\n" + "- " + PARAMETER_SELENIUM_LOG + " : Get the SeleniumLog at the end of the execution for every execution triggered. [" + seleniumLog + "]\n" + "- " + PARAMETER_MANUAL_EXECUTION + " : Execute testcase in manual mode for every execution triggered. [" + manualExecution + "]\n" + "- " + PARAMETER_RETRIES + " : Number of tries if the result is not OK for every execution triggered. [" + retries + "]\n" + "- " + PARAMETER_EXEPRIORITY + " : Priority that will be used in the queue for every execution triggered. [" + priority + "]\n" + "- " + PARAMETER_OUTPUTFORMAT + " : Format of the servlet output. can be compact, json [" + outputFormat + "]\n";
    // try {
    // Checking the parameter validity.
    StringBuilder errorMessage = new StringBuilder();
    boolean error = false;
    if (tag == null || tag.isEmpty()) {
        if (request.getRemoteUser() != null) {
            tag = request.getRemoteUser();
        }
        if (tag.length() > 0) {
            tag += ".";
        }
        if (campaign != null) {
            tag += campaign;
        }
        if (tag.length() > 0) {
            tag += ".";
        }
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        String mytimestamp = sdf.format(timestamp);
        tag += mytimestamp;
    } else if (tag.length() > 255) {
        errorMessage.append("Error - Parameter ").append(PARAMETER_TAG).append(" is too big. Maximum size if 255. Current size is : ").append(tag.length()).append("\n");
        error = true;
    }
    if (campaign != null && !campaign.isEmpty()) {
        final AnswerItem<Map<String, List<String>>> parsedCampaignParameters = campaignParameterService.parseParametersByCampaign(campaign);
        if (parsedCampaignParameters.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode())) {
            // If parameters are already defined from request, we ignore the campaign values.
            if (countries == null || countries.isEmpty()) {
                countries = parsedCampaignParameters.getItem().get(CampaignParameter.COUNTRY_PARAMETER);
            }
            if (environments == null || environments.isEmpty()) {
                environments = parsedCampaignParameters.getItem().get(CampaignParameter.ENVIRONMENT_PARAMETER);
            }
            if (robots == null || robots.isEmpty()) {
                robots = parsedCampaignParameters.getItem().get(CampaignParameter.ROBOT_PARAMETER);
            }
        }
        if ((countries != null) && (selectTest == null || selectTest.isEmpty())) {
            // If no countries are found, there is no need to get the testcase list. None will be returned.
            selectTest = new ArrayList<>();
            selectTestCase = new ArrayList<>();
            testcases = testCaseService.findTestCaseByCampaignNameAndCountries(campaign, countries.toArray(new String[countries.size()]));
            for (TestCase campaignTestCase : testcases.getItem()) {
                selectTest.add(campaignTestCase.getTest());
                selectTestCase.add(campaignTestCase.getTestCase());
            }
        }
    }
    if (countries == null || countries.isEmpty()) {
        errorMessage.append("Error - No Country defined. You can either feed it with parameter '" + PARAMETER_COUNTRY + "' or add it into the campaign definition.\n");
        error = true;
    }
    // }
    if (selectTest == null || selectTest.isEmpty() || selectTestCase == null || selectTestCase.isEmpty()) {
        errorMessage.append("Error - No TestCases defined. You can either feed it with parameters '" + PARAMETER_TEST + "' and '" + PARAMETER_TESTCASE + "' or add it into the campaign definition.\n");
        error = true;
    }
    if ((selectTest != null) && (selectTestCase != null) && (selectTest.size() != selectTestCase.size())) {
        errorMessage.append("Error - Test list size (").append(selectTest.size()).append(") is not the same as testcase list size (").append(selectTestCase.size()).append("). Please check that both list are consistent.\n");
        error = true;
    }
    if (manualURL >= 1) {
        if (manualHost == null || manualEnvData == null) {
            errorMessage.append("Error - ManualURL has been activated but no ManualHost or Manual Environment defined.\n");
            error = true;
        }
    } else if (environments == null || environments.isEmpty()) {
        errorMessage.append("Error - No Environment defined (and " + PARAMETER_MANUAL_URL + " not activated). You can either feed it with parameter '" + PARAMETER_ENVIRONMENT + "' or add it into the campaign definition.\n");
        error = true;
    }
    int nbExe = 0;
    JSONArray jsonArray = new JSONArray();
    String user = request.getRemoteUser() == null ? "" : request.getRemoteUser();
    int nbtestcasenotactive = 0;
    int nbtestcaseenvgroupnotallowed = 0;
    int nbenvnotexist = 0;
    boolean tagAlreadyAdded = false;
    int nbrobot = 0;
    if (robots == null || robots.isEmpty()) {
        nbrobot = 1;
    } else {
        nbrobot = robots.size();
    }
    // Starting the request only if previous parameters exist.
    if (!error) {
        int nbtescase = selectTest.size();
        int nbenv = environments.size();
        int nbcountries = countries.size();
        // Part 1: Getting all possible Execution from test cases + countries + environments + browsers which have been sent to this servlet.
        Map<String, String> invariantEnv = invariantService.readToHashMapGp1StringByIdname("ENVIRONMENT", "");
        List<TestCaseExecutionQueue> toInserts = new ArrayList<TestCaseExecutionQueue>();
        try {
            HashMap<String, CountryEnvParam> envMap = new HashMap<>();
            LOG.debug("Loading all environments.");
            for (CountryEnvParam envParam : countryEnvParamService.convert(countryEnvParamService.readActiveBySystem(null))) {
                envMap.put(envParam.getSystem() + LOCAL_SEPARATOR + envParam.getCountry() + LOCAL_SEPARATOR + envParam.getEnvironment(), envParam);
            }
            LOG.debug("Nb of TestCase : " + selectTest.size());
            for (int i = 0; i < selectTest.size(); i++) {
                // for (String localTest : selectTest) {
                String test = selectTest.get(i);
                String testCase = selectTestCase.get(i);
                TestCase tc = testCaseService.convert(testCaseService.readByKey(test, testCase));
                // TestCases that are not active are not inserted into queue.
                if (tc.getTcActive().equals("Y")) {
                    // We only insert testcase that exist for the given country.
                    for (TestCaseCountry country : testCaseCountryService.convert(testCaseCountryService.readByTestTestCase(null, test, testCase))) {
                        if (countries.contains(country.getCountry())) {
                            // for each environment we test that correspondng gp1 is compatible with testcase environment flag activation.
                            for (String environment : environments) {
                                String envGp1 = invariantEnv.get(environment);
                                if (((envGp1.equals("PROD")) && (tc.getActivePROD().equalsIgnoreCase("Y"))) || ((envGp1.equals("UAT")) && (tc.getActiveUAT().equalsIgnoreCase("Y"))) || ((envGp1.equals("QA")) && (tc.getActiveQA().equalsIgnoreCase("Y"))) || (envGp1.equals("DEV"))) {
                                    // Getting Application in order to check application type against browser.
                                    Application app = applicationService.convert(applicationService.readByKey(tc.getApplication()));
                                    if (envMap.containsKey(app.getSystem() + LOCAL_SEPARATOR + country.getCountry() + LOCAL_SEPARATOR + environment)) {
                                        // Create Tag only if not already done and defined.
                                        if (!StringUtil.isNullOrEmpty(tag) && !tagAlreadyAdded) {
                                            // We create or update it.
                                            ITagService tagService = appContext.getBean(ITagService.class);
                                            tagService.createAuto(tag, campaign, user);
                                            tagAlreadyAdded = true;
                                        }
                                        if ((app != null) && (app.getType() != null) && (app.getType().equalsIgnoreCase(Application.TYPE_GUI) || app.getType().equalsIgnoreCase(Application.TYPE_APK) || app.getType().equalsIgnoreCase(Application.TYPE_IPA) || app.getType().equalsIgnoreCase(Application.TYPE_FAT))) {
                                            if (robots == null || robots.isEmpty()) {
                                                robots = new ArrayList<>();
                                                robots.add("");
                                            }
                                            for (String robot : robots) {
                                                try {
                                                    LOG.debug("Insert Queue Entry.");
                                                    toInserts.add(inQueueFactoryService.create(test, testCase, country.getCountry(), environment, robot, robotIP, robotPort, browser, browserVersion, platform, screenSize, manualURL, manualHost, manualContextRoot, manualLoginRelativeURL, manualEnvData, tag, screenshot, verbose, timeout, pageSource, seleniumLog, 0, retries, manualExecution, priority, user, null, null, null));
                                                } catch (FactoryCreationException e) {
                                                    LOG.error("Unable to insert record due to: " + e, e);
                                                    LOG.error("test: " + test + "-" + testCase + "-" + country.getCountry() + "-" + environment + "-" + robots);
                                                }
                                            }
                                        } else {
                                            // Application does not support robot so we force an empty value.
                                            LOG.debug("Forcing Robot to empty value. Application type=" + app.getType());
                                            try {
                                                LOG.debug("Insert Queue Entry.");
                                                toInserts.add(inQueueFactoryService.create(test, testCase, country.getCountry(), environment, "", "", "", "", "", "", "", manualURL, manualHost, manualContextRoot, manualLoginRelativeURL, manualEnvData, tag, screenshot, verbose, timeout, pageSource, seleniumLog, 0, retries, manualExecution, priority, user, null, null, null));
                                            } catch (FactoryCreationException e) {
                                                LOG.error("Unable to insert record due to: " + e, e);
                                                LOG.error("test: " + test + "-" + testCase + "-" + country.getCountry() + "-" + environment + "-" + robots);
                                            }
                                        }
                                    } else {
                                        LOG.debug("Env does not exist or is not active.");
                                        nbenvnotexist = nbenvnotexist + nbrobot;
                                    }
                                } else {
                                    LOG.debug("Env group not active for testcase : " + environment);
                                    nbtestcaseenvgroupnotallowed = nbtestcaseenvgroupnotallowed + nbrobot;
                                }
                            }
                        } else {
                            LOG.debug("Country does not match. " + countries + " " + country.getCountry());
                        }
                    }
                } else {
                    LOG.debug("TestCase not Active.");
                    nbtestcasenotactive = nbtestcasenotactive + (nbcountries * nbenv * nbrobot);
                }
            }
        } catch (CerberusException ex) {
            LOG.warn(ex);
        }
        // Part 2: Try to insert all these test cases to the execution queue.
        List<String> errorMessages = new ArrayList<String>();
        for (TestCaseExecutionQueue toInsert : toInserts) {
            try {
                inQueueService.convert(inQueueService.create(toInsert));
                nbExe++;
                JSONObject value = new JSONObject();
                value.put("queueId", toInsert.getId());
                value.put("test", toInsert.getTest());
                value.put("testcase", toInsert.getTestCase());
                value.put("country", toInsert.getCountry());
                value.put("environment", toInsert.getEnvironment());
                jsonArray.put(value);
            } catch (CerberusException e) {
                String errorMessageTmp = "Unable to insert " + toInsert.toString() + " due to " + e.getMessage();
                LOG.warn(errorMessageTmp);
                errorMessages.add(errorMessageTmp);
                continue;
            } catch (JSONException ex) {
                LOG.error(ex);
            }
        }
        // Part 3 : Trigger JobQueue
        try {
            executionThreadService.executeNextInQueueAsynchroneously(false);
        } catch (CerberusException ex) {
            String errorMessageTmp = "Unable to feed the execution queue due to " + ex.getMessage();
            LOG.warn(errorMessageTmp);
            errorMessages.add(errorMessageTmp);
        }
        if (!errorMessages.isEmpty()) {
            StringBuilder errorMessageTmp = new StringBuilder();
            for (String item : errorMessages) {
                errorMessageTmp.append(item);
                errorMessageTmp.append(LINE_SEPARATOR);
            }
            errorMessage.append(errorMessageTmp.toString());
        }
        errorMessage.append(nbExe);
        errorMessage.append(" execution(s) succesfully inserted to queue. ");
        if (testcases != null && testcases.getResultMessage().getSource() == MessageEventEnum.DATA_OPERATION_WARNING_PARTIAL_RESULT) {
            errorMessage.append(testcases.getResultMessage().getDescription());
        }
        // Message that everything went fine.
        msg = new MessageEvent(MessageEventEnum.GENERIC_OK);
    } else {
    // In case of errors, we display the help message.
    // errorMessage.append(helpMessage);
    }
    // Init Answer with potencial error from Parsing parameter.
    AnswerItem answer = new AnswerItem(msg);
    switch(outputFormat) {
        case "json":
            try {
                JSONObject jsonResponse = new JSONObject();
                jsonResponse.put("messageType", answer.getResultMessage().getMessage().getCodeString());
                jsonResponse.put("message", errorMessage.toString());
                jsonResponse.put("helpMessage", helpMessage);
                jsonResponse.put("tag", tag);
                jsonResponse.put("nbExe", nbExe);
                jsonResponse.put("nbErrorTCNotActive", nbtestcasenotactive);
                jsonResponse.put("nbErrorTCNotAllowedOnEnv", nbtestcaseenvgroupnotallowed);
                jsonResponse.put("nbErrorEnvNotExistOrNotActive", nbenvnotexist);
                jsonResponse.put("queueList", jsonArray);
                response.setContentType("application/json");
                response.setCharacterEncoding("utf8");
                response.getWriter().print(jsonResponse.toString());
            } catch (JSONException e) {
                LOG.warn(e);
                // returns a default error message with the json format that is able to be parsed by the client-side
                response.setContentType("application/json");
                response.setCharacterEncoding("utf8");
                response.getWriter().print(AnswerUtil.createGenericErrorAnswer());
            }
            break;
        default:
            response.setContentType("text");
            response.setCharacterEncoding("utf8");
            if (error) {
                errorMessage.append("\n");
                errorMessage.append(helpMessage);
            }
            response.getWriter().print(errorMessage.toString());
    }
// } catch (Exception e) {
// LOG.error(e);
// out.println(helpMessage);
// out.println(e.toString());
// }
}
Also used : HashMap(java.util.HashMap) MessageEvent(org.cerberus.engine.entity.MessageEvent) ArrayList(java.util.ArrayList) Timestamp(java.sql.Timestamp) ITestCaseCountryService(org.cerberus.crud.service.ITestCaseCountryService) FactoryCreationException(org.cerberus.exception.FactoryCreationException) ApplicationContext(org.springframework.context.ApplicationContext) ITestCaseService(org.cerberus.crud.service.ITestCaseService) ILogEventService(org.cerberus.crud.service.ILogEventService) TestCaseCountry(org.cerberus.crud.entity.TestCaseCountry) ArrayList(java.util.ArrayList) List(java.util.List) TestCaseExecutionQueue(org.cerberus.crud.entity.TestCaseExecutionQueue) IFactoryTestCaseExecutionQueue(org.cerberus.crud.factory.IFactoryTestCaseExecutionQueue) IApplicationService(org.cerberus.crud.service.IApplicationService) PrintWriter(java.io.PrintWriter) ITestCaseExecutionQueueService(org.cerberus.crud.service.ITestCaseExecutionQueueService) CerberusException(org.cerberus.exception.CerberusException) IInvariantService(org.cerberus.crud.service.IInvariantService) ICampaignParameterService(org.cerberus.crud.service.ICampaignParameterService) JSONArray(org.json.JSONArray) JSONException(org.json.JSONException) AnswerItem(org.cerberus.util.answer.AnswerItem) Date(java.util.Date) IFactoryTestCaseExecutionQueue(org.cerberus.crud.factory.IFactoryTestCaseExecutionQueue) JSONObject(org.json.JSONObject) IExecutionThreadPoolService(org.cerberus.engine.threadpool.IExecutionThreadPoolService) TestCase(org.cerberus.crud.entity.TestCase) ITagService(org.cerberus.crud.service.ITagService) ICountryEnvParamService(org.cerberus.crud.service.ICountryEnvParamService) HashMap(java.util.HashMap) Map(java.util.Map) CountryEnvParam(org.cerberus.crud.entity.CountryEnvParam) Application(org.cerberus.crud.entity.Application)

Example 27 with CountryEnvParam

use of org.cerberus.crud.entity.CountryEnvParam in project cerberus-source by cerberustesting.

the class DisableEnvironmentV000 method processRequest.

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    String charset = request.getCharacterEncoding();
    // Loading Services.
    ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
    ICountryEnvParamService countryEnvParamService = appContext.getBean(ICountryEnvParamService.class);
    IInvariantService invariantService = appContext.getBean(IInvariantService.class);
    IBuildRevisionInvariantService buildRevisionInvariantService = appContext.getBean(IBuildRevisionInvariantService.class);
    IEmailService emailService = appContext.getBean(IEmailService.class);
    ICountryEnvParam_logService countryEnvParam_logService = appContext.getBean(ICountryEnvParam_logService.class);
    IParameterService parameterService = appContext.getBean(IParameterService.class);
    // Calling Servlet Transversal Util.
    ServletUtil.servletStart(request);
    /**
     * Adding Log entry.
     */
    ILogEventService logEventService = appContext.getBean(ILogEventService.class);
    logEventService.createForPublicCalls("/DisableEnvironmentV000", "CALL", "DisableEnvironmentV000 called : " + request.getRequestURL(), request);
    // Parsing all parameters.
    String system = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("system"), "", charset);
    String country = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("country"), "", charset);
    String environment = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("environment"), "", charset);
    // Defining help message.
    String helpMessage = "\nThis servlet is used to inform Cerberus that a system is disabled. For example when a Revision is beeing deployed.\n\nParameter list :\n" + "- system [mandatory] : the system where the Build Revision has been deployed. [" + system + "]\n" + "- country [mandatory] : the country where the Build Revision has been deployed. You can use ALL if you want to perform the action for all countries that exist for the given system and environement. [" + country + "]\n" + "- environment [mandatory] : the environment where the Build Revision has been deployed. [" + environment + "]\n";
    // Checking the parameter validity.
    boolean error = false;
    if (system.equalsIgnoreCase("")) {
        out.println("Error - Parameter system is mandatory.");
        error = true;
    }
    if (!system.equalsIgnoreCase("") && !invariantService.isInvariantExist("SYSTEM", system)) {
        out.println("Error - System does not exist  : " + system);
        error = true;
    }
    if (environment.equalsIgnoreCase("")) {
        out.println("Error - Parameter environment is mandatory.");
        error = true;
    }
    if (!environment.equalsIgnoreCase("") && !invariantService.isInvariantExist("ENVIRONMENT", environment)) {
        out.println("Error - Environment does not exist  : " + environment);
        error = true;
    }
    if (country.equalsIgnoreCase("")) {
        out.println("Error - Parameter country is mandatory.");
        error = true;
    } else if (!country.equalsIgnoreCase(PARAMETERALL)) {
        if (!invariantService.isInvariantExist("COUNTRY", country)) {
            out.println("Error - Country does not exist  : " + country);
            error = true;
        }
        if (!error) {
            if (!countryEnvParamService.exist(system, country, environment)) {
                out.println("Error - System/Country/Environment does not exist : " + system + "/" + country + "/" + environment);
                error = true;
            }
        }
    }
    // Starting the database update only when no blocking error has been detected.
    if (error == false) {
        /**
         * Getting the list of objects to treat.
         */
        MessageEvent msg = new MessageEvent(MessageEventEnum.GENERIC_OK);
        Answer finalAnswer = new Answer(msg);
        AnswerList answerList = new AnswerList();
        if (country.equalsIgnoreCase(PARAMETERALL)) {
            country = null;
        }
        answerList = countryEnvParamService.readByVarious(system, country, environment, null, null, null);
        finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, (Answer) answerList);
        for (CountryEnvParam cepData : (List<CountryEnvParam>) answerList.getDataList()) {
            /**
             * For each object, we can update it.
             */
            cepData.setActive(false);
            Answer answerUpdate = countryEnvParamService.update(cepData);
            if (!(answerUpdate.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode()))) {
                /**
                 * Object could not be updated. We stop here and report the
                 * error.
                 */
                finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, answerUpdate);
            } else {
                /**
                 * Update was successful.
                 */
                // Adding Log entry.
                logEventService.createForPrivateCalls("/DisableEnvironmentV000", "UPDATE", "Updated CountryEnvParam : ['" + cepData.getSystem() + "','" + cepData.getCountry() + "','" + cepData.getEnvironment() + "']", request);
                // Adding CountryEnvParam Log entry.
                countryEnvParam_logService.createLogEntry(cepData.getSystem(), cepData.getCountry(), cepData.getEnvironment(), "", "", "Disabled.", "PublicCall");
                /**
                 * Email notification.
                 */
                // Email Calculation.
                String eMailContent;
                String OutputMessage = "";
                MessageEvent me = emailService.generateAndSendDisableEnvEmail(cepData.getSystem(), cepData.getCountry(), cepData.getEnvironment());
                if (!"OK".equals(me.getMessage().getCodeString())) {
                    LOG.warn(Infos.getInstance().getProjectNameAndVersion() + " - Exception catched." + me.getMessage().getDescription());
                    logEventService.createForPrivateCalls("/DisableEnvironmentV000", "DISABLE", "Warning on Disable environment : ['" + cepData.getSystem() + "','" + cepData.getCountry() + "','" + cepData.getEnvironment() + "'] " + me.getMessage().getDescription(), request);
                    OutputMessage = me.getMessage().getDescription();
                }
                if (OutputMessage.equals("")) {
                    msg = new MessageEvent(MessageEventEnum.GENERIC_OK);
                    Answer answerSMTP = new AnswerList(msg);
                    finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, answerSMTP);
                } else {
                    msg = new MessageEvent(MessageEventEnum.GENERIC_WARNING);
                    msg.setDescription(msg.getDescription().replace("%REASON%", OutputMessage + " when sending email for " + cepData.getSystem() + "/" + cepData.getCountry() + "/" + cepData.getEnvironment()));
                    Answer answerSMTP = new AnswerList(msg);
                    finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, answerSMTP);
                }
            }
        }
        /**
         * Formating and returning the result.
         */
        out.println(finalAnswer.getResultMessage().getMessage().getCodeString() + " - " + finalAnswer.getResultMessage().getDescription());
    } else {
        // In case of errors, we display the help message.
        out.println(helpMessage);
    }
}
Also used : AnswerList(org.cerberus.util.answer.AnswerList) MessageEvent(org.cerberus.engine.entity.MessageEvent) IInvariantService(org.cerberus.crud.service.IInvariantService) IParameterService(org.cerberus.crud.service.IParameterService) IBuildRevisionInvariantService(org.cerberus.crud.service.IBuildRevisionInvariantService) ICountryEnvParam_logService(org.cerberus.crud.service.ICountryEnvParam_logService) Answer(org.cerberus.util.answer.Answer) ApplicationContext(org.springframework.context.ApplicationContext) ILogEventService(org.cerberus.crud.service.ILogEventService) AnswerList(org.cerberus.util.answer.AnswerList) List(java.util.List) ICountryEnvParamService(org.cerberus.crud.service.ICountryEnvParamService) IEmailService(org.cerberus.service.email.IEmailService) CountryEnvParam(org.cerberus.crud.entity.CountryEnvParam) PrintWriter(java.io.PrintWriter)

Example 28 with CountryEnvParam

use of org.cerberus.crud.entity.CountryEnvParam in project cerberus-source by cerberustesting.

the class NewChain method processRequest.

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, JSONException {
    JSONObject jsonResponse = new JSONObject();
    AnswerItem answerItem = new AnswerItem();
    MessageEvent msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_UNEXPECTED);
    msg.setDescription(msg.getDescription().replace("%DESCRIPTION%", ""));
    answerItem.setResultMessage(msg);
    PolicyFactory policy = Sanitizers.FORMATTING.and(Sanitizers.LINKS);
    response.setContentType("application/json");
    /**
     * Parsing and securing all required parameters.
     */
    String system = policy.sanitize(request.getParameter("system"));
    String country = policy.sanitize(request.getParameter("country"));
    String env = policy.sanitize(request.getParameter("environment"));
    String chain = policy.sanitize(request.getParameter("chain"));
    // Init Answer with potencial error from Parsing parameter.
    // AnswerItem answer = new AnswerItem(msg);
    ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
    IEmailService emailService = appContext.getBean(IEmailService.class);
    ICountryEnvParamService countryEnvParamService = appContext.getBean(ICountryEnvParamService.class);
    IBuildRevisionBatchService buildRevisionBatchService = appContext.getBean(IBuildRevisionBatchService.class);
    ILogEventService logEventService = appContext.getBean(ILogEventService.class);
    if (request.getParameter("system") == null) {
        msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_EXPECTED);
        msg.setDescription(msg.getDescription().replace("%ITEM%", ITEM).replace("%OPERATION%", OPERATION).replace("%REASON%", "System name is missing!"));
        answerItem.setResultMessage(msg);
    } else if (request.getParameter("country") == null) {
        msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_EXPECTED);
        msg.setDescription(msg.getDescription().replace("%ITEM%", ITEM).replace("%OPERATION%", OPERATION).replace("%REASON%", "Country is missing!"));
        answerItem.setResultMessage(msg);
    } else if (request.getParameter("environment") == null) {
        msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_EXPECTED);
        msg.setDescription(msg.getDescription().replace("%ITEM%", ITEM).replace("%OPERATION%", OPERATION).replace("%REASON%", "Environment is missing!"));
        answerItem.setResultMessage(msg);
    } else if (request.getParameter("chain") == null) {
        msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_EXPECTED);
        msg.setDescription(msg.getDescription().replace("%ITEM%", ITEM).replace("%OPERATION%", OPERATION).replace("%REASON%", "Chain is missing!"));
        answerItem.setResultMessage(msg);
    } else {
        // All parameters are OK we can start performing the operation.
        // Getting the contryEnvParam based on the parameters.
        answerItem = countryEnvParamService.readByKey(system, country, env);
        if (!(answerItem.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode()) && answerItem.getItem() != null)) {
            /**
             * Object could not be found. We stop here and report the error.
             */
            msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_EXPECTED);
            msg.setDescription(msg.getDescription().replace("%ITEM%", OBJECT_NAME).replace("%OPERATION%", OPERATION).replace("%REASON%", OBJECT_NAME + " ['" + system + "','" + country + "','" + env + "'] does not exist. Cannot register a new event!"));
            answerItem.setResultMessage(msg);
        } else {
            /**
             * The service was able to perform the query and confirm the
             * object exist, then we can update it.
             */
            // Adding BuildRevisionBatch entry.
            // Adding CountryEnvParam Log entry.
            CountryEnvParam cepData = (CountryEnvParam) answerItem.getItem();
            buildRevisionBatchService.create(system, country, env, cepData.getBuild(), cepData.getRevision(), chain);
            /**
             * Email notification.
             */
            String OutputMessage = "";
            MessageEvent me = emailService.generateAndSendNewChainEmail(system, country, env, chain);
            if (!"OK".equals(me.getMessage().getCodeString())) {
                LOG.warn(Infos.getInstance().getProjectNameAndVersion() + " - Exception catched." + me.getMessage().getDescription());
                logEventService.createForPrivateCalls("/NewChain", "NEWCHAIN", "Warning on registering new event on environment : ['" + system + "','" + country + "','" + env + "'] " + me.getMessage().getDescription(), request);
                OutputMessage = me.getMessage().getDescription();
            }
            if (OutputMessage.equals("")) {
                msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_OK);
                msg.setDescription(msg.getDescription().replace("%ITEM%", ITEM).replace("%OPERATION%", OPERATION));
                answerItem.setResultMessage(msg);
            } else {
                msg = new MessageEvent(MessageEventEnum.DATA_OPERATION_OK);
                msg.setDescription(msg.getDescription().replace("%ITEM%", ITEM).replace("%OPERATION%", OPERATION).concat(" Just one warning : ").concat(OutputMessage));
                answerItem.setResultMessage(msg);
            }
        }
    }
    /**
     * Formating and returning the json result.
     */
    jsonResponse.put("messageType", answerItem.getResultMessage().getMessage().getCodeString());
    jsonResponse.put("message", answerItem.getResultMessage().getDescription());
    response.getWriter().print(jsonResponse);
    response.getWriter().flush();
}
Also used : ApplicationContext(org.springframework.context.ApplicationContext) JSONObject(org.json.JSONObject) PolicyFactory(org.owasp.html.PolicyFactory) MessageEvent(org.cerberus.engine.entity.MessageEvent) ILogEventService(org.cerberus.crud.service.ILogEventService) ICountryEnvParamService(org.cerberus.crud.service.ICountryEnvParamService) AnswerItem(org.cerberus.util.answer.AnswerItem) IEmailService(org.cerberus.service.email.IEmailService) CountryEnvParam(org.cerberus.crud.entity.CountryEnvParam) IBuildRevisionBatchService(org.cerberus.crud.service.IBuildRevisionBatchService)

Example 29 with CountryEnvParam

use of org.cerberus.crud.entity.CountryEnvParam in project cerberus-source by cerberustesting.

the class NewBuildRevisionV000 method processRequest.

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    String charset = request.getCharacterEncoding();
    ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
    /**
     * Adding Log entry.
     */
    ILogEventService logEventService = appContext.getBean(ILogEventService.class);
    logEventService.createForPublicCalls("/NewBuildRevisionV000", "CALL", "NewBuildRevisionV000 called : " + request.getRequestURL(), request);
    ICountryEnvParamService countryEnvParamService = appContext.getBean(ICountryEnvParamService.class);
    IInvariantService invariantService = appContext.getBean(IInvariantService.class);
    IBuildRevisionInvariantService buildRevisionInvariantService = appContext.getBean(IBuildRevisionInvariantService.class);
    IEmailService emailService = appContext.getBean(IEmailService.class);
    IEmailGenerationService emailGenerationService = appContext.getBean(IEmailGenerationService.class);
    ICountryEnvParam_logService countryEnvParam_logService = appContext.getBean(ICountryEnvParam_logService.class);
    IParameterService parameterService = appContext.getBean(IParameterService.class);
    // Parsing all parameters.
    String system = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("system"), "", charset);
    String country = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("country"), "", charset);
    String environment = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("environment"), "", charset);
    String build = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("build"), "", charset);
    String revision = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("revision"), "", charset);
    String helpMessage = "\nThis servlet is used to inform Cerberus that a new Build and Revision has been deployed on a system.\n\nParameter list :\n" + "- system [mandatory] : the system where the Build Revision has been deployed. [" + system + "]\n" + "- country [mandatory] : the country where the Build Revision has been deployed. You can use ALL if you want to perform the action for all countries that exist for the given system and environement. [" + country + "]\n" + "- environment [mandatory] : the environment where the Build Revision has been deployed. [" + environment + "]\n" + "- build [mandatory] : the build that has been deployed. [" + build + "]\n" + "- revision [mandatory] : the revision that has been deployed. [" + revision + "]\n";
    boolean error = false;
    // Checking the parameter validity. If application has been entered, does it exist ?
    if (system.equalsIgnoreCase("")) {
        out.println("Error - Parameter system is mandatory.");
        error = true;
    }
    if (!system.equalsIgnoreCase("") && !invariantService.isInvariantExist("SYSTEM", system)) {
        out.println("Error - System does not exist  : " + system);
        error = true;
    }
    if (environment.equalsIgnoreCase("")) {
        out.println("Error - Parameter environment is mandatory.");
        error = true;
    }
    if (!environment.equalsIgnoreCase("") && !invariantService.isInvariantExist("ENVIRONMENT", environment)) {
        out.println("Error - Environment does not exist  : " + environment);
        error = true;
    }
    if (country.equalsIgnoreCase("")) {
        out.println("Error - Parameter country is mandatory.");
        error = true;
    } else if (!country.equalsIgnoreCase(PARAMETERALL)) {
        if (!invariantService.isInvariantExist("COUNTRY", country)) {
            out.println("Error - Country does not exist  : " + country);
            error = true;
        }
        if (!error) {
            if (!countryEnvParamService.exist(system, country, environment)) {
                out.println("Error - System/Country/Environment does not exist : " + system + "/" + country + "/" + environment);
                error = true;
            }
        }
    }
    if (build.equalsIgnoreCase("")) {
        out.println("Error - Parameter build is mandatory.");
        error = true;
    }
    if (!build.equalsIgnoreCase("") && !buildRevisionInvariantService.exist(system, 1, build)) {
        out.println("Error - Build does not exist : " + build);
        error = true;
    }
    if (revision.equalsIgnoreCase("")) {
        out.println("Error - Parameter revision is mandatory.");
        error = true;
    }
    if (!revision.equalsIgnoreCase("") && !buildRevisionInvariantService.exist(system, 2, revision)) {
        out.println("Error - Revision does not exist : " + revision);
        error = true;
    }
    // Starting the database update only when no blocking error has been detected.
    if (error == false) {
        /**
         * Getting the list of objects to treat.
         */
        // We update the object.
        MessageEvent msg = new MessageEvent(MessageEventEnum.GENERIC_OK);
        Answer finalAnswer = new Answer(msg);
        AnswerList answerList = new AnswerList();
        if (country.equalsIgnoreCase(PARAMETERALL)) {
            country = null;
        }
        answerList = countryEnvParamService.readByVarious(system, country, environment, null, null, null);
        finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, (Answer) answerList);
        for (CountryEnvParam cepData : (List<CountryEnvParam>) answerList.getDataList()) {
            // Email Calculation. Email must be calcuated before we update the Build and revision in order to have the old build revision still available in the mail.
            String OutputMessage = "";
            Email email = null;
            try {
                email = emailGenerationService.generateRevisionChangeEmail(cepData.getSystem(), cepData.getCountry(), cepData.getEnvironment(), build, revision);
            } catch (Exception ex) {
                LOG.warn(Infos.getInstance().getProjectNameAndVersion() + " - Exception catched.", ex);
                logEventService.createForPrivateCalls("/NewBuildRevisionV000", "NEWBUILDREV", "Warning on New Build/Revision environment : ['" + cepData.getSystem() + "','" + cepData.getCountry() + "','" + cepData.getEnvironment() + "'] " + ex.getMessage(), request);
                OutputMessage = ex.getMessage();
            }
            /**
             * For each object, we can update it.
             */
            cepData.setBuild(build);
            cepData.setRevision(revision);
            cepData.setActive(true);
            Answer answerUpdate = countryEnvParamService.update(cepData);
            if (!(answerUpdate.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode()))) {
                /**
                 * Object could not be updated. We stop here and report the
                 * error.
                 */
                finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, answerUpdate);
            } else {
                /**
                 * Update was successful.
                 */
                // Adding Log entry.
                logEventService.createForPrivateCalls("/NewBuildRevisionV000", "UPDATE", "Updated CountryEnvParam : ['" + cepData.getSystem() + "','" + cepData.getCountry() + "','" + cepData.getEnvironment() + "']", request);
                // Adding CountryEnvParam Log entry.
                countryEnvParam_logService.createLogEntry(cepData.getSystem(), cepData.getCountry(), cepData.getEnvironment(), build, revision, "New Build Revision.", "PublicCall");
                /**
                 * Email notification.
                 */
                try {
                    // Sending the email
                    emailService.sendHtmlMail(email);
                } catch (Exception e) {
                    LOG.warn(Infos.getInstance().getProjectNameAndVersion() + " - Exception catched.", e);
                    logEventService.createForPrivateCalls("/NewBuildRevisionV000", "NEWBUILDREV", "Warning on New Build/Revision environment : ['" + cepData.getSystem() + "','" + cepData.getCountry() + "','" + cepData.getEnvironment() + "'] " + e.getMessage(), request);
                    OutputMessage = e.getMessage();
                }
                if (OutputMessage.equals("")) {
                    msg = new MessageEvent(MessageEventEnum.GENERIC_OK);
                    Answer answerSMTP = new AnswerList(msg);
                    finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, answerSMTP);
                } else {
                    msg = new MessageEvent(MessageEventEnum.GENERIC_WARNING);
                    msg.setDescription(msg.getDescription().replace("%REASON%", OutputMessage + " when sending email for " + cepData.getSystem() + "/" + cepData.getCountry() + "/" + cepData.getEnvironment()));
                    Answer answerSMTP = new AnswerList(msg);
                    finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, answerSMTP);
                }
            }
        }
        /**
         * Formating and returning the result.
         */
        out.println(finalAnswer.getResultMessage().getMessage().getCodeString() + " - " + finalAnswer.getResultMessage().getDescription());
    } else {
        // In case of errors, we display the help message.
        out.println(helpMessage);
    }
}
Also used : AnswerList(org.cerberus.util.answer.AnswerList) Email(org.cerberus.service.email.entity.Email) MessageEvent(org.cerberus.engine.entity.MessageEvent) IInvariantService(org.cerberus.crud.service.IInvariantService) IParameterService(org.cerberus.crud.service.IParameterService) ServletException(javax.servlet.ServletException) IOException(java.io.IOException) IBuildRevisionInvariantService(org.cerberus.crud.service.IBuildRevisionInvariantService) ICountryEnvParam_logService(org.cerberus.crud.service.ICountryEnvParam_logService) Answer(org.cerberus.util.answer.Answer) ApplicationContext(org.springframework.context.ApplicationContext) ILogEventService(org.cerberus.crud.service.ILogEventService) AnswerList(org.cerberus.util.answer.AnswerList) List(java.util.List) ICountryEnvParamService(org.cerberus.crud.service.ICountryEnvParamService) IEmailService(org.cerberus.service.email.IEmailService) CountryEnvParam(org.cerberus.crud.entity.CountryEnvParam) IEmailGenerationService(org.cerberus.service.email.IEmailGenerationService) PrintWriter(java.io.PrintWriter)

Example 30 with CountryEnvParam

use of org.cerberus.crud.entity.CountryEnvParam in project cerberus-source by cerberustesting.

the class NewEnvironmentEventV000 method processRequest.

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    String charset = request.getCharacterEncoding();
    ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
    /**
     * Adding Log entry.
     */
    ILogEventService logEventService = appContext.getBean(ILogEventService.class);
    logEventService.createForPublicCalls("/NewEnvironmentEventV000", "CALL", "NewEnvironmentEventV000 called : " + request.getRequestURL(), request);
    ICountryEnvParamService countryEnvParamService = appContext.getBean(ICountryEnvParamService.class);
    IInvariantService invariantService = appContext.getBean(IInvariantService.class);
    IBatchInvariantService batchInvariantService = appContext.getBean(IBatchInvariantService.class);
    IBuildRevisionBatchService buildRevisionBatchService = appContext.getBean(IBuildRevisionBatchService.class);
    IEmailService emailService = appContext.getBean(IEmailService.class);
    // Parsing all parameters.
    String system = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("system"), "", charset);
    String country = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("country"), "", charset);
    String environment = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("environment"), "", charset);
    String event = ParameterParserUtil.parseStringParamAndDecodeAndSanitize(request.getParameter("event"), "", charset);
    String helpMessage = "\nThis servlet is used to inform Cerberus about an event that occured on a given environment. For example when a treatment has been executed.\n\nParameter list :\n" + "- system [mandatory] : the system where the Build Revision has been deployed. [" + system + "]\n" + "- country [mandatory] : the country where the Build Revision has been deployed. You can use ALL if you want to perform the action for all countries that exist for the given system and environement. [" + country + "]\n" + "- environment [mandatory] : the environment where the Build Revision has been deployed. [" + environment + "]\n" + "- event [mandatory] : the event that should be recorded.. [" + event + "]\n";
    boolean error = false;
    // Checking the parameter validity. If application has been entered, does it exist ?
    if (system.equalsIgnoreCase("")) {
        out.println("Error - Parameter system is mandatory.");
        error = true;
    }
    if (!system.equalsIgnoreCase("") && !invariantService.isInvariantExist("SYSTEM", system)) {
        out.println("Error - System does not exist  : " + system);
        error = true;
    }
    if (environment.equalsIgnoreCase("")) {
        out.println("Error - Parameter environment is mandatory.");
        error = true;
    }
    if (!environment.equalsIgnoreCase("") && !invariantService.isInvariantExist("ENVIRONMENT", environment)) {
        out.println("Error - Environment does not exist  : " + environment);
        error = true;
    }
    if (country.equalsIgnoreCase("")) {
        out.println("Error - Parameter country is mandatory.");
        error = true;
    } else if (!country.equalsIgnoreCase(PARAMETERALL)) {
        if (!invariantService.isInvariantExist("COUNTRY", country)) {
            out.println("Error - Country does not exist  : " + country);
            error = true;
        }
        if (!error) {
            if (!countryEnvParamService.exist(system, country, environment)) {
                out.println("Error - System/Country/Environment does not exist : " + system + "/" + country + "/" + environment);
                error = true;
            }
        }
    }
    if (event.equalsIgnoreCase("")) {
        out.println("Error - Parameter event is mandatory.");
        error = true;
    }
    if (!event.equalsIgnoreCase("") && !batchInvariantService.exist(event)) {
        out.println("Error - Event does not exist  : " + event);
        error = true;
    }
    // Starting the database update only when no blocking error has been detected.
    if (error == false) {
        /**
         * Getting the list of objects to treat.
         */
        MessageEvent msg = new MessageEvent(MessageEventEnum.GENERIC_OK);
        Answer finalAnswer = new Answer(msg);
        AnswerList answerList = new AnswerList();
        if (country.equalsIgnoreCase(PARAMETERALL)) {
            country = null;
        }
        answerList = countryEnvParamService.readByVarious(system, country, environment, null, null, "Y");
        finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, (Answer) answerList);
        for (CountryEnvParam cepData : (List<CountryEnvParam>) answerList.getDataList()) {
            /**
             * For each object, we can update it.
             */
            // Adding CountryEnvParam Log entry.
            buildRevisionBatchService.create(cepData.getSystem(), cepData.getCountry(), cepData.getEnvironment(), cepData.getBuild(), cepData.getRevision(), event);
            /**
             * Email notification.
             */
            String OutputMessage = "";
            MessageEvent me = emailService.generateAndSendNewChainEmail(cepData.getSystem(), cepData.getCountry(), cepData.getEnvironment(), event);
            if (!"OK".equals(me.getMessage().getCodeString())) {
                LOG.warn(Infos.getInstance().getProjectNameAndVersion() + " - Exception catched." + me.getMessage().getDescription());
                logEventService.createForPrivateCalls("/NewEnvironmentEventV000", "NEW", "Warning on New environment event : ['" + cepData.getSystem() + "','" + cepData.getCountry() + "','" + cepData.getEnvironment() + "'] " + me.getMessage().getDescription(), request);
                OutputMessage = me.getMessage().getDescription();
            }
            if (OutputMessage.equals("")) {
                msg = new MessageEvent(MessageEventEnum.GENERIC_OK);
                Answer answerSMTP = new AnswerList(msg);
                finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, answerSMTP);
            } else {
                msg = new MessageEvent(MessageEventEnum.GENERIC_WARNING);
                msg.setDescription(msg.getDescription().replace("%REASON%", OutputMessage + " when sending email for " + cepData.getSystem() + "/" + cepData.getCountry() + "/" + cepData.getEnvironment()));
                Answer answerSMTP = new AnswerList(msg);
                finalAnswer = AnswerUtil.agregateAnswer(finalAnswer, answerSMTP);
            }
        }
        /**
         * Formating and returning the result.
         */
        out.println(finalAnswer.getResultMessage().getMessage().getCodeString() + " - " + finalAnswer.getResultMessage().getDescription());
    } else {
        // In case of errors, we display the help message.
        out.println(helpMessage);
    }
}
Also used : AnswerList(org.cerberus.util.answer.AnswerList) MessageEvent(org.cerberus.engine.entity.MessageEvent) IInvariantService(org.cerberus.crud.service.IInvariantService) IBatchInvariantService(org.cerberus.crud.service.IBatchInvariantService) Answer(org.cerberus.util.answer.Answer) ApplicationContext(org.springframework.context.ApplicationContext) ILogEventService(org.cerberus.crud.service.ILogEventService) AnswerList(org.cerberus.util.answer.AnswerList) List(java.util.List) ICountryEnvParamService(org.cerberus.crud.service.ICountryEnvParamService) IEmailService(org.cerberus.service.email.IEmailService) CountryEnvParam(org.cerberus.crud.entity.CountryEnvParam) PrintWriter(java.io.PrintWriter) IBuildRevisionBatchService(org.cerberus.crud.service.IBuildRevisionBatchService)

Aggregations

CountryEnvParam (org.cerberus.crud.entity.CountryEnvParam)30 MessageEvent (org.cerberus.engine.entity.MessageEvent)17 ICountryEnvParamService (org.cerberus.crud.service.ICountryEnvParamService)14 AnswerItem (org.cerberus.util.answer.AnswerItem)12 JSONObject (org.json.JSONObject)12 ArrayList (java.util.ArrayList)11 ILogEventService (org.cerberus.crud.service.ILogEventService)11 ApplicationContext (org.springframework.context.ApplicationContext)11 IFactoryCountryEnvParam (org.cerberus.crud.factory.IFactoryCountryEnvParam)10 AnswerList (org.cerberus.util.answer.AnswerList)10 List (java.util.List)8 Answer (org.cerberus.util.answer.Answer)8 CerberusException (org.cerberus.exception.CerberusException)7 Connection (java.sql.Connection)6 PreparedStatement (java.sql.PreparedStatement)6 ResultSet (java.sql.ResultSet)6 SQLException (java.sql.SQLException)6 TestCase (org.cerberus.crud.entity.TestCase)6 IEmailService (org.cerberus.service.email.IEmailService)6 PolicyFactory (org.owasp.html.PolicyFactory)6