Long ScenarioVersionId = new Long(request
.getParameter("ScenarioVersionId"));
int tempId = ScenarioVersionId.intValue();
tempId = tempId - 1;
Long oldScenarioVersionId = new Long(tempId);
ScenarioVersion scenarioversion = new ScenarioVersion();
ScenarioVersion oldscenarioversion = new ScenarioVersion();
Data data = new Data();
Role communicator = new Role();
Role participant = new Role();
Role observer = new Role();
DescriptionVersion description = new DescriptionVersion();
DescriptionVersion oldescription = new DescriptionVersion();
// 查询当前版本的scenarioversion
Object object = BeanUtil
.getEmptyObject("cn.edu.pku.dr.requirement.elicitation.data.ScenarioVersion");
Class clazz = object.getClass();
SelectCommand scmdScenarioVersion = DAOFactory.getSelectCommand(clazz);
Filter filter = DAOFactory.getFilter("scenarioVersionId",
SQLOperator.EQUAL, ScenarioVersionId.toString());
scmdScenarioVersion.setFilter(filter);
Session session = SessionFactory.openSession();
ArrayList scenarioVersions = session.query(scmdScenarioVersion);
if (scenarioVersions.size() == 1) {
scenarioversion = (ScenarioVersion) scenarioVersions.get(0);
}
// 查询上一版本的scenarioversion
if (oldScenarioVersionId.intValue() > -1) {
SelectCommand scmdOldScenarioVersion = DAOFactory
.getSelectCommand(clazz);
Filter oldfilter = DAOFactory.getFilter("scenarioVersionId",
SQLOperator.EQUAL, oldScenarioVersionId.toString());
scmdOldScenarioVersion.setFilter(oldfilter);
ArrayList oldscenarioVersions = session
.query(scmdOldScenarioVersion);
if (oldscenarioVersions.size() == 1) {
oldscenarioversion = (ScenarioVersion) oldscenarioVersions
.get(0);
}
}
// 提取当前版本的变化的内容
String modifyMark = scenarioversion.getModifyMark();
String[] modifyDomain = modifyMark.split("\\,");
Object o;
for (int k = 0; k < modifyDomain.length; k++) {
String content = " ";
// 得到datas最新和上一版本的内容
if ("datas".equals(modifyDomain[k])) {
String newDatas = "";
String oldDatas = "无";
// 取最新的datas
o = BeanUtil
.getEmptyObject("cn.edu.pku.dr.requirement.elicitation.data.Data");
clazz = o.getClass();
SelectCommand scmd = DAOFactory.getSelectCommand(clazz);
String[] datas = new String[10];
datas = (String[]) scenarioversion.getDatas().split("\\,");
Filter filternew = DAOFactory.getFilter("dataId",
SQLOperator.IN, datas);
scmd.setFilter(filternew);
ArrayList dataList = session.query(scmd);
for (int j = 0; j < dataList.size(); j++) {
data = (Data) dataList.get(j);
newDatas = newDatas + data.getDataName();
}
// 取以前的datas
if (oldscenarioversion != null) {
datas = (String[]) oldscenarioversion.getDatas().split(
"\\,");
Filter filterold = DAOFactory.getFilter("dataId",
SQLOperator.IN, datas);
scmd.setFilter(filterold);
dataList = session.query(scmd);
for (int j = 0; j < dataList.size(); j++) {
data = (Data) dataList.get(j);
oldDatas = oldDatas + data.getDataName();
}
}
// 得到content
/*
* content = content + "<table class=\"changeborder\">" + "<tr class=\"change\" ><td>observers</td></tr>" + "<tr class=\"version\"><td>上一版本:</td></tr>" + "<tr class=\"content\"><td>" +
* oldDatas + "</td></tr>" + "<tr class=\"version\"><td>目前版本:</td></tr>" + "<tr class=\"content\"><td>" +
* newDatas + "</td></tr></table>";
*/
content = content + "<table class=\"changeborder\">"
+ "<tr class=\"change\" ><td>datas</td></tr>"
+ "<tr class=\"version\"><td>目前版本:</td></tr>"
+ "<tr class=\"content\"><td>" + newDatas
+ "</td></tr></table>";
}
// 得到participants最新和上一版本的内容
else if ("participants".equals(modifyDomain[k])) {
String newParticipants = "";
String oldParticipants = "无";
// 取最新的participants
o = BeanUtil
.getEmptyObject("cn.edu.pku.dr.requirement.elicitation.data.Role");
clazz = o.getClass();
SelectCommand scmd = DAOFactory.getSelectCommand(clazz);
String[] participants = new String[10];
participants = (String[]) scenarioversion.getParticipants()
.split("\\,");
Filter filternew = DAOFactory.getFilter("roleId",
SQLOperator.IN, participants);
scmd.setFilter(filternew);
ArrayList participantList = session.query(scmd);
for (int j = 0; j < participantList.size(); j++) {
participant = (Role) participantList.get(j);
newParticipants = newParticipants
+ participant.getRoleName();
}
// 取以前的participants
if (oldscenarioversion != null) {
participants = (String[]) oldscenarioversion
.getParticipants().split("\\,");
Filter filterold = DAOFactory.getFilter("roleId",
SQLOperator.IN, participants);
scmd.setFilter(filterold);
participantList = session.query(scmd);
session.close();
for (int j = 0; j < participantList.size(); j++) {
participant = (Role) participantList.get(j);
oldParticipants = oldParticipants
+ participant.getRoleName();
}
}
// 得到content
/*
* content = content + "<table class=\"changeborder\">" + "<tr class=\"change\" ><td>observers</td></tr>" + "<tr class=\"version\"><td>上一版本:</td></tr>" + "<tr class=\"content\"><td>" +
* oldParticipants + "</td></tr>" + "<tr class=\"version\"><td>目前版本:</td></tr>" + "<tr class=\"content\"><td>" +
* newParticipants + "</td></tr></table>";
*/
content = content + "<table class=\"changeborder\">"
+ "<tr class=\"change\" ><td>participants</td></tr>"
+ "<tr class=\"version\"><td>目前版本:</td></tr>"
+ "<tr class=\"content\"><td>" + newParticipants
+ "</td></tr></table>";
} else if ("communicators".equals(modifyDomain[k])) {
String newCommunicators = "";
String oldCommunicators = "无";
// 取最新的communicators
o = BeanUtil
.getEmptyObject("cn.edu.pku.dr.requirement.elicitation.data.Role");
clazz = o.getClass();
SelectCommand scmd = DAOFactory.getSelectCommand(clazz);
String[] communicators = new String[10];
communicators = (String[]) scenarioversion.getParticipants()
.split("\\,");
Filter filternew = DAOFactory.getFilter("roleId",
SQLOperator.IN, communicators);
scmd.setFilter(filternew);
ArrayList communicatorList = session.query(scmd);
for (int j = 0; j < communicatorList.size(); j++) {
communicator = (Role) communicatorList.get(j);
newCommunicators = newCommunicators
+ communicator.getRoleName();
}
// 取以前的communicators
if (oldscenarioversion != null) {
communicators = (String[]) oldscenarioversion
.getParticipants().split("\\,");
Filter filterold = DAOFactory.getFilter("roleId",
SQLOperator.IN, communicators);
scmd.setFilter(filterold);
communicatorList = session.query(scmd);
session.close();
for (int j = 0; j < communicatorList.size(); j++) {
communicator = (Role) communicatorList.get(j);
oldCommunicators = oldCommunicators
+ participant.getRoleName();
}
}
// 得到content
/*
* content = content + "<table class=\"changeborder\">" + "<tr class=\"change\" ><td>observers</td></tr>" + "<tr class=\"version\"><td>上一版本:</td></tr>" + "<tr class=\"content\"><td>" +
* oldCommunicators + "</td></tr>" + "<tr class=\"version\"><td>目前版本:</td></tr>" + "<tr class=\"content\"><td>" +
* newCommunicators + "</td></tr></table>";
*/
content = content + "<table class=\"changeborder\">"
+ "<tr class=\"change\" ><td>Communicators</td></tr>"
+ "<tr class=\"version\"><td>目前版本:</td></tr>"
+ "<tr class=\"content\"><td>" + newCommunicators
+ "</td></tr></table>";
} else if ("observers".equals(modifyDomain[k])) {
String newObservers = "";
String oldObservers = "";
// 取最新的observers
o = BeanUtil
.getEmptyObject("cn.edu.pku.dr.requirement.elicitation.data.Role");
clazz = o.getClass();
SelectCommand scmd = DAOFactory.getSelectCommand(clazz);
String[] observers = new String[10];
observers = (String[]) scenarioversion.getParticipants().split(
"\\,");
Filter filternew = DAOFactory.getFilter("roleId",
SQLOperator.IN, observers);
scmd.setFilter(filternew);
ArrayList communicatorList = session.query(scmd);
for (int j = 0; j < communicatorList.size(); j++) {
observer = (Role) communicatorList.get(j);
newObservers = newObservers + observer.getRoleName();
}
// 取以前的observers
if (oldscenarioversion != null) {
observers = (String[]) oldscenarioversion.getParticipants()
.split("\\,");
Filter filterold = DAOFactory.getFilter("roleId",
SQLOperator.IN, observers);
scmd.setFilter(filterold);
communicatorList = session.query(scmd);