111111111

package com.bonait.ealm.tomp.action.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.bonait.ealm.core.web.action.EalmBaseAction;
import com.bonait.ealm.tomp.model.test.NewTestCase;
import com.bonait.ealm.tomp.model.test.NewTestCaseStep;
import com.bonait.ealm.tomp.model.test.ReuseTestCase;
import com.bonait.ealm.tomp.model.test.ReuseTestCaseStep;
import com.bonait.ealm.tomp.model.testprocess.SystemModule;
import com.bonait.ealm.tomp.model.testprocess.TestCase;
import com.bonait.ealm.tomp.model.testprocess.TestCaseStep;
import com.bonait.ealm.tomp.service.test.PublicTestCaseService;
import com.bonait.ealm.tomp.service.test.ReuseTestCaseService;
import com.bonait.ealm.tomp.service.testprocess.SystemModuleService;
import com.bonait.ealm.tomp.service.testprocess.TestCaseService;
import com.htsoft.core.command.QueryFilter;

import flexjson.JSONSerializer;
import flexjson.transformer.DateTransformer;

@Component("TestCaseReuseAction")
@Action(value = "testCaseReuse")
@Scope("prototype")
@Results({ @Result(name = "reuseTestCaseInfo", type = "dispatcher", location = "/pages/testCase/reuseTestCaseInfo.jsp") })
public class TestCaseReuseAction extends EalmBaseAction {
	private final static Logger logger = Logger
			.getLogger(TestCaseReuseAction.class);

	@Resource
	private PublicTestCaseService publicTestCaseService;
	@Resource
	private ReuseTestCaseService reuseTestCaseService;
	@Resource
	private TestCaseService testCaseService;
	@Resource
	private SystemModuleService systemModuleService;
	private Long id;

	private ReuseTestCase reuseTestCase;
	private ReuseTestCase frontReuseTestCase;

	/**
	 * 封装要复用到个人用例模版的对象
	 * 
	 * @param reuseNewTestCase
	 * @param moduleId
	 * @param tcName
	 * @param editTcName
	 * @return
	 */
	public NewTestCase addTestCase(ReuseTestCase reuseNewTestCase,
			String moduleId, String tcName, String editTcName) {

		NewTestCase newTestCase = new NewTestCase();
		newTestCase.setCondition(reuseNewTestCase.getCondition());
		newTestCase.setDataGroupId(reuseNewTestCase.getDataGroupId());
		newTestCase.setExecuteWay(reuseNewTestCase.getExecuteWay());
		newTestCase.setModuleId(new Long(moduleId));
		newTestCase.setPriority(reuseNewTestCase.getPriority());
		newTestCase.setRelateFlag(reuseNewTestCase.getRelateFlag());
		newTestCase.setTcDesc(reuseNewTestCase.getTcDesc());
		newTestCase.setState(reuseNewTestCase.getState());
		newTestCase.setTcType(reuseNewTestCase.getTcType());
		newTestCase.setTcSn(reuseNewTestCase.getTcSn());
		newTestCase.setCreateId(reuseNewTestCase.getCreateId());
		newTestCase.setCreater(reuseNewTestCase.getCreater());
		if (tcName.equals("") || tcName == null) {
			newTestCase.setTcName(editTcName);
		} else {
			newTestCase.setTcName(tcName);
		}
		return newTestCase;
	}

	/**
	 * 将复用后的用例添加到个人用例模版
	 * 
	 * @return reuseTestCaseService
	 */
	public String addTestCaseToPersonal() {
		// 要复用用例的Id
		String id = getRequest().getParameter("ids");
		// 用例名称
		String tcName = getRequest().getParameter("tcName");
		// 替换前的名称
		String editTcName = getRequest().getParameter("editTcName");
		// 要复用到那个模块的Id
		String moduleId = getRequest().getParameter("moduleId");
		// 根据id查找复用用例
		ReuseTestCase reuseNewTestCase = reuseTestCaseService.get(Long
				.parseLong(id));
		// 解析用例步骤
		String steps = delSteps(reuseNewTestCase);
		// 调用封装方法
		NewTestCase newTestCase = addTestCase(reuseNewTestCase, moduleId,
				tcName, editTcName);
		// 保存到个人用例
		publicTestCaseService.save(newTestCase, steps);
		return SUCCESS;
	}

