use of org.cerberus.crud.service.ITestCaseCountryService in project cerberus-source by cerberustesting.
the class RunTestCase method doGet.
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
// Calling Servlet Transversal Util.
ServletUtil.servletStart(request);
/**
* Adding Log entry.
*/
ILogEventService logEventService = appContext.getBean(ILogEventService.class);
logEventService.createForPublicCalls("/RunTestCase", "CALL", "RunTestCase called : " + request.getRequestURL(), request);
// Tool
// Selenium IP
String ss_ip = "";
// Selenium Host (optional)
String ss_ip_user = "";
// Selenium Password (optional)
String ss_ip_pass = "";
// Selenium Port
String ss_p = "";
String browser = "";
String robotDecli = "";
String version = "";
String platform = "";
String robot = "";
String active = "";
String timeout = "";
String userAgent = "";
String screenSize = "";
boolean synchroneous = true;
int getPageSource = 0;
int getSeleniumLog = 0;
String manualExecution = "N";
List<RobotCapability> capabilities = null;
// Test
String test = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("Test"), "");
String testCase = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("TestCase"), "");
String country = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("Country"), "");
String environment = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("Environment"), "");
// Test Dev Environment
boolean manualURL = ParameterParserUtil.parseBooleanParam(request.getParameter("manualURL"), false);
String myHost = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("myhost"), "");
String myContextRoot = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("mycontextroot"), "");
String myLoginRelativeURL = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("myloginrelativeurl"), "");
// TODO find another solution
myLoginRelativeURL = myLoginRelativeURL.replace("=", "=");
String myEnvData = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("myenvdata"), "");
// Execution
String tag = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("Tag"), "");
String outputFormat = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("outputformat"), "compact");
int screenshot = ParameterParserUtil.parseIntegerParam(request.getParameter("screenshot"), 1);
int verbose = ParameterParserUtil.parseIntegerParam(request.getParameter("verbose"), 0);
timeout = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("timeout"), "");
synchroneous = ParameterParserUtil.parseBooleanParam(request.getParameter("synchroneous"), false);
getPageSource = ParameterParserUtil.parseIntegerParam(request.getParameter("pageSource"), 1);
getSeleniumLog = ParameterParserUtil.parseIntegerParam(request.getParameter("seleniumLog"), 1);
manualExecution = ParameterParserUtil.parseStringParam(request.getParameter("manualExecution"), "N");
int numberOfRetries = ParameterParserUtil.parseIntegerParam(request.getParameter("retries"), 0);
screenSize = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("screenSize"), "");
robot = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("robot"), "");
ss_ip = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("ss_ip"), "");
ss_p = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("ss_p"), "");
browser = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("Browser"), ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("browser"), ""));
version = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("version"), "");
platform = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("platform"), "");
// hidden parameters.
long idFromQueue = ParameterParserUtil.parseIntegerParam(request.getParameter("IdFromQueue"), 0);
String executor = ParameterParserUtil.parseStringParamAndSanitize(request.getParameter("executor"), ParameterParserUtil.parseStringParamAndSanitize(request.getRemoteUser(), null));
String helpMessage = "\nThis servlet is used to start the execution of a test case.\n" + "Parameter list :\n" + "- Test [mandatory] : Test to execute. [" + test + "]\n" + "- TestCase [mandatory] : Test Case reference to execute. [" + testCase + "]\n" + "- Country [mandatory] : Country where the test case will execute. [" + country + "]\n" + "- Environment : Environment where the test case will execute. This parameter is mandatory only if manualURL is not set to Y. [" + environment + "]\n" + "- robot : robot name on which the test will be executed. [" + robot + "]\n" + "- ss_ip : Host of the Robot where the test will be executed. (Can be overwriten if robot is defined) [" + ss_ip + "]\n" + "- ss_p : Port of the Robot. (Can be overwriten if robot is defined) [" + ss_p + "]\n" + "- browser : Browser to use for the execution. (Can be overwriten if robot is defined) [" + browser + "]\n" + "- version : Version to use for the execution. (Can be overwriten if robot is defined) [" + version + "]\n" + "- platform : Platform to use for the execution. (Can be overwriten if robot is defined) [" + platform + "]\n" + "- screenSize : Size of the screen to set for the execution. [" + screenSize + "]\n" + "- manualURL : Activate or not the Manual URL of the application to execute. If activated the 4 parameters after (myhost, mycontextroot, myloginrelativeurl, myenvdata) are necessary. [" + manualURL + "]\n" + "- myhost : Host of the application to test (only used when manualURL is feed). [" + myHost + "]\n" + "- mycontextroot : Context root of the application to test (only used when manualURL is feed). [" + myContextRoot + "]\n" + "- myloginrelativeurl : Relative login URL of the application (only used when manualURL is feed). [" + myLoginRelativeURL + "]\n" + "- myenvdata : Environment where to get the test data when a manualURL is defined. (only used when manualURL is feed) [" + myEnvData + "]\n" + "- Tag : Tag that will be stored on the execution. [" + tag + "]\n" + "- outputformat : Format of the output of the execution. [" + outputFormat + "]\n" + "- screenshot : Activate or not the screenshots. [" + screenshot + "]\n" + "- verbose : Verbose level of the execution. [" + verbose + "]\n" + "- timeout : Timeout used for the action. If empty, the default value will be the one configured in parameter table. [" + timeout + "]\n" + "- synchroneous : Synchroneous define if the servlet wait for the end of the execution to report its execution. [" + synchroneous + "\n" + "- pageSource : Record Page Source during the execution. [" + getPageSource + "]\n" + "- seleniumLog : Get the SeleniumLog at the end of the execution. [" + getSeleniumLog + "]\n" + "- manualExecution : Execute testcase in manual mode. [" + manualExecution + "]\n" + "- retries : Number of tries if the result is not OK. [" + numberOfRetries + "]\n";
boolean error = false;
String errorMessage = "";
// test, testcase and country parameters are mandatory
if (StringUtils.isBlank(test)) {
errorMessage += "Error - Parameter test is mandatory. ";
error = true;
}
if (StringUtils.isBlank(testCase)) {
errorMessage += "Error - Parameter testCase is mandatory. ";
error = true;
}
if (!StringUtils.isBlank(tag) && tag.length() > 255) {
errorMessage += "Error - Parameter tag value is too big. Tag cannot be larger than 255 Characters. Currently has : " + tag.length();
error = true;
}
if (StringUtils.isBlank(country)) {
errorMessage += "Error - Parameter country is mandatory. ";
error = true;
}
// environment is mandatory when manualURL is not activated.
if (StringUtils.isBlank(environment) && !manualURL) {
errorMessage += "Error - Parameter environment is mandatory (or use the manualURL parameter). ";
error = true;
}
// We check that execution is not desactivated by cerberus_automaticexecution_enable parameter.
IParameterService parameterService = appContext.getBean(IParameterService.class);
if (!(parameterService.getParameterBooleanByKey("cerberus_automaticexecution_enable", "", true))) {
errorMessage += "Error - Execution disable by configuration (cerberus_automaticexecution_enable <> Y). ";
error = true;
LOG.info("Execution request ignored by cerberus_automaticexecution_enable parameter. " + test + " / " + testCase);
}
// If Robot is feeded, we check it exist. If it exist, we overwrite the associated parameters.
if (!StringUtil.isNullOrEmpty(robot)) {
IRobotService robotService = appContext.getBean(IRobotService.class);
try {
Robot robObj = robotService.readByKey(robot);
// If Robot parameter is defined and we can find the robot, we overwrite the corresponding parameters.
ss_ip = ParameterParserUtil.parseStringParam(robObj.getHost(), ss_ip);
ss_ip_user = robObj.getHostUser();
ss_ip_pass = robObj.getHostPassword();
ss_p = ParameterParserUtil.parseStringParam(String.valueOf(robObj.getPort()), ss_p);
browser = ParameterParserUtil.parseStringParam(robObj.getBrowser(), browser);
robotDecli = ParameterParserUtil.parseStringParam(robObj.getRobotDecli(), "");
if (StringUtil.isNullOrEmpty(robotDecli)) {
robotDecli = robObj.getRobot();
}
version = ParameterParserUtil.parseStringParam(robObj.getVersion(), version);
platform = ParameterParserUtil.parseStringParam(robObj.getPlatform(), platform);
active = robObj.getActive();
userAgent = robObj.getUserAgent();
capabilities = robObj.getCapabilities();
screenSize = robObj.getScreenSize();
} catch (CerberusException ex) {
errorMessage += "Error - Robot [" + robot + "] does not exist. ";
error = true;
}
} else {
robotDecli = browser;
}
// We cannot execute a testcase on a desactivated Robot.
if (active.equals("N")) {
errorMessage += "Error - Robot is not Active. ";
error = true;
}
// verify the format of the ScreenSize. It must be 2 integer separated by a *. For example : 1024*768
if (!"".equals(screenSize)) {
if (!screenSize.contains("*")) {
errorMessage += "Error - ScreenSize format is not Correct. It must be 2 Integer separated by a *. ";
error = true;
} else {
try {
String screenWidth = screenSize.split("\\*")[0];
String screenLength = screenSize.split("\\*")[1];
Integer.parseInt(screenWidth);
Integer.parseInt(screenLength);
} catch (Exception e) {
errorMessage += "Error - ScreenSize format is not Correct. It must be 2 Integer separated by a *. ";
error = true;
}
}
}
// check if the test case is to be executed in the specific parameters
try {
ITestCaseCountryService tccService = appContext.getBean(ITestCaseCountryService.class);
TestCaseCountry tcc = tccService.findTestCaseCountryByKey(test, testCase, country);
if (tcc == null) {
error = true;
}
} catch (CerberusException ex) {
error = true;
errorMessage += "Error - Test Case is not selected for country. ";
}
// Create Tag when exist.
if (!StringUtil.isNullOrEmpty(tag)) {
// We create or update it.
ITagService tagService = appContext.getBean(ITagService.class);
tagService.createAuto(tag, "", executor);
}
if (!error) {
// TODO:FN debug messages to be removed
LOG.debug("STARTED: Test " + test + "-" + testCase);
IRunTestCaseService runTestCaseService = appContext.getBean(IRunTestCaseService.class);
IFactoryTestCase factoryTCase = appContext.getBean(IFactoryTestCase.class);
IFactoryTestCaseExecution factoryTCExecution = appContext.getBean(IFactoryTestCaseExecution.class);
IFactoryTestCaseExecutionQueue factoryTCExecutionQueue = appContext.getBean(IFactoryTestCaseExecutionQueue.class);
ITestCaseExecutionService tces = appContext.getBean(ITestCaseExecutionService.class);
ITestCaseService tcs = appContext.getBean(ITestCaseService.class);
TestCase tCase = factoryTCase.create(test, testCase);
// Building Execution Object.
TestCaseExecution tCExecution = factoryTCExecution.create(0, test, testCase, null, null, null, environment, country, browser, version, platform, "", 0, 0, "", "", "", null, ss_ip, null, ss_p, tag, verbose, screenshot, getPageSource, getSeleniumLog, synchroneous, timeout, outputFormat, null, Infos.getInstance().getProjectNameAndVersion(), tCase, null, null, manualURL, myHost, myContextRoot, myLoginRelativeURL, myEnvData, ss_ip, ss_p, null, new MessageGeneral(MessageGeneralEnum.EXECUTION_PE_TESTSTARTED), executor, numberOfRetries, screenSize, capabilities, "", "", "", "", "", manualExecution, userAgent, 0, "", robotDecli);
tCExecution.setSeleniumIPUser(ss_ip_user);
tCExecution.setSeleniumIPPassword(ss_ip_pass);
/**
* Set IdFromQueue
*/
try {
tCExecution.setQueueID(idFromQueue);
TestCaseExecutionQueue queueExecution = factoryTCExecutionQueue.create(idFromQueue, test, testCase, country, environment, robot, ss_ip, ss_p, browser, version, platform, screenSize, 0, myHost, myContextRoot, myLoginRelativeURL, myEnvData, tag, screenshot, verbose, timeout, getPageSource, getSeleniumLog, 0, numberOfRetries, manualExecution, executor, null, null, null);
tCExecution.setTestCaseExecutionQueue(queueExecution);
} catch (FactoryCreationException ex) {
LOG.error(ex);
}
/**
* Set UUID
*/
ExecutionUUID executionUUIDObject = appContext.getBean(ExecutionUUID.class);
UUID executionUUID = UUID.randomUUID();
executionUUIDObject.setExecutionUUID(executionUUID.toString(), tCExecution);
tCExecution.setExecutionUUID(executionUUID.toString());
LOG.info("Execution Requested : UUID=" + executionUUID);
/**
* Execution of the testcase.
*/
LOG.debug("Start execution " + tCExecution.getId());
tCExecution = runTestCaseService.runTestCase(tCExecution);
/**
* Clean memory in case testcase has not been launched(Remove all
* object put in memory)
*/
try {
if (tCExecution.getId() == 0) {
executionUUIDObject.removeExecutionUUID(tCExecution.getExecutionUUID());
LOG.debug("Clean ExecutionUUID");
}
} catch (Exception ex) {
LOG.error("Exception cleaning Memory: ", ex);
}
/**
* Execution is finished we report the result.
*/
long runID = tCExecution.getId();
if (outputFormat.equalsIgnoreCase("gui")) {
// HTML GUI output. either the detailed execution page or an error page when the execution is not created.
if (runID > 0) {
// Execution has been created.
response.sendRedirect("TestCaseExecution.jsp?executionId=" + runID);
} else {
// Execution was not even created.
response.setContentType("text/html");
out.println("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><title>Test Execution Result</title></head>");
out.println("<body>");
out.println("<table>");
out.println("<tr><td>RunID</td><td><span id='RunID'>" + runID + "</span></td></tr>");
out.println("<tr><td>IdFromQueue</td><td><b><span id='IdFromQueue'>" + tCExecution.getQueueID() + "</span></b></td></tr>");
out.println("<tr><td>Test</td><td><span id='Test'>" + test + "</span></td></tr>");
out.println("<tr><td>TestCase</td><td><span id='TestCase'>" + testCase + "</span></td></tr>");
out.println("<tr><td>Country</td><td><span id='Country'>" + country + "</span></td></tr>");
out.println("<tr><td>Environment</td><td><span id='Environment'>" + environment + "</span></td></tr>");
out.println("<tr><td>TimestampStart</td><td><span id='TimestampStart'>" + new Timestamp(tCExecution.getStart()) + "</span></td></tr>");
out.println("<tr><td>TimestampEnd</td><td><span id='TimestampEnd'>" + new Timestamp(tCExecution.getEnd()) + "</span></td></tr>");
out.println("<tr><td>OutputFormat</td><td><span id='OutputFormat'>" + outputFormat + "</span></td></tr>");
out.println("<tr><td>Verbose</td><td><span id='Verbose'>" + verbose + "</span></td></tr>");
out.println("<tr><td>Screenshot</td><td><span id='Screenshot'>" + screenshot + "</span></td></tr>");
out.println("<tr><td>PageSource</td><td><span id='PageSource'>" + getPageSource + "</span></td></tr>");
out.println("<tr><td>SeleniumLog</td><td><span id='SeleniumLog'>" + getSeleniumLog + "</span></td></tr>");
out.println("<tr><td>Robot</td><td><span id='Robot'>" + robot + "</span></td></tr>");
out.println("<tr><td>Selenium Server IP</td><td><span id='SeleniumIP'>" + ss_ip + "</span></td></tr>");
out.println("<tr><td>Selenium Server Port</td><td><span id='SeleniumPort'>" + ss_p + "</span></td></tr>");
out.println("<tr><td>Timeout</td><td><span id='Timeout'>" + timeout + "</span></td></tr>");
out.println("<tr><td>Synchroneous</td><td><span id='Synchroneous'>" + synchroneous + "</span></td></tr>");
out.println("<tr><td>Browser</td><td><span id='Browser'>" + browser + "</span></td></tr>");
out.println("<tr><td>Version</td><td><span id='Version'>" + version + "</span></td></tr>");
out.println("<tr><td>Platform</td><td><span id='Platform'>" + platform + "</span></td></tr>");
out.println("<tr><td>Screen Size</td><td><span id='screenSize'>" + screenSize + "</span></td></tr>");
out.println("<tr><td>Number of Retry</td><td><span id='nbretry'>" + numberOfRetries + "</span></td></tr>");
out.println("<tr><td>ManualURL</td><td><span id='ManualURL'>" + tCExecution.isManualURL() + "</span></td></tr>");
out.println("<tr><td>MyHost</td><td><span id='MyHost'>" + tCExecution.getMyHost() + "</span></td></tr>");
out.println("<tr><td>MyContextRoot</td><td><span id='MyContextRoot'>" + tCExecution.getMyContextRoot() + "</span></td></tr>");
out.println("<tr><td>MyLoginRelativeURL</td><td><span id='MyLoginRelativeURL'>" + tCExecution.getMyLoginRelativeURL() + "</span></td></tr>");
out.println("<tr><td>myEnvironmentData</td><td><span id='myEnvironmentData'>" + tCExecution.getEnvironmentData() + "</span></td></tr>");
out.println("<tr><td>ReturnCode</td><td><b><span id='ReturnCodeDescription'>" + tCExecution.getResultMessage().getCode() + "</span></b></td></tr>");
out.println("<tr><td>ReturnCodeDescription</td><td><b><span id='ReturnCodeDescription'>" + tCExecution.getResultMessage().getDescription() + "</span></b></td></tr>");
out.println("<tr><td>ControlStatus</td><td><b><span id='ReturnCodeMessage'>" + tCExecution.getResultMessage().getCodeString() + "</span></b></td></tr>");
out.println("<tr><td></td><td></td></tr>");
out.println("</table><br><br>");
out.println("<table border>");
out.println("<tr>" + "<td><input id=\"ButtonRetry\" type=\"button\" value=\"Retry\" onClick=\"window.location.reload()\"></td>" + "<td><input id=\"ButtonBack\" type=\"button\" value=\"Go Back\" onClick=\"window.history.back()\"></td>" + "<td><input id=\"ButtonOpenTC\" type=\"button\" value=\"Open Test Case\" onClick=\"window.open('TestCaseScript.jsp?test=" + test + "&testcase=" + testCase + "')\"></td>" + "</tr>");
out.println("</table>");
out.println("</body>");
out.println("</html>");
}
} else if (outputFormat.equalsIgnoreCase("redirectToReport")) {
// Redirect to the reporting page by tag.
response.sendRedirect("./ReportingExecutionByTag.jsp?Tag=" + StringUtil.encodeAsJavaScriptURIComponent(tag));
} else if (outputFormat.equalsIgnoreCase("verbose-txt")) {
// Text verbose output.
response.setContentType("text/plain");
String separator = " = ";
out.println("RunID" + separator + runID);
out.println("QueueID" + separator + idFromQueue);
out.println("Test" + separator + test);
out.println("TestCase" + separator + testCase);
out.println("Country" + separator + country);
out.println("Environment" + separator + environment);
out.println("Time Start" + separator + new Timestamp(tCExecution.getStart()));
out.println("Time End" + separator + new Timestamp(tCExecution.getEnd()));
out.println("OutputFormat" + separator + outputFormat);
out.println("Verbose" + separator + verbose);
out.println("Screenshot" + separator + screenshot);
out.println("PageSource" + separator + getPageSource);
out.println("SeleniumLog" + separator + getSeleniumLog);
out.println("Robot" + separator + robot);
out.println("Selenium Server IP" + separator + ss_ip);
out.println("Selenium Server Port" + separator + ss_p);
out.println("Timeout" + separator + timeout);
out.println("Synchroneous" + separator + synchroneous);
out.println("Browser" + separator + browser);
out.println("Version" + separator + version);
out.println("Platform" + separator + platform);
out.println("ScreenSize" + separator + screenSize);
out.println("Nb Of Retry" + separator + numberOfRetries);
out.println("ManualURL" + separator + tCExecution.isManualURL());
out.println("MyHost" + separator + tCExecution.getMyHost());
out.println("MyContextRoot" + separator + tCExecution.getMyContextRoot());
out.println("MyLoginRelativeURL" + separator + tCExecution.getMyLoginRelativeURL());
out.println("myEnvironmentData" + separator + tCExecution.getEnvironmentData());
out.println("ReturnCode" + separator + tCExecution.getResultMessage().getCode());
out.println("ReturnCodeDescription" + separator + tCExecution.getResultMessage().getDescription());
out.println("ControlStatus" + separator + tCExecution.getResultMessage().getCodeString());
} else if (outputFormat.equalsIgnoreCase("verbose-json")) {
// JSON verbose output.
response.setContentType("application/json");
TestCaseExecution t = (TestCaseExecution) tces.readByKeyWithDependency(tCExecution.getId()).getItem();
out.print(tCExecution.toJson(true).toString());
} else {
// Default behaviour when not outputformat is defined : compact mode.
response.setContentType("text/plain");
DateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT_DISPLAY);
out.println(df.format(tCExecution.getStart()) + " - " + runID + " [" + test + "|" + testCase + "|" + country + "|" + environment + "] : '" + tCExecution.getResultMessage().getCodeString() + "' - " + tCExecution.getResultMessage().getCode() + " " + tCExecution.getResultMessage().getDescription());
}
} else {
// Error occured in the servlet.
if (outputFormat.equalsIgnoreCase("verbose-txt")) {
// Text verbose output.
response.setContentType("text/plain");
String separator = " = ";
out.println("RunID" + separator + 0);
out.println("QueueID" + separator + idFromQueue);
out.println("Test" + separator + test);
out.println("TestCase" + separator + testCase);
out.println("Country" + separator + country);
out.println("Environment" + separator + environment);
out.println("OutputFormat" + separator + outputFormat);
out.println("Verbose" + separator + verbose);
out.println("Screenshot" + separator + screenshot);
out.println("PageSource" + separator + getPageSource);
out.println("SeleniumLog" + separator + getSeleniumLog);
out.println("Robot" + separator + robot);
out.println("Selenium Server IP" + separator + ss_ip);
out.println("Selenium Server Port" + separator + ss_p);
out.println("Timeout" + separator + timeout);
out.println("Synchroneous" + separator + synchroneous);
out.println("Browser" + separator + browser);
out.println("Version" + separator + version);
out.println("Platform" + separator + platform);
out.println("ScreenSize" + separator + screenSize);
out.println("Nb Of Retry" + separator + numberOfRetries);
out.println("ManualURL" + separator + manualURL);
out.println("MyHost" + separator + myHost);
out.println("MyContextRoot" + separator + myContextRoot);
out.println("MyLoginRelativeURL" + separator + myLoginRelativeURL);
out.println("myEnvironmentData" + separator + myEnvData);
out.println("ReturnCode" + separator + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getCode());
out.println("ReturnCodeDescription" + separator + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getDescription() + " " + errorMessage);
out.println("ControlStatus" + separator + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getCodeString());
} else {
// In case of errors, we display the help message.
response.setContentType("text/plain");
DateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT_DISPLAY);
String errorMessageFinal = df.format(new Date()) + " - " + 0 + " [" + test + "|" + testCase + "|" + country + "|" + environment + "] : '" + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getCodeString() + "' - " + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getCode() + " " + MessageGeneralEnum.EXECUTION_FA_SERVLETVALIDATONS.getDescription() + " " + errorMessage;
out.println(errorMessageFinal);
}
}
}
use of org.cerberus.crud.service.ITestCaseCountryService in project cerberus-source by cerberustesting.
the class UpdateTestCaseWithDependencies 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
* @throws org.cerberus.exception.CerberusException
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, CerberusException {
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
String initialTest = request.getParameter("informationInitialTest");
String initialTestCase = request.getParameter("informationInitialTestCase");
String test = request.getParameter("informationTest");
String testCase = request.getParameter("informationTestCase");
TestCase tc = getTestCaseFromParameter(request, appContext, test, testCase);
boolean duplicate = false;
ITestService tService = appContext.getBean(ITestService.class);
ITestCaseService tcService = appContext.getBean(ITestCaseService.class);
ITestCaseCountryService tccService = appContext.getBean(ITestCaseCountryService.class);
ITestCaseCountryPropertiesService tccpService = appContext.getBean(ITestCaseCountryPropertiesService.class);
ITestCaseStepService tcsService = appContext.getBean(ITestCaseStepService.class);
ITestCaseStepActionService tcsaService = appContext.getBean(ITestCaseStepActionService.class);
ITestCaseStepActionControlService tcsacService = appContext.getBean(ITestCaseStepActionControlService.class);
IInvariantService invariantService = appContext.getBean(IInvariantService.class);
IUserService userService = appContext.getBean(IUserService.class);
IUserGroupService userGroupService = appContext.getBean(IUserGroupService.class);
/**
* Get User and Groups of this user
*/
User user = userService.findUserByKey(request.getUserPrincipal().getName());
// List<UserGroup> userGroupList = groupService.findGroupByUser(user);
List<UserGroup> userGroupList = userGroupService.convert(userGroupService.readByUser(user.getLogin()));
List<String> groupList = new ArrayList();
for (UserGroup group : userGroupList) {
groupList.add(group.getGroup());
}
/**
* Verify the Test is the same than initialTest If it is the same > Do
* nothing If it is not the same > Verify if test already exists If not
* exist > create it If exist > do nothing
*/
if (!tc.getTest().equals(initialTest)) {
if (tService.findTestByKey(tc.getTest()) == null) {
if (groupList.contains("TestAdmin")) {
Test newTest = tService.findTestByKey(initialTest);
newTest.setTest(tc.getTest());
tService.convert(tService.create(newTest));
} else {
response.sendError(403, MessageGeneralEnum.GUI_TEST_CREATION_NOT_HAVE_RIGHT.getDescription());
return;
}
}
}
if (!tc.getTest().equals(initialTest) || !tc.getTestCase().equals(initialTestCase)) {
duplicate = true;
}
/**
* If the testcase is a duplication, set the creator as the one which
* duplicate the testcase and the status in the initial one.
*/
if (duplicate) {
tc.setUsrCreated(user.getLogin());
// TODO: handle if the response does not turn ok
AnswerList answer = invariantService.readByIdname("TCSTATUS");
tc.setStatus(((List<Invariant>) answer.getDataList()).get(0).getValue());
}
/**
* If not duplicate and test in Working status and user with no admin
* right, raise an error
*/
if (!duplicate && "WORKING".equals(tc.getStatus()) && !groupList.contains("TestAdmin")) {
response.sendError(403, MessageGeneralEnum.GUI_TESTCASE_NON_ADMIN_SAVE_WORKING_TESTCASE.getDescription());
return;
}
/**
* Verify testcase is the same than initialTestCase If it is the same >
* update If it is not the same, > verify if testcase already exist If
* it already exist > Send Error If it do not already exists > Create it
*/
if (!duplicate) {
tcService.updateTestCase(tc);
} else if (tcService.findTestCaseByKey(tc.getTest(), tc.getTestCase()) != null) {
response.sendError(403, MessageGeneralEnum.GUI_TESTCASE_DUPLICATION_ALREADY_EXISTS.getDescription());
return;
} else {
tcService.createTestCase(tc);
}
/**
* For the list of testcase country verify it exists. If it does not
* exists > create it If it exist, verify if it's the
*/
List<TestCaseCountry> tccFromPage = getTestCaseCountryFromParameter(request, appContext, test, testCase);
List<TestCaseCountry> tccFromDtb = tccService.findTestCaseCountryByTestTestCase(initialTest, initialTestCase);
/**
* Iterate on (TestCaseCountry From Page - TestCaseCountry From
* Database) If TestCaseCountry in Database has same key : Update and
* remove from the list. If TestCaseCountry in database does ot exist :
* Insert it.
*/
List<TestCaseCountry> tccToUpdateOrInsert = new ArrayList(tccFromPage);
tccToUpdateOrInsert.removeAll(tccFromDtb);
List<TestCaseCountry> tccToUpdateOrInsertToIterate = new ArrayList(tccToUpdateOrInsert);
for (TestCaseCountry tccDifference : tccToUpdateOrInsertToIterate) {
for (TestCaseCountry tccInDatabase : tccFromDtb) {
if (tccDifference.hasSameKey(tccInDatabase)) {
tccToUpdateOrInsert.remove(tccDifference);
}
}
}
tccService.insertListTestCaseCountry(tccToUpdateOrInsert);
/**
* Iterate on (TestCaseCountry From Database - TestCaseCountry From
* Page). If TestCaseCountry in Page has same key : remove from the
* list. Then delete the list of TestCaseCountry
*/
if (!duplicate) {
List<TestCaseCountry> tccToDelete = new ArrayList(tccFromDtb);
tccToDelete.removeAll(tccFromPage);
List<TestCaseCountry> tccToDeleteToIterate = new ArrayList(tccToDelete);
for (TestCaseCountry tccDifference : tccToDeleteToIterate) {
for (TestCaseCountry tccInPage : tccFromPage) {
if (tccDifference.hasSameKey(tccInPage)) {
tccToDelete.remove(tccDifference);
}
}
}
tccService.deleteListTestCaseCountry(tccToDelete);
}
/**
* For the list of testcase country verify it exists. If it does not
* exists > create it If it exist, verify if it's the
*/
List<TestCaseCountryProperties> tccpFromPage = getTestCaseCountryPropertiesFromParameter(request, appContext, test, testCase);
List<TestCaseCountryProperties> tccpFromDtb = tccpService.findListOfPropertyPerTestTestCase(initialTest, initialTestCase);
/**
* Iterate on (TestCaseCountryProperties From Page -
* TestCaseCountryProperties From Database) If TestCaseCountryProperties
* in Database has same key : Update and remove from the list. If
* TestCaseCountryProperties in database does ot exist : Insert it.
*/
List<TestCaseCountryProperties> tccpToUpdateOrInsert = new ArrayList(tccpFromPage);
tccpToUpdateOrInsert.removeAll(tccpFromDtb);
List<TestCaseCountryProperties> tccpToUpdateOrInsertToIterate = new ArrayList(tccpToUpdateOrInsert);
for (TestCaseCountryProperties tccpDifference : tccpToUpdateOrInsertToIterate) {
for (TestCaseCountryProperties tccpInDatabase : tccpFromDtb) {
if (tccpDifference.hasSameKey(tccpInDatabase)) {
tccpService.updateTestCaseCountryProperties(tccpDifference);
tccpToUpdateOrInsert.remove(tccpDifference);
}
}
}
tccpService.insertListTestCaseCountryProperties(tccpToUpdateOrInsert);
/**
* Iterate on (TestCaseCountryProperties From Database -
* TestCaseCountryProperties From Page). If TestCaseCountryProperties in
* Page has same key : remove from the list. Then delete the list of
* TestCaseCountryProperties
*/
if (!duplicate) {
List<TestCaseCountryProperties> tccpToDelete = new ArrayList(tccpFromDtb);
tccpToDelete.removeAll(tccpFromPage);
List<TestCaseCountryProperties> tccpToDeleteToIterate = new ArrayList(tccpToDelete);
for (TestCaseCountryProperties tccpDifference : tccpToDeleteToIterate) {
for (TestCaseCountryProperties tccpInPage : tccpFromPage) {
if (tccpDifference.hasSameKey(tccpInPage)) {
tccpToDelete.remove(tccpDifference);
}
}
}
tccpService.deleteListTestCaseCountryProperties(tccpToDelete);
}
/*
* Get steps, actions and controls from page by:
* - generating a new step, action or control number,
* - setting the correct related step and action for action or control
*/
List<TestCaseStep> tcsFromPage = getTestCaseStepFromParameter(request, appContext, test, testCase, duplicate);
List<TestCaseStepAction> tcsaFromPage = new ArrayList();
List<TestCaseStepActionControl> tcsacFromPage = new ArrayList();
int nextStepNumber = getMaxStepNumber(tcsFromPage);
for (TestCaseStep tcs : tcsFromPage) {
if (tcs.getStep() == -1) {
tcs.setStep(++nextStepNumber);
}
if (tcs.getTestCaseStepAction() != null) {
int nextSequenceNumber = getMaxSequenceNumber(tcs.getTestCaseStepAction());
for (TestCaseStepAction tcsa : tcs.getTestCaseStepAction()) {
if (tcsa.getSequence() == -1) {
tcsa.setSequence(++nextSequenceNumber);
}
tcsa.setStep(tcs.getStep());
if (tcsa.getTestCaseStepActionControl() != null) {
int nextControlNumber = getMaxControlNumber(tcsa.getTestCaseStepActionControl());
for (TestCaseStepActionControl tscac : tcsa.getTestCaseStepActionControl()) {
if (tscac.getControlSequence() == -1) {
tscac.setControlSequence(++nextControlNumber);
}
tscac.setStep(tcs.getStep());
tscac.setSequence(tcsa.getSequence());
}
tcsacFromPage.addAll(tcsa.getTestCaseStepActionControl());
}
}
tcsaFromPage.addAll(tcs.getTestCaseStepAction());
}
}
/*
* Create, update or delete step, action and control according to the needs
*/
List<TestCaseStep> tcsFromDtb = new ArrayList(tcsService.getListOfSteps(initialTest, initialTestCase));
tcsService.compareListAndUpdateInsertDeleteElements(tcsFromPage, tcsFromDtb, duplicate);
List<TestCaseStepAction> tcsaFromDtb = new ArrayList(tcsaService.findTestCaseStepActionbyTestTestCase(initialTest, initialTestCase));
tcsaService.compareListAndUpdateInsertDeleteElements(tcsaFromPage, tcsaFromDtb, duplicate);
List<TestCaseStepActionControl> tcsacFromDtb = new ArrayList(tcsacService.findControlByTestTestCase(initialTest, initialTestCase));
tcsacService.compareListAndUpdateInsertDeleteElements(tcsacFromPage, tcsacFromDtb, duplicate);
/**
* Adding Log entry.
*/
ILogEventService logEventService = appContext.getBean(LogEventService.class);
logEventService.createForPrivateCalls("/UpdateTestCase", "UPDATE", "Update testcase : ['" + tc.getTest() + "'|'" + tc.getTestCase() + "']", request);
String encodedTest = URLEncoder.encode(tc.getTest(), "UTF-8");
String encodedTestCase = URLEncoder.encode(tc.getTestCase(), "UTF-8");
response.sendRedirect(response.encodeRedirectURL("TestCase.jsp?Load=Load&Test=" + encodedTest + "&TestCase=" + encodedTestCase));
}
use of org.cerberus.crud.service.ITestCaseCountryService in project cerberus-source by cerberustesting.
the class UseTestCaseStep method processRequest.
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, CerberusException {
response.setContentType("text/html;charset=UTF-8");
appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
ITestCaseStepActionService testCaseStepActionService = appContext.getBean(ITestCaseStepActionService.class);
ITestCaseStepService testCaseStepService = appContext.getBean(ITestCaseStepService.class);
IFactoryTestCaseStep testCaseStepFactory = appContext.getBean(IFactoryTestCaseStep.class);
ITestCaseCountryService testCaseCountry = appContext.getBean(ITestCaseCountryService.class);
ITestCaseCountryPropertiesService testCaseCountryProperties = appContext.getBean(ITestCaseCountryPropertiesService.class);
this.database = appContext.getBean(DatabaseSpring.class);
/**
* Get Parameters Test : Target Test TestCase : Target TestCase Step :
* Target Step fromTest : from Test fromTestCase : from TestCase
* fromStep : from Step
*/
String test = request.getParameter("Test");
String testCase = request.getParameter("TestCase");
Integer step = Integer.valueOf(request.getParameter("Step"));
String loop = request.getParameter("Loop");
String conditionOper = request.getParameter("ConditionOper");
String conditionVal1 = request.getParameter("ConditionVal1");
String conditionVal2 = request.getParameter("ConditionVal2");
String description = request.getParameter("Description");
String fromTest = request.getParameter("FromTest");
String fromTestCase = request.getParameter("FromTestCase");
Integer fromStep = Integer.valueOf(request.getParameter("FromStep"));
String importProperty = "N";
if (request.getParameter("ImportProperty") != null) {
LOG.debug(request.getParameter("ImportProperty"));
importProperty = request.getParameter("ImportProperty");
}
TestCaseStep tcs = testCaseStepFactory.create(test, testCase, step, step, loop, conditionOper, conditionVal1, conditionVal2, description, "Y", fromTest, fromTestCase, fromStep, null);
/**
* Import Step, properties
*/
LOG.debug("Use Step");
testCaseStepService.create(tcs);
if (importProperty.equalsIgnoreCase("Y")) {
/**
* Get List of Country of the origin testcase and the destination
* Testcase
*/
List<String> tccListString = null;
List<String> tccFromListString = null;
List<TestCaseCountryProperties> tccpList = null;
if (importProperty.equalsIgnoreCase("Y")) {
tccListString = testCaseCountry.findListOfCountryByTestTestCase(test, testCase);
tccFromListString = testCaseCountry.findListOfCountryByTestTestCase(test, testCase);
}
/**
* For the country defined in the destination testcase, insert the
* properties of the origine testcase
*/
// retrieve list of property name used in the step
List<String> propertyNamesOfStep = new ArrayList<String>();
List<TestCaseStepAction> testCaseStepActions = testCaseStepActionService.getListOfAction(fromTest, fromTestCase, fromStep);
for (TestCaseStepAction action : testCaseStepActions) {
if (!propertyNamesOfStep.contains(action.getValue2())) {
propertyNamesOfStep.add(action.getValue2());
}
}
LOG.debug("Rewrite TestCaseCountryProperties");
if (tccListString != null) {
tccListString.retainAll(tccFromListString);
if (tccListString.size() > 0 && propertyNamesOfStep.size() > 0) {
List<TestCaseCountryProperties> tccpToImport = new ArrayList();
for (String country : tccListString) {
tccpList = testCaseCountryProperties.findListOfPropertyPerTestTestCaseCountry(fromTest, fromTestCase, country);
for (TestCaseCountryProperties tccp : tccpList) {
// only add property of the test case if it is used by the step
if (propertyNamesOfStep.contains(tccp.getProperty())) {
tccp.setTest(test);
tccp.setTestCase(testCase);
tccpToImport.add(tccp);
}
}
}
// if the list of property to import is not empty, insert them.
if (!tccpToImport.isEmpty()) {
testCaseCountryProperties.insertListTestCaseCountryProperties(tccpToImport);
}
}
}
}
response.sendRedirect("TestCase.jsp?Load=Load&Test=" + test + "&TestCase=" + testCase);
}
use of org.cerberus.crud.service.ITestCaseCountryService in project cerberus-source by cerberustesting.
the class ImportPropertyOfATestCaseToAnOtherTestCase 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 {
JSONObject jsonResponse = new JSONObject();
MessageEvent rs = new MessageEvent(MessageEventEnum.DATA_OPERATION_OK);
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
ITestCaseCountryPropertiesService testCaseCountryPropertiesService = appContext.getBean(TestCaseCountryPropertiesService.class);
ITestCaseCountryService testCaseCountryService = appContext.getBean(TestCaseCountryService.class);
try {
String fromTest = request.getParameter("fromtest");
String fromTestCase = request.getParameter("fromtestcase");
String propertyName = request.getParameter("property");
String toTest = request.getParameter("totest");
String toTestCase = request.getParameter("totestcase");
// We retrieve all country of the destination TestCase
List<String> toCountriesAll = testCaseCountryService.findListOfCountryByTestTestCase(toTest, toTestCase);
if (toCountriesAll != null && toCountriesAll.size() > 0) {
// Variable for the countries of a property of the source TestCase
List<String> fromCountriesProp;
// Variable for the countries of a property of the destination TestCase
List<String> toCountriesProp;
// Variable for the countryProperty will be retrieve
TestCaseCountryProperties countryProperties;
// List of all country of the destination test for the current property
List<String> toCountries = new ArrayList<String>();
toCountries.addAll(toCountriesAll);
// Retrieve the country of the destination TestCase for the property,
// if not empty remove it (property aleady exists for these countries)
toCountriesProp = testCaseCountryPropertiesService.findCountryByPropertyNameAndTestCase(toTest, toTestCase, propertyName);
if (toCountriesProp != null && toCountriesProp.size() > 0) {
toCountries.removeAll(toCountriesProp);
}
// Retrieve the country of the source TestCase for the property, if empty do nothing
fromCountriesProp = testCaseCountryPropertiesService.findCountryByPropertyNameAndTestCase(fromTest, fromTestCase, propertyName);
if (fromCountriesProp != null && fromCountriesProp.size() > 0) {
// Only retain country in the two TestCase for the property
toCountries.retainAll(fromCountriesProp);
// If countries list is empty do nothing
if (toCountries.size() > 0) {
List<TestCaseCountryProperties> listOfPropertiesToInsert = new ArrayList<TestCaseCountryProperties>();
for (String country : toCountries) {
try {
// retrieve the source property for the current country
countryProperties = testCaseCountryPropertiesService.findTestCaseCountryPropertiesByKey(fromTest, fromTestCase, country, propertyName);
if (countryProperties != null) {
// change the TestCase information to the destination TestCase
countryProperties.setTest(toTest);
countryProperties.setTestCase(toTestCase);
listOfPropertiesToInsert.add(countryProperties);
// Insert the new property
// testCaseCountryPropertiesService.insertTestCaseCountryProperties(countryProperties);
}
} catch (CerberusException ex) {
LOG.debug(ex.toString());
}
}
// insert the new property for all countries specified
Answer answer = testCaseCountryPropertiesService.createListTestCaseCountryPropertiesBatch(listOfPropertiesToInsert);
rs = answer.getResultMessage();
// then a new entry should be added by the log service
if (answer.isCodeEquals(MessageEventEnum.DATA_OPERATION_OK.getCode())) {
// Adding Log entry.
ILogEventService logEventService = appContext.getBean(LogEventService.class);
logEventService.createForPrivateCalls("/ImportPropertyOfATestCaseToAnOtherTestCase", "CREATE", "Override from imported test step: " + propertyName, request);
}
}
} else {
rs = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_EXPECTED);
rs.setDescription(rs.getDescription().replace("%ITEM%", "Property ").replace("%OPERATION%", "CREATE").replace("%REASON%", "Property was not imported. Please check if is" + " correctly defined on the imported step."));
}
} else {
rs = new MessageEvent(MessageEventEnum.DATA_OPERATION_ERROR_EXPECTED);
rs.setDescription(rs.getDescription().replace("%ITEM%", "Property ").replace("%OPERATION%", "CREATE").replace("%REASON%", "No countries were defined for the test case."));
}
// sets the message returned by the operations
jsonResponse.put("messageType", rs.getMessage().getCodeString());
jsonResponse.put("message", rs.getDescription());
response.setContentType("application/json");
response.getWriter().print(jsonResponse);
response.getWriter().flush();
} catch (JSONException ex) {
LOG.warn(ex);
// returns a default error message with the json format that is able to be parsed by the client-side
response.getWriter().print(AnswerUtil.createGenericErrorAnswer());
}
}
use of org.cerberus.crud.service.ITestCaseCountryService in project cerberus-source by cerberustesting.
the class ImportTestCaseStep method processRequest.
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, CerberusException {
response.setContentType("text/html;charset=UTF-8");
appContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
ITestCaseStepService testCaseStepService = appContext.getBean(ITestCaseStepService.class);
ITestCaseStepActionService testCaseStepActionService = appContext.getBean(ITestCaseStepActionService.class);
ITestCaseStepActionControlService testCaseStepActionControlService = appContext.getBean(ITestCaseStepActionControlService.class);
ITestCaseCountryService testCaseCountry = appContext.getBean(ITestCaseCountryService.class);
ITestCaseCountryPropertiesService testCaseCountryProperties = appContext.getBean(ITestCaseCountryPropertiesService.class);
this.database = appContext.getBean(DatabaseSpring.class);
/**
* Get Parameters Test : Target Test TestCase : Target TestCase Step :
* Target Step fromTest : from Test fromTestCase : from TestCase
* fromStep : from Step
*/
String test = request.getParameter("Test");
String testCase = request.getParameter("TestCase");
Integer step = Integer.valueOf(request.getParameter("Step"));
String fromTest = request.getParameter("FromTest");
String fromTestCase = request.getParameter("FromTestCase");
Integer fromStep = Integer.valueOf(request.getParameter("FromStep"));
String importProperty = "N";
if (request.getParameter("ImportProperty") != null) {
LOG.debug(request.getParameter("ImportProperty"));
importProperty = request.getParameter("ImportProperty");
}
/**
* Get TestCaseStep, List of TestCaseStepAction and List of
* TestCaseStepActionControl from Test, Testcase, Step
*/
TestCaseStep fromTcs = testCaseStepService.findTestCaseStep(fromTest, fromTestCase, fromStep);
List<TestCaseStepAction> fromTcsa = testCaseStepActionService.getListOfAction(fromTest, fromTestCase, fromStep);
List<TestCaseStepActionControl> fromTcsac = testCaseStepActionControlService.findControlByTestTestCaseStep(fromTest, fromTestCase, fromStep);
/**
* Get List of Country of the origin testcase and the destination
* Testcase
*/
List<String> tccListString = null;
List<String> tccFromListString = null;
List<TestCaseCountryProperties> tccpList = null;
if (importProperty.equalsIgnoreCase("Y")) {
tccListString = testCaseCountry.findListOfCountryByTestTestCase(test, testCase);
tccFromListString = testCaseCountry.findListOfCountryByTestTestCase(test, testCase);
}
/**
* Modify the object with the target test, testcase, step, country
*/
LOG.debug("Rewrite TestCaseStep");
fromTcs.setTest(test);
fromTcs.setTestCase(testCase);
fromTcs.setStep(step);
LOG.debug("Rewrite TestCaseStepAction");
List<TestCaseStepAction> tcsaToImport = new ArrayList();
// retrieve list of property name used in the step
List<String> propertyNamesOfStep = new ArrayList<String>();
for (TestCaseStepAction tcsa : fromTcsa) {
tcsa.setTest(test);
tcsa.setTestCase(testCase);
tcsa.setStep(step);
tcsaToImport.add(tcsa);
if (!propertyNamesOfStep.contains(tcsa.getValue2())) {
propertyNamesOfStep.add(tcsa.getValue2());
}
}
LOG.debug("Rewrite TestCaseStepActionControl");
List<TestCaseStepActionControl> tcsacToImport = new ArrayList();
for (TestCaseStepActionControl tcsac : fromTcsac) {
tcsac.setTest(test);
tcsac.setTestCase(testCase);
tcsac.setStep(step);
tcsacToImport.add(tcsac);
}
/**
* For the country defined in the destination testcase, insert the
* properties of the origine testcase
*/
List<TestCaseCountryProperties> tccpToImport = new ArrayList();
if (importProperty.equalsIgnoreCase("Y")) {
LOG.debug("Rewrite TestCaseCountryProperties");
if (tccListString != null) {
tccListString.retainAll(tccFromListString);
if (!tccListString.isEmpty()) {
for (String country : tccListString) {
tccpList = testCaseCountryProperties.findListOfPropertyPerTestTestCaseCountry(fromTest, fromTestCase, country);
for (TestCaseCountryProperties tccp : tccpList) {
if (propertyNamesOfStep.contains(tccp.getProperty())) {
tccp.setTest(test);
tccp.setTestCase(testCase);
tccpToImport.add(tccp);
}
}
}
}
}
}
/**
* Import Step, List of testcasestepaction, List of
* testcasestepactioncontrol
*/
LOG.debug("Import Step");
testCaseStepService.create(fromTcs);
testCaseStepActionService.insertListTestCaseStepAction(tcsaToImport);
testCaseStepActionControlService.insertListTestCaseStepActionControl(tcsacToImport);
if (importProperty.equalsIgnoreCase("Y")) {
// testCaseCountry.insertListTestCaseCountry(tccToImport);
testCaseCountryProperties.insertListTestCaseCountryProperties(tccpToImport);
}
response.sendRedirect("TestCase.jsp?Load=Load&Test=" + test + "&TestCase=" + testCase);
}
Aggregations