Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ToolContentVersionFilter.java
===================================================================
diff -u -r571a3efcd7c9416c7d2486d1b43ba7eefac433ee -r2cbf5d016c60af15b655e67c03e7b5171b1d6734
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ToolContentVersionFilter.java (.../ToolContentVersionFilter.java) (revision 571a3efcd7c9416c7d2486d1b43ba7eefac433ee)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ToolContentVersionFilter.java (.../ToolContentVersionFilter.java) (revision 2cbf5d016c60af15b655e67c03e7b5171b1d6734)
@@ -19,140 +19,153 @@
import org.jdom.output.XMLOutputter;
import com.thoughtworks.xstream.XStream;
+
/**
- * Super class for all Import content Version Filter. The child class method must follow name conversion.
+ * Super class for all Import content Version Filter. The child class method must follow name conversion.
*
- *
upXXXToXXX
- *
downXXXToXXX
+ *
upXXXToXXX
+ *
downXXXToXXX
*
*
* The XXX must be integer format, which is Tool version number.
*
- * For more detail, in wiki.
+ * For more detail, in wiki.
+ *
* @author Dapeng.Ni
- *
+ *
*/
public class ToolContentVersionFilter {
- private static final Logger log = Logger.getLogger(ToolContentVersionFilter.class);
-
- private List removedFieldList;
- private List addedFieldList;
+ private static final Logger log = Logger.getLogger(ToolContentVersionFilter.class);
- public ToolContentVersionFilter(){
- removedFieldList = new ArrayList();
- addedFieldList = new ArrayList();
+ private List removedFieldList;
+ private List addedFieldList;
+
+ public ToolContentVersionFilter() {
+ removedFieldList = new ArrayList();
+ addedFieldList = new ArrayList();
+ }
+
+ // container class for removed class
+ class RemovedField {
+ public Class ownerClass;
+ public String fieldname;
+
+ public RemovedField(Class ownerClass, String fieldname) {
+ this.ownerClass = ownerClass;
+ this.fieldname = fieldname;
}
- //container class for removed class
- class RemovedField{
- public Class ownerClass;
- public String fieldname;
- public RemovedField(Class ownerClass, String fieldname) {
- this.ownerClass = ownerClass;
- this.fieldname = fieldname;
- }
+ }
+
+ // container class for added class
+ class AddedField {
+ public Class ownerClass;
+ public String fieldname;
+ public Object defaultValue;
+
+ public AddedField(Class ownerClass2, String fieldname2, Object defaultValue2) {
+ ownerClass = ownerClass2;
+ fieldname = fieldname2;
+ defaultValue = defaultValue2;
}
-// container class for added class
- class AddedField{
- public Class ownerClass;
- public String fieldname;
- public Object defaultValue;
- public AddedField(Class ownerClass2, String fieldname2, Object defaultValue2) {
- this.ownerClass = ownerClass2;
- this.fieldname = fieldname2;
- this.defaultValue = defaultValue2;
- }
-
+
+ }
+
+ /**
+ * When a field is removed to tool Hibernate POJO class, this method must be call in upXXXToYYY()/downXXXToYYY()
+ * methods.
+ *
+ * @param ownerClass
+ * @param fieldname
+ */
+ public void removeField(Class ownerClass, String fieldname) {
+ removedFieldList.add(new RemovedField(ownerClass, fieldname));
+ }
+
+ /**
+ * When a field is added to tool Hibernate POJO class, this method is optional in upXXXToYYY()/downXXXToYYY()
+ * methods. It could set default value for this added fields.
+ *
+ * @param ownerClass
+ * @param fieldname
+ */
+ public void addField(Class ownerClass, String fieldname, Object defaultValue) {
+ addedFieldList.add(new AddedField(ownerClass, fieldname, defaultValue));
+ }
+
+ /**
+ * Call by lams import tool service core. Do not use it in tool version filter class.
+ *
+ * @param toolFilePath
+ * @throws JDOMException
+ * @throws IOException
+ */
+ public void transformXML(String toolFilePath) throws JDOMException, IOException {
+ File toolFile = new File(toolFilePath);
+
+ SAXBuilder sax = new SAXBuilder();
+ Document doc = sax.build(new FileInputStream(toolFile));
+ Element root = doc.getRootElement();
+ retrieveXML(root);
+
+ toolFile.renameTo(new File(toolFilePath + "_oldver"));
+
+ File newToolFile = new File(toolFilePath);
+ XMLOutputter output = new XMLOutputter();
+ output.output(doc, new FileOutputStream(newToolFile));
+ }
+
+ private void retrieveXML(Element root) throws JDOMException {
+ // collect all removed fields in this class
+ List clzRemoveFlds = new ArrayList();
+ for (RemovedField remove : removedFieldList) {
+ if (StringUtils.equals(root.getName(), remove.ownerClass.getName())
+ || StringUtils.equals(root.getAttributeValue("class"), remove.ownerClass.getName())) {
+ clzRemoveFlds.add(remove.fieldname);
+ ToolContentVersionFilter.log.debug("Field " + remove.fieldname + " in class "
+ + remove.ownerClass.getName() + " is going to leave.");
+ }
}
- /**
- * When a field is removed to tool Hibernate POJO class, this method must be call in
- * upXXXToYYY()/downXXXToYYY() methods.
- *
- * @param ownerClass
- * @param fieldname
- */
- public void removeField(Class ownerClass, String fieldname){
- removedFieldList.add(new RemovedField(ownerClass,fieldname));
- }
-
- /**
- * When a field is added to tool Hibernate POJO class, this method is optional in
- * upXXXToYYY()/downXXXToYYY() methods. It could set default value for this added fields.
- *
- * @param ownerClass
- * @param fieldname
- */
- public void addField(Class ownerClass, String fieldname, Object defaultValue){
- addedFieldList.add(new AddedField(ownerClass, fieldname, defaultValue));
- }
+ // add all new fields for this class
+ for (AddedField added : addedFieldList) {
+ if (StringUtils.equals(root.getName(), added.ownerClass.getName())) {
+ Writer eleWriter = new StringWriter();
+ XStream eleX = new XStream();
+ eleX.toXML(added.defaultValue, eleWriter);
- /**
- * Call by lams import tool service core. Do not use it in tool version filter class.
- * @param toolFilePath
- * @throws JDOMException
- * @throws IOException
- */
- public void transformXML(String toolFilePath) throws JDOMException, IOException{
- File toolFile = new File(toolFilePath);
-
- SAXBuilder sax = new SAXBuilder();
- Document doc = sax.build(new FileInputStream(toolFile));
- Element root = doc.getRootElement();
- retrieveXML(root);
-
- toolFile.renameTo(new File(toolFilePath +"_oldver"));
-
- File newToolFile = new File(toolFilePath);
- XMLOutputter output = new XMLOutputter();
- output.output(doc, new FileOutputStream(newToolFile));
+ SAXBuilder eleBuilder = new SAXBuilder();
+ Document eledoc = eleBuilder.build(new StringReader(eleWriter.toString()));
+ Element eleRoot = eledoc.getRootElement();
+ eleRoot.setName(added.fieldname);
+ root.addContent(eleRoot);
+
+ ToolContentVersionFilter.log.debug("Field " + added.fieldname + " in class "
+ + added.ownerClass.getName() + " is add by value " + added.defaultValue);
+ }
}
-
- private void retrieveXML(Element root) throws JDOMException{
- //collect all removed fields in this class
- List clzRemoveFlds = new ArrayList();
- for (RemovedField remove : removedFieldList) {
- if(StringUtils.equals(root.getName(),remove.ownerClass.getName())){
- clzRemoveFlds.add(remove.fieldname);
- log.debug("Field "+ remove.fieldname+" in class " + remove.ownerClass.getName() + " is going to leave.");
- }
- }
- //add all new fields for this class
- for (AddedField added : addedFieldList) {
- if(StringUtils.equals(root.getName(),added.ownerClass.getName())){
- Writer eleWriter = new StringWriter();
- XStream eleX = new XStream();
- eleX.toXML(added.defaultValue,eleWriter);
-
- SAXBuilder eleBuilder = new SAXBuilder();
- Document eledoc = eleBuilder.build(new StringReader(eleWriter.toString()));
- Element eleRoot = eledoc.getRootElement();
- eleRoot.setName(added.fieldname);
- root.addContent(eleRoot);
-
- log.debug("Field "+ added.fieldname+" in class " + added.ownerClass.getName() + " is add by value " + added.defaultValue);
- }
- }
-
- //remove fields
- List