	/**
	 * 从公共用例选择要复用的用例
	 * 
	 * @param newTestCase
	 * @param state
	 */
	public void dealData(NewTestCase newTestCase, String state) {
		ReuseTestCase tempNewTestCase = new ReuseTestCase();
		tempNewTestCase.setCondition(newTestCase.getCondition());
		tempNewTestCase.setCreateId(newTestCase.getCreateId());
		tempNewTestCase.setCreater(newTestCase.getCreater());
		tempNewTestCase.setExecuteWay(newTestCase.getExecuteWay());
		tempNewTestCase.setExpertResults(newTestCase.getExpertResults());
		tempNewTestCase.setPriority(newTestCase.getPriority());
		tempNewTestCase.setRelateFlag(newTestCase.getRelateFlag());
		tempNewTestCase.setSetpDesc(newTestCase.getStepDesc());
		tempNewTestCase.setState(state);// 用于用例是否被复用 (01 未复用 02 已复用)
		tempNewTestCase.setTcDesc(newTestCase.getTcDesc());
		tempNewTestCase.setTcName(newTestCase.getTcName());
		tempNewTestCase.setTcSn(newTestCase.getTcSn());
		tempNewTestCase.setTcType(newTestCase.getTcType());
		// tempNewTestCase.setEditTcName(null);
		Set<ReuseTestCaseStep> tempTestCaseSteps = new HashSet<ReuseTestCaseStep>();
		Set<NewTestCaseStep> newTestCaseSteps = newTestCase.getTestCaseSteps();
		for (Iterator<NewTestCaseStep> iterator = newTestCaseSteps.iterator(); iterator
				.hasNext();) {
			NewTestCaseStep newTestCaseStep = iterator.next();
			ReuseTestCaseStep tempTestCaseStep = new ReuseTestCaseStep();
			tempTestCaseStep.setExpectResult(newTestCaseStep.getExpectResult());
			tempTestCaseStep.setSort(newTestCaseStep.getSort());
			tempTestCaseStep.setStepDesc(newTestCaseStep.getStepDesc());
			tempTestCaseSteps.add(tempTestCaseStep);
		}

		reuseTestCaseService.save(tempNewTestCase, tempTestCaseSteps);
	}
	//
	public void dealData2(TestCase newTestCase, String state) {
		ReuseTestCase tempNewTestCase = new ReuseTestCase();
		tempNewTestCase.setCondition(newTestCase.getCondition());
		tempNewTestCase.setCreateId(newTestCase.getCreateId());
		tempNewTestCase.setCreater(newTestCase.getCreater());
		tempNewTestCase.setExecuteWay(newTestCase.getExecuteWay());
//		tempNewTestCase.setExpertResults(newTestCase.getExpertResults());
		tempNewTestCase.setPriority(newTestCase.getPriority());
		tempNewTestCase.setRelateFlag(newTestCase.getRelateFlag());
		tempNewTestCase.setSetpDesc(newTestCase.getStepDesc());
		tempNewTestCase.setState(state);// 用于用例是否被复用 (01 未复用 02 已复用)
		tempNewTestCase.setTcDesc(newTestCase.getTcDesc());
		tempNewTestCase.setTcName(newTestCase.getTcName());
		tempNewTestCase.setTcSn(newTestCase.getTcSn());
		tempNewTestCase.setTcType(newTestCase.getTcType());
		// tempNewTestCase.setEditTcName(null);
		Set<ReuseTestCaseStep> tempTestCaseSteps = new HashSet<ReuseTestCaseStep>();
		Set<TestCaseStep> newTestCaseSteps = newTestCase.getTestCaseSteps();
		for (Iterator<TestCaseStep> iterator = newTestCaseSteps.iterator(); iterator
				.hasNext();) {
			TestCaseStep newTestCaseStep = iterator.next();
			ReuseTestCaseStep tempTestCaseStep = new ReuseTestCaseStep();
			tempTestCaseStep.setExpectResult(newTestCaseStep.getExpectResult());
			tempTestCaseStep.setSort(newTestCaseStep.getSort());
			tempTestCaseStep.setStepDesc(newTestCaseStep.getStepDesc());
			tempTestCaseSteps.add(tempTestCaseStep);
		}

		reuseTestCaseService.save(tempNewTestCase, tempTestCaseSteps);
	}
	//
	public void dealData3(TestCase newTestCase, String state) {
		ReuseTestCase tempNewTestCase = new ReuseTestCase();
		tempNewTestCase.setCondition(newTestCase.getCondition());
		tempNewTestCase.setCreateId(newTestCase.getCreateId());
		tempNewTestCase.setCreater(newTestCase.getCreater());
		tempNewTestCase.setExecuteWay(newTestCase.getExecuteWay());
//		tempNewTestCase.setExpertResults(newTestCase.getExpertResults());
		tempNewTestCase.setPriority(newTestCase.getPriority());
		tempNewTestCase.setRelateFlag(newTestCase.getRelateFlag());
		tempNewTestCase.setSetpDesc(newTestCase.getStepDesc());
		tempNewTestCase.setState(state);// 用于用例是否被复用 (01 未复用 02 已复用)
		tempNewTestCase.setTcDesc(newTestCase.getTcDesc());
		tempNewTestCase.setTcName(newTestCase.getTcName());
		tempNewTestCase.setTcSn(newTestCase.getTcSn());
		tempNewTestCase.setTcType(newTestCase.getTcType());
		// tempNewTestCase.setEditTcName(null);
		Set<ReuseTestCaseStep> tempTestCaseSteps = new HashSet<ReuseTestCaseStep>();
		Set<TestCaseStep> newTestCaseSteps = newTestCase.getTestCaseSteps();
		for (Iterator<TestCaseStep> iterator = newTestCaseSteps.iterator(); iterator
				.hasNext();) {
			TestCaseStep newTestCaseStep = iterator.next();
			ReuseTestCaseStep tempTestCaseStep = new ReuseTestCaseStep();
			tempTestCaseStep.setExpectResult(newTestCaseStep.getExpectResult());
			tempTestCaseStep.setSort(newTestCaseStep.getSort());
			tempTestCaseStep.setStepDesc(newTestCaseStep.getStepDesc());
			tempTestCaseSteps.add(tempTestCaseStep);
		}

		reuseTestCaseService.save(tempNewTestCase, tempTestCaseSteps);
	}

	/**
	 * 解析步骤
	 * 
	 * @param tempNewTestCase
	 * @return
	 */
	public String delSteps(ReuseTestCase tempNewTestCase) {
		StringBuffer sb = new StringBuffer("[");
		Set<ReuseTestCaseStep> tempTestCaseSteps = tempNewTestCase
				.getTestCaseSteps();
		for (Iterator<ReuseTestCaseStep> iterator = tempTestCaseSteps
				.iterator(); iterator.hasNext();) {
			ReuseTestCaseStep tempTestCaseStep = iterator.next();
			sb.append("{\"stepDesc\":" + "\"" + tempTestCaseStep.getStepDesc()
					+ "\"");
			sb.append(
					",\"expectResult\":" + "\""
							+ tempTestCaseStep.getExpectResult() + "\"")
					.append("},");

		}
		sb.deleteCharAt(sb.length() - 1);
		sb.append("]");
		return sb.toString();
	}

	public ReuseTestCase getFrontReuseTestCase() {
		return frontReuseTestCase;
	}

	public Long getId() {
		return id;
	}

	public ReuseTestCase getReuseTestCase() {
		return reuseTestCase;
	}

	/**
	 * 批量删除数据
	 * 
	 * @return
	 */
	public String multiDel() {
		String ids[] = getRequest().getParameterValues("ids");
		reuseTestCaseService.multiDel(ids);
		jsonString = "{success:true}";
		return SUCCESS;
	}

	/**
	 * 查询方法
	 * 
	 * @return
	 */
	public String queryList() {
		String state = getRequest().getParameter("state");
		QueryFilter filter = new QueryFilter(getRequest());
		List<ReuseTestCase> list = reuseTestCaseService.queryList(state,
				filter.getPagingBean());

		StringBuffer sb = (new StringBuffer("{success:true,'totalCounts':"))
				.append(filter.getPagingBean().getTotalItems()).append(
						",result:");
		JSONSerializer json = new JSONSerializer();
		json.transform(new DateTransformer("yyyy-MM-dd"), new String[] {
				"createTime", "updateTime" });
		sb.append(json.serialize(list));
		sb.append("}");
		setJsonString(sb.toString());
		jsonString = sb.toString();
		logger.debug(jsonString);

		return SUCCESS;
	}

	/**
	 * 复用后的查询方法
	 * 
	 * @return
	 */
	public String queryList1() {
		String state = getRequest().getParameter("state");
		QueryFilter filter = new QueryFilter(getRequest());
		List<ReuseTestCase> tempTestCases = reuseTestCaseService.queryList(
				state, filter.getPagingBean());
		List<ReuseTestCase> list = new ArrayList<ReuseTestCase>();
		List<Long> ids = new ArrayList<Long>();
		for (Iterator<ReuseTestCase> iterator = tempTestCases.iterator(); iterator
				.hasNext();) {
			ReuseTestCase testCase = iterator.next();
			ids.add(testCase.getTempTcId());
		}

		for (Iterator<ReuseTestCase> iterator = tempTestCases.iterator(); iterator
				.hasNext();) {
			ReuseTestCase testCase = iterator.next();
			if (testCase.getEditFrontId() != null) {
				ids.remove(testCase.getEditFrontId());
			}
		}
		for (int i = 0; i < ids.size(); i++) {
			ReuseTestCase tc = reuseTestCaseService.get(ids.get(i));
			if (tc.getEditFrontId() != null) {
				ReuseTestCase frontTc = reuseTestCaseService.get(tc
						.getEditFrontId());
				tc.setEditTcName(frontTc.getTcName());
			} else {
				tc.setEditTcName(tc.getTcName());
				tc.setTcName(null);
			}
			list.add(tc);
		}
		StringBuffer sb = (new StringBuffer("{success:true,'totalCounts':"))
				.append(filter.getPagingBean().getTotalItems()).append(
						",result:");
		JSONSerializer json = new JSONSerializer();
		json.transform(new DateTransformer("yyyy-MM-dd"), new String[] {
				"createTime", "updateTime" });
		sb.append(json.serialize(list));
		sb.append("}");
		setJsonString(sb.toString());
		jsonString = sb.toString();
		logger.debug(jsonString);

		return SUCCESS;
	}

	// 替换方法
	public void replace(ReuseTestCase tempNewTestCase, String str1,
			String replace) {
		ReuseTestCase testCase = new ReuseTestCase();
		testCase.setCreateId(tempNewTestCase.getCreateId());
		testCase.setCreater(tempNewTestCase.getCreater());
		testCase.setExecuteWay(tempNewTestCase.getExecuteWay());
		testCase.setPriority(tempNewTestCase.getPriority());
		testCase.setRelateFlag(tempNewTestCase.getRelateFlag());
		testCase.setModuleId(tempNewTestCase.getModuleId());
		testCase.setModuleName(tempNewTestCase.getModuleName());
		testCase.setTcType(tempNewTestCase.getTcType());
		testCase.setModuleDm(tempNewTestCase.getModuleDm());

		testCase.setpId(tempNewTestCase.getpId());
		testCase.setSysId(tempNewTestCase.getSysId());
		int num = 0;// 统计要替换的次数
		String tcName = tempNewTestCase.getTcName();
		String desc = tempNewTestCase.getTcDesc();
		String condition = tempNewTestCase.getCondition();
		String replaceName = null;
		String replaceDesc = null;
		String replaceCondition = null;
		if (tcName != null && !"".equals(tcName)) {
			if (tcName.contains(str1)) {
				replaceName = tcName.replaceAll(str1, replace);
				testCase.setTcName(replaceName);
				num++;
			} else {
				testCase.setTcName(tempNewTestCase.getTcName());
			}
		} else {
			testCase.setTcName("");
		}
		if (desc != null && !"".equals(desc)) {
			if (desc.contains(str1)) {
				replaceDesc = desc.replaceAll(str1, replace);
				testCase.setTcDesc(replaceDesc);
				num++;
			} else {
				testCase.setTcDesc(tempNewTestCase.getTcDesc());
			}
		} else {
			testCase.setTcDesc("");
		}
		if (condition != null && !"".equals(condition)) {
			if (condition.contains(str1)) {
				replaceCondition = condition.replaceAll(str1, replace);
				testCase.setCondition(replaceCondition);
				num++;
			} else {
				testCase.setCondition(tempNewTestCase.getCondition());
			}
		} else {
			testCase.setCondition("");
		}
		Set<ReuseTestCaseStep> tempTestCaseSteps = tempNewTestCase
				.getTestCaseSteps();
		Set<ReuseTestCaseStep> testCaseSteps = new HashSet<ReuseTestCaseStep>();
		if (tempTestCaseSteps != null) {
			for (Iterator<ReuseTestCaseStep> iterator = tempTestCaseSteps
					.iterator(); iterator.hasNext();) {
				ReuseTestCaseStep tempTestCaseStep = iterator.next();
				ReuseTestCaseStep testCaseStep = new ReuseTestCaseStep();
				testCaseStep.setSort(tempTestCaseStep.getSort());

				String expectResult = tempTestCaseStep.getExpectResult();
				String stepDesc = tempTestCaseStep.getStepDesc();
				String replaceExpectResult = null;
				String replaceStepDesc = null;
				if (expectResult.contains(str1)) {
					replaceExpectResult = expectResult
							.replaceAll(str1, replace);
					testCaseStep.setExpectResult(replaceExpectResult);
					num++;
				} else {
					testCaseStep.setExpectResult(tempTestCaseStep
							.getExpectResult());
				}
				if (stepDesc.contains(str1)) {
					replaceStepDesc = stepDesc.replaceAll(str1, replace);
					testCaseStep.setStepDesc(replaceStepDesc);
					num++;
				} else {
					testCaseStep.setStepDesc(tempTestCaseStep.getStepDesc());
				}
				testCaseSteps.add(testCaseStep);
			}
			if (num != 0) {
				testCase.setEditFrontId(tempNewTestCase.getTempTcId());
				testCase.setState("02");
				reuseTestCaseService.save(testCase, testCaseSteps);
			}
		}
	}

	public TestCase reuseDealData(ReuseTestCase temp, String tcName,
			String editTcName) {
		SystemModule systemModule = systemModuleService.get(temp.getModuleId());
		TestCase testCase = new TestCase();
		testCase.setCondition(temp.getCondition());
		testCase.setCreateId(temp.getCreateId());
		testCase.setCreater(temp.getCreater());
		testCase.setCreateTime(temp.getCreateTime());
		testCase.setExecuteWay(temp.getExecuteWay());
		testCase.setPriority(temp.getPriority());
		testCase.setRelateFlag(temp.getRelateFlag());
		testCase.setState("01");
		testCase.setSystemModule(systemModule);
		testCase.setTcDesc(temp.getTcDesc());
		if (tcName.equals("") || tcName == null) {
			testCase.setTcName(editTcName);
		} else {
			testCase.setTcName(tcName);
		}
		testCase.setTcSn("");
		testCase.setTcType(temp.getTcType());
		return testCase;
	}

	/**
	 * 将用例复用到具体的模块中
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public String reuserTestCase() {
		String tempTcId = getRequest().getParameter("tempTcId");
		String tempTcName = getRequest().getParameter("tcName");
		String tempEditTcName = getRequest().getParameter("editTcName");
		ReuseTestCase tempNewTestCase = reuseTestCaseService.get(Long
				.parseLong(tempTcId));
		String projectId = tempNewTestCase.getpId().toString();
		String sysId = tempNewTestCase.getSysId().toString();
		StringBuffer sb = new StringBuffer("[");
		Set<ReuseTestCaseStep> tempTestCaseSteps = tempNewTestCase
				.getTestCaseSteps();
		for (Iterator<ReuseTestCaseStep> iterator = tempTestCaseSteps
				.iterator(); iterator.hasNext();) {
			ReuseTestCaseStep tempTestCaseStep = iterator.next();
			sb.append("{\"stepDesc\":" + "\"" + tempTestCaseStep.getStepDesc()
					+ "\"");
			sb.append(
					",\"expectResult\":" + "\""
							+ tempTestCaseStep.getExpectResult() + "\"")
					.append("},");

		}
		sb.deleteCharAt(sb.length() - 1);
		sb.append("]");

		String moduleDm = tempNewTestCase.getModuleDm();
		TestCase testCase = reuseDealData(tempNewTestCase, tempTcName,
				tempEditTcName);
		try {

			Map params = new HashMap<String, Object>();
			params.put("testCase", testCase);
			params.put("projectId", projectId);
			params.put("sysId", sysId);
			params.put("testCaseSteps", sb.toString());
			params.put("moduleDm", moduleDm);
			setJsonString(testCaseService.save(params));
		} catch (Exception e) {
			logger.error("保存异常", e);
		}
		return SUCCESS;
	}

	/**
	 * 保存选择的用例
	 * save1
	 */
	public String save() {
		// 处理页面非正常关闭时,操作的不合理性
		QueryFilter filter = new QueryFilter(getRequest());
		// 查询所有的用例
		List<ReuseTestCase> oldList = reuseTestCaseService.queryList(null,
				filter.getPagingBean());
		// 在复用前在数据库中还有数据,将其先删除
		if (oldList.size() != 0) {
			String delIds[] = new String[oldList.size()];
			for (int j = 0; j < oldList.size(); j++) {
				ReuseTestCase temp = oldList.get(j);
				delIds[j] = temp.getTempTcId().toString();
				// System.out.println(delIds[j]);
			}
			reuseTestCaseService.multiDel(delIds);
		}
		// 选中要复用的用例id
		String ids[] = getRequest().getParameterValues("ids");
		int num = 0;
		if (ids != null && ids.length > 0) {
			for (int i = 0; i < ids.length; i++) {
				List<ReuseTestCase> list = reuseTestCaseService.queryList(null,
						filter.getPagingBean());
				Long tcId = new Long(ids[i]);
				NewTestCase newTestCase = publicTestCaseService.get(tcId);
				if (list.size() == 0) {
					dealData(newTestCase, "01");
					continue;
				} else {
					for (int j = 0; j < list.size(); j++) {
						ReuseTestCase temp = list.get(j);// 过滤重复项
						if (temp.getTcName().equals(newTestCase.getTcName())) {
							num++;
							break;
						}
					}
				}
				if (num == 0) {
					dealData(newTestCase, "01");
				}
			}
		}
		StringBuffer sb = (new StringBuffer("{success:true,'num':"));

		JSONSerializer json = new JSONSerializer();
		sb.append(json.serialize(num));
		sb.append("}");
		
		setJsonString(sb.toString());
		return SUCCESS;
	}
	/**
	 * 保存选择的用例
	 * save2
	 */
	public String save2() {
		// 处理页面非正常关闭时,操作的不合理性
		QueryFilter filter = new QueryFilter(getRequest());
		// 查询所有的用例
		List<ReuseTestCase> oldList = reuseTestCaseService.queryList(null,
				filter.getPagingBean());
		// 在复用前在数据库中还有数据,将其先删除
		if (oldList.size() != 0) {
			String delIds[] = new String[oldList.size()];
			for (int j = 0; j < oldList.size(); j++) {
				ReuseTestCase temp = oldList.get(j);
				delIds[j] = temp.getTempTcId().toString();
				// System.out.println(delIds[j]);
			}
			reuseTestCaseService.multiDel(delIds);
		}
		// 选中要复用的用例id
		String ids[] = getRequest().getParameterValues("ids");
		int num = 0;
		if (ids != null && ids.length > 0) {
			for (int i = 0; i < ids.length; i++) {
				List<ReuseTestCase> list = reuseTestCaseService.queryList(null,filter.getPagingBean());
				Long tcId = new Long(ids[i]);
//				NewTestCase newTestCase = publicTestCaseService.get(tcId); 
				TestCase testCase =testCaseService.get(tcId); 
//				2014-5-9 17:02:55
				if (list.size() == 0) {
					dealData2(testCase, "01");
					continue;
				} else {
					for (int j = 0; j < list.size(); j++) {
						ReuseTestCase temp = list.get(j);// 过滤重复项
						if (temp.getTcName().equals(testCase.getTcName())) {
							num++;
							break;
						}
					}
				}
				if (num == 0) {
					dealData2(testCase, "01");
				}
			}
		}
		StringBuffer sb = (new StringBuffer("{success:true,'num':"));

		JSONSerializer json = new JSONSerializer();
		sb.append(json.serialize(num));
		sb.append("}");
		
		setJsonString(sb.toString());
		return SUCCESS;
	}
	/**
	 * 保存选择的用例
	 * save3
	 */
	public String save3() {
		// 处理页面非正常关闭时,操作的不合理性
		QueryFilter filter = new QueryFilter(getRequest());
		// 查询所有的用例
		List<ReuseTestCase> oldList = reuseTestCaseService.queryList(null,
				filter.getPagingBean());
		// 在复用前在数据库中还有数据,将其先删除
		if (oldList.size() != 0) {
			String delIds[] = new String[oldList.size()];
			for (int j = 0; j < oldList.size(); j++) {
				ReuseTestCase temp = oldList.get(j);
				delIds[j] = temp.getTempTcId().toString();
				// System.out.println(delIds[j]);
			}
			reuseTestCaseService.multiDel(delIds);
		}
		// 选中要复用的用例id
		String ids[] = getRequest().getParameterValues("ids");
		int num = 0;
		if (ids != null && ids.length > 0) {
			for (int i = 0; i < ids.length; i++) {
				List<ReuseTestCase> list = reuseTestCaseService.queryList(null,filter.getPagingBean());
				Long tcId = new Long(ids[i]);
//				NewTestCase newTestCase = publicTestCaseService.get(tcId); 
				TestCase testCase =testCaseService.get(tcId); 
//				2014-5-9 17:02:55
				if (list.size() == 0) {
					dealData3(testCase, "01");
					continue;
				} else {
					for (int j = 0; j < list.size(); j++) {
						ReuseTestCase temp = list.get(j);// 过滤重复项
						if (temp.getTcName().equals(testCase.getTcName())) {
							num++;
							break;
						}
					}
				}
				if (num == 0) {
					dealData3(testCase, "01");
				}
			}
		}
		StringBuffer sb = (new StringBuffer("{success:true,'num':"));

		JSONSerializer json = new JSONSerializer();
		sb.append(json.serialize(num));
		sb.append("}");
		
		setJsonString(sb.toString());
		return SUCCESS;
	}

	/**
	 * 选择用例,开始复用
	 * 
	 * @return
	 */
	public String select() {
		// 选择的要复用的用例Id
		String ids[] = getRequest().getParameterValues("ids");
		String id = getRequest().getParameter("moduleId");
		// 要将用例中的那写内容替换。
		String tcName[] = getRequest().getParameterValues("tcName");
		// 对应要替换为什么内容
		String replaceName[] = getRequest().getParameterValues("replaceName");
		// 要复用到那个项目的项目Id
		Long pId = Long.parseLong(getRequest().getParameter("pId"));

		SystemModule systemModule = systemModuleService
				.getSystemModuleById(Long.parseLong(id));
		// 要复用到的模块Id
		Long moduleId = systemModule.getModuleId();
		// 模块代码
		String moduleDm = systemModule.getModuleDm();
		// 系统Id
		String sysId = systemModule.getSysId().toString();
		// 模块名称
		String moduleName = systemModule.getModuleName();
		// 标记
		int num = 0;
		// 首先判断用没有选择要复用的用例
		if (ids != null) {
			// 循环处理要复用的用例
			for (int i = 0; i < ids.length; i++) {
				if (!"".equals(ids[i]) && !"".equals(tcName[i])
						&& !"".equals(replaceName[i])) {
					ReuseTestCase tempNewTestCase = reuseTestCaseService
							.get(Long.parseLong(ids[i]));
					tempNewTestCase.setState("02");
					tempNewTestCase.setModuleId(moduleId);
					tempNewTestCase.setModuleName(moduleName);
					tempNewTestCase.setpId(pId);
					tempNewTestCase.setModuleDm(moduleDm);
					tempNewTestCase.setSysId(Long.parseLong(sysId));
					tempNewTestCase.setEditTcName(tempNewTestCase.getTcName());
					reuseTestCaseService.merge(tempNewTestCase);
					replace(tempNewTestCase, tcName[i], replaceName[i]);
					num++;
				} else {
					// 选择不替换
					Long tcId = new Long(ids[i]);
					ReuseTestCase tempNewTestCase = reuseTestCaseService
							.get(tcId);
					tempNewTestCase.setState("02");
					tempNewTestCase.setModuleId(moduleId);
					tempNewTestCase.setModuleName(moduleName);
					tempNewTestCase.setpId(pId);
					tempNewTestCase.setModuleDm(moduleDm);
					tempNewTestCase.setSysId(Long.parseLong(sysId));
					tempNewTestCase.setEditTcName(tempNewTestCase.getTcName());
					reuseTestCaseService.merge(tempNewTestCase);
					num++;
				}

			}
		}

		StringBuffer sb = (new StringBuffer("{success:true,'num':"));

		JSONSerializer json = new JSONSerializer();
		sb.append(json.serialize(num));
		sb.append("}");
		setJsonString(sb.toString());
		return SUCCESS;
	}

	public void setFrontReuseTestCase(ReuseTestCase frontReuseTestCase) {
		this.frontReuseTestCase = frontReuseTestCase;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public void setReuseTestCase(ReuseTestCase reuseTestCase) {
		this.reuseTestCase = reuseTestCase;
	}

	/**
	 * 测试用例信息
	 * 
	 * @return
	 */
	public String testCaseInfo() {
		ReuseTestCase tempTestCaseInfo = reuseTestCaseService.get(id);
		if (tempTestCaseInfo.getEditFrontId() != null
				&& !tempTestCaseInfo.getEditFrontId().equals("")) {
			this.setFrontReuseTestCase(reuseTestCaseService
					.get(tempTestCaseInfo.getEditFrontId()));
			this.setReuseTestCase(tempTestCaseInfo);
		} else {

			this.setFrontReuseTestCase(tempTestCaseInfo);

			this.setReuseTestCase(null);
		}

		return "reuseTestCaseInfo";
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值