Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -ra934b43c55fc53c30682f35f2682570519c6c96a -rac48fd0f080c920174cce3d8b957ea1c63d965f4 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ToolContentVersionFilter.java =================================================================== diff -u -r2cbf5d016c60af15b655e67c03e7b5171b1d6734 -rac48fd0f080c920174cce3d8b957ea1c63d965f4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ToolContentVersionFilter.java (.../ToolContentVersionFilter.java) (revision 2cbf5d016c60af15b655e67c03e7b5171b1d6734) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ToolContentVersionFilter.java (.../ToolContentVersionFilter.java) (revision ac48fd0f080c920174cce3d8b957ea1c63d965f4) @@ -41,10 +41,12 @@ private List removedFieldList; private List addedFieldList; + private List renamedFieldList; public ToolContentVersionFilter() { removedFieldList = new ArrayList(); addedFieldList = new ArrayList(); + renamedFieldList = new ArrayList(); } // container class for removed class @@ -69,7 +71,19 @@ fieldname = fieldname2; defaultValue = defaultValue2; } + } + + // container class for renamed class + class RenamedField { + public Class ownerClass; + public String oldFieldname; + public String newFieldname; + public RenamedField(Class ownerClass2, String oldFieldname2, String newFieldname2) { + ownerClass = ownerClass2; + oldFieldname = oldFieldname2; + newFieldname = newFieldname2; + } } /** @@ -93,6 +107,17 @@ public void addField(Class ownerClass, String fieldname, Object defaultValue) { addedFieldList.add(new AddedField(ownerClass, fieldname, defaultValue)); } + + /** + * When a field is renamed in tool Hibernate POJO class, this method must be call in upXXXToYYY()/downXXXToYYY() + * methods. + * + * @param ownerClass + * @param fieldname + */ + public void renameField(Class ownerClass, String oldFieldname, String newFieldname) { + renamedFieldList.add(new RenamedField(ownerClass, oldFieldname, newFieldname)); + } /** * Call by lams import tool service core. Do not use it in tool version filter class. @@ -144,7 +169,25 @@ + added.ownerClass.getName() + " is add by value " + added.defaultValue); } } + + // rename all marked fields for this class + for (RenamedField renamed : renamedFieldList) { + if (StringUtils.equals(root.getName(), renamed.ownerClass.getName())) { + for (Object child : root.getChildren()) { + if (child instanceof Element) { + Element ele = (Element) child; + if (StringUtils.equals(ele.getName(), renamed.oldFieldname)) { + ele.setName(renamed.newFieldname); + ToolContentVersionFilter.log.debug("Field " + renamed.oldFieldname + " in class " + + renamed.ownerClass.getName() + " is renamed to " + renamed.newFieldname); + } + } + } + + } + } + // remove fields List children = root.getChildren(); for (Object child : children) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20140707.sql =================================================================== diff -u --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20140707.sql (revision 0) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20140707.sql (revision ac48fd0f080c920174cce3d8b957ea1c63d965f4) @@ -0,0 +1,14 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +----------------------Put all sql statements below here------------------------- + +-- LDEV-3263 Add support for renaming field names on sequence import +UPDATE lams_tool SET tool_version='20140707' WHERE tool_signature='laasse10'; + +----------------------Put all sql statements above here------------------------- + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java =================================================================== diff -u -r2a68a250e3ae88b708a9a2a91e9f3439a4b6d7a9 -rac48fd0f080c920174cce3d8b957ea1c63d965f4 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java (.../AssessmentImportContentVersionFilter.java) (revision 2a68a250e3ae88b708a9a2a91e9f3439a4b6d7a9) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java (.../AssessmentImportContentVersionFilter.java) (revision ac48fd0f080c920174cce3d8b957ea1c63d965f4) @@ -25,6 +25,7 @@ import org.lamsfoundation.lams.learningdesign.service.ToolContentVersionFilter; import org.lamsfoundation.lams.tool.assessment.model.Assessment; +import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion; /** * Import filter class for different version of Assessment content. @@ -47,4 +48,11 @@ public void up20140102To20140428() { this.removeField(Assessment.class, "contentInUse"); } + + /** + * Import 20140102 version content to 20140428 version tool server. + */ + public void up20140428To20140707() { + this.renameField(AssessmentQuestion.class, "questionOptions", "options"); + } }