List of usage examples for org.dom4j Document addElement
Element addElement(String name);
Element
node with the given name to this branch and returns a reference to the new node. From source file:org.cpsolver.coursett.IdConvertor.java
License:Open Source License
/** * Save id conversion file./*from w w w . j a v a2 s .c o m*/ * @param file id file to save */ public void save(File file) { file.getParentFile().mkdirs(); Document document = DocumentHelper.createDocument(); Element root = document.addElement("id-convertor"); synchronized (iConversion) { for (Map.Entry<String, HashMap<String, String>> entry : iConversion.entrySet()) { String type = entry.getKey(); HashMap<String, String> conversion = entry.getValue(); Element convEl = root.addElement(type); for (Map.Entry<String, String> idConv : conversion.entrySet()) { convEl.addElement("conv").addAttribute("old", idConv.getKey()).addAttribute("new", idConv.getValue()); } } } FileOutputStream fos = null; try { fos = new FileOutputStream(file); (new XMLWriter(fos, OutputFormat.createPrettyPrint())).write(document); fos.flush(); fos.close(); fos = null; } catch (Exception e) { sLogger.error("Unable to save id conversions, reason: " + e.getMessage(), e); } finally { try { if (fos != null) fos.close(); } catch (IOException e) { } } }
From source file:org.cpsolver.coursett.TimetableXMLSaver.java
License:Open Source License
public Document saveDocument() { Document document = DocumentHelper.createDocument(); document.addComment("University Course Timetabling"); if (iSaveCurrent && getAssignment().nrAssignedVariables() != 0) { StringBuffer comments = new StringBuffer("Solution Info:\n"); Map<String, String> solutionInfo = (getSolution() == null ? getModel().getExtendedInfo(getAssignment()) : getSolution().getExtendedInfo()); for (String key : new TreeSet<String>(solutionInfo.keySet())) { String value = solutionInfo.get(key); comments.append(" " + key + ": " + value + "\n"); }/*from w ww .ja v a2 s.co m*/ document.addComment(comments.toString()); } Element root = document.addElement("timetable"); doSave(root); return document; }
From source file:org.cpsolver.coursett.TimetableXMLSaver.java
License:Open Source License
public void save(File outFile) throws Exception { if (outFile == null) outFile = new File(iOutputFolder, "solution.xml"); outFile.getParentFile().mkdirs();// w w w . ja v a 2 s . c o m sLogger.debug("Writting XML data to:" + outFile); Document document = DocumentHelper.createDocument(); document.addComment("University Course Timetabling"); if (iSaveCurrent && getAssignment().nrAssignedVariables() != 0) { StringBuffer comments = new StringBuffer("Solution Info:\n"); Map<String, String> solutionInfo = (getSolution() == null ? getModel().getExtendedInfo(getAssignment()) : getSolution().getExtendedInfo()); for (String key : new TreeSet<String>(solutionInfo.keySet())) { String value = solutionInfo.get(key); comments.append(" " + key + ": " + value + "\n"); } document.addComment(comments.toString()); } Element root = document.addElement("timetable"); doSave(root); if (iShowNames) { Progress.getInstance(getModel()).save(root); try { getSolver().getClass().getMethod("save", new Class[] { Element.class }).invoke(getSolver(), new Object[] { root }); } catch (Exception e) { } } FileOutputStream fos = null; try { fos = new FileOutputStream(outFile); (new XMLWriter(fos, OutputFormat.createPrettyPrint())).write(document); fos.flush(); fos.close(); fos = null; } finally { try { if (fos != null) fos.close(); } catch (IOException e) { } } if (iConvertIds) iIdConvertor.save(); }
From source file:org.cpsolver.exam.model.ExamModel.java
License:Open Source License
/** * Save model (including its solution) into XML. * @param assignment current assignment/*from w ww . j a v a2 s . co m*/ * @return created XML document */ public Document save(Assignment<Exam, ExamPlacement> assignment) { boolean saveInitial = getProperties().getPropertyBoolean("Xml.SaveInitial", true); boolean saveBest = getProperties().getPropertyBoolean("Xml.SaveBest", true); boolean saveSolution = getProperties().getPropertyBoolean("Xml.SaveSolution", true); boolean saveConflictTable = getProperties().getPropertyBoolean("Xml.SaveConflictTable", false); boolean saveParams = getProperties().getPropertyBoolean("Xml.SaveParameters", true); boolean anonymize = getProperties().getPropertyBoolean("Xml.Anonymize", false); boolean idconv = getProperties().getPropertyBoolean("Xml.ConvertIds", anonymize); Document document = DocumentHelper.createDocument(); document.addComment("Examination Timetable"); if (assignment != null && assignment.nrAssignedVariables() > 0) { StringBuffer comments = new StringBuffer("Solution Info:\n"); Map<String, String> solutionInfo = (getProperties().getPropertyBoolean("Xml.ExtendedInfo", false) ? getExtendedInfo(assignment) : getInfo(assignment)); for (String key : new TreeSet<String>(solutionInfo.keySet())) { String value = solutionInfo.get(key); comments.append(" " + key + ": " + value + "\n"); } document.addComment(comments.toString()); } Element root = document.addElement("examtt"); root.addAttribute("version", "1.0"); root.addAttribute("campus", getProperties().getProperty("Data.Initiative")); root.addAttribute("term", getProperties().getProperty("Data.Term")); root.addAttribute("year", getProperties().getProperty("Data.Year")); root.addAttribute("created", String.valueOf(new Date())); if (saveParams) { Map<String, String> params = new HashMap<String, String>(); for (Criterion<Exam, ExamPlacement> criterion : getCriteria()) { if (criterion instanceof ExamCriterion) ((ExamCriterion) criterion).getXmlParameters(params); } params.put("maxRooms", String.valueOf(getMaxRooms())); Element parameters = root.addElement("parameters"); for (String key : new TreeSet<String>(params.keySet())) { parameters.addElement("property").addAttribute("name", key).addAttribute("value", params.get(key)); } } Element periods = root.addElement("periods"); for (ExamPeriod period : getPeriods()) { periods.addElement("period").addAttribute("id", getId(idconv, "period", String.valueOf(period.getId()))) .addAttribute("length", String.valueOf(period.getLength())) .addAttribute("day", period.getDayStr()).addAttribute("time", period.getTimeStr()) .addAttribute("penalty", String.valueOf(period.getPenalty())); } Element rooms = root.addElement("rooms"); for (ExamRoom room : getRooms()) { Element r = rooms.addElement("room"); r.addAttribute("id", getId(idconv, "room", String.valueOf(room.getId()))); if (!anonymize && room.hasName()) r.addAttribute("name", room.getName()); r.addAttribute("size", String.valueOf(room.getSize())); r.addAttribute("alt", String.valueOf(room.getAltSize())); if (room.getCoordX() != null && room.getCoordY() != null) r.addAttribute("coordinates", room.getCoordX() + "," + room.getCoordY()); for (ExamPeriod period : getPeriods()) { if (!room.isAvailable(period)) r.addElement("period") .addAttribute("id", getId(idconv, "period", String.valueOf(period.getId()))) .addAttribute("available", "false"); else if (room.getPenalty(period) != 0) r.addElement("period") .addAttribute("id", getId(idconv, "period", String.valueOf(period.getId()))) .addAttribute("penalty", String.valueOf(room.getPenalty(period))); } Map<Long, Integer> travelTimes = getDistanceMetric().getTravelTimes().get(room.getId()); if (travelTimes != null) for (Map.Entry<Long, Integer> time : travelTimes.entrySet()) r.addElement("travel-time").addAttribute("id", getId(idconv, "room", time.getKey().toString())) .addAttribute("minutes", time.getValue().toString()); } Element exams = root.addElement("exams"); for (Exam exam : variables()) { Element ex = exams.addElement("exam"); ex.addAttribute("id", getId(idconv, "exam", String.valueOf(exam.getId()))); if (!anonymize && exam.hasName()) ex.addAttribute("name", exam.getName()); ex.addAttribute("length", String.valueOf(exam.getLength())); if (exam.getSizeOverride() != null) ex.addAttribute("size", exam.getSizeOverride().toString()); if (exam.getMinSize() != 0) ex.addAttribute("minSize", String.valueOf(exam.getMinSize())); ex.addAttribute("alt", (exam.hasAltSeating() ? "true" : "false")); if (exam.getMaxRooms() != getMaxRooms()) ex.addAttribute("maxRooms", String.valueOf(exam.getMaxRooms())); if (exam.getPrintOffset() != null && !anonymize) ex.addAttribute("printOffset", exam.getPrintOffset().toString()); if (!anonymize) ex.addAttribute("enrl", String.valueOf(exam.getStudents().size())); if (!anonymize) for (ExamOwner owner : exam.getOwners()) { Element o = ex.addElement("owner"); o.addAttribute("id", getId(idconv, "owner", String.valueOf(owner.getId()))); o.addAttribute("name", owner.getName()); } for (ExamPeriodPlacement period : exam.getPeriodPlacements()) { Element pe = ex.addElement("period").addAttribute("id", getId(idconv, "period", String.valueOf(period.getId()))); int penalty = period.getPenalty() - period.getPeriod().getPenalty(); if (penalty != 0) pe.addAttribute("penalty", String.valueOf(penalty)); } for (ExamRoomPlacement room : exam.getRoomPlacements()) { Element re = ex.addElement("room").addAttribute("id", getId(idconv, "room", String.valueOf(room.getId()))); if (room.getPenalty() != 0) re.addAttribute("penalty", String.valueOf(room.getPenalty())); if (room.getMaxPenalty() != 100) re.addAttribute("maxPenalty", String.valueOf(room.getMaxPenalty())); } if (exam.hasAveragePeriod()) ex.addAttribute("average", String.valueOf(exam.getAveragePeriod())); ExamPlacement p = (assignment == null ? null : assignment.getValue(exam)); if (p != null && saveSolution) { Element asg = ex.addElement("assignment"); asg.addElement("period").addAttribute("id", getId(idconv, "period", String.valueOf(p.getPeriod().getId()))); for (ExamRoomPlacement r : p.getRoomPlacements()) { asg.addElement("room").addAttribute("id", getId(idconv, "room", String.valueOf(r.getId()))); } } p = exam.getInitialAssignment(); if (p != null && saveInitial) { Element ini = ex.addElement("initial"); ini.addElement("period").addAttribute("id", getId(idconv, "period", String.valueOf(p.getPeriod().getId()))); for (ExamRoomPlacement r : p.getRoomPlacements()) { ini.addElement("room").addAttribute("id", getId(idconv, "room", String.valueOf(r.getId()))); } } p = exam.getBestAssignment(); if (p != null && saveBest) { Element ini = ex.addElement("best"); ini.addElement("period").addAttribute("id", getId(idconv, "period", String.valueOf(p.getPeriod().getId()))); for (ExamRoomPlacement r : p.getRoomPlacements()) { ini.addElement("room").addAttribute("id", getId(idconv, "room", String.valueOf(r.getId()))); } } if (iRoomSharing != null) iRoomSharing.save(exam, ex, anonymize ? IdConvertor.getInstance() : null); } Element students = root.addElement("students"); for (ExamStudent student : getStudents()) { Element s = students.addElement("student"); s.addAttribute("id", getId(idconv, "student", String.valueOf(student.getId()))); for (Exam ex : student.variables()) { Element x = s.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(ex.getId()))); if (!anonymize) for (ExamOwner owner : ex.getOwners(student)) { x.addElement("owner").addAttribute("id", getId(idconv, "owner", String.valueOf(owner.getId()))); } } for (ExamPeriod period : getPeriods()) { if (!student.isAvailable(period)) s.addElement("period") .addAttribute("id", getId(idconv, "period", String.valueOf(period.getId()))) .addAttribute("available", "false"); } } Element instructors = root.addElement("instructors"); for (ExamInstructor instructor : getInstructors()) { Element i = instructors.addElement("instructor"); i.addAttribute("id", getId(idconv, "instructor", String.valueOf(instructor.getId()))); if (!anonymize && instructor.hasName()) i.addAttribute("name", instructor.getName()); for (Exam ex : instructor.variables()) { Element x = i.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(ex.getId()))); if (!anonymize) for (ExamOwner owner : ex.getOwners(instructor)) { x.addElement("owner").addAttribute("id", getId(idconv, "owner", String.valueOf(owner.getId()))); } } for (ExamPeriod period : getPeriods()) { if (!instructor.isAvailable(period)) i.addElement("period") .addAttribute("id", getId(idconv, "period", String.valueOf(period.getId()))) .addAttribute("available", "false"); } } Element distConstraints = root.addElement("constraints"); for (ExamDistributionConstraint distConstraint : getDistributionConstraints()) { Element dc = distConstraints.addElement(distConstraint.getTypeString()); dc.addAttribute("id", getId(idconv, "constraint", String.valueOf(distConstraint.getId()))); if (!distConstraint.isHard()) { dc.addAttribute("hard", "false"); dc.addAttribute("weight", String.valueOf(distConstraint.getWeight())); } for (Exam exam : distConstraint.variables()) { dc.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(exam.getId()))); } } if (saveConflictTable && assignment != null) { Element conflicts = root.addElement("conflicts"); Map<ExamStudent, Set<Exam>> studentsOfPreviousPeriod = null; for (ExamPeriod period : getPeriods()) { Map<ExamStudent, Set<Exam>> studentsOfPeriod = getStudentsOfPeriod(assignment, period); for (Map.Entry<ExamStudent, Set<Exam>> entry : studentsOfPeriod.entrySet()) { ExamStudent student = entry.getKey(); Set<Exam> examsOfStudent = entry.getValue(); if (examsOfStudent.size() > 1) { Element dir = conflicts.addElement("direct").addAttribute("student", getId(idconv, "student", String.valueOf(student.getId()))); for (Exam exam : examsOfStudent) { dir.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(exam.getId()))); } } if (examsOfStudent.size() > 0 && studentsOfPreviousPeriod != null && (isDayBreakBackToBack() || period.prev().getDay() == period.getDay())) { Set<Exam> previousExamsOfStudent = studentsOfPreviousPeriod.get(student); if (previousExamsOfStudent != null) { for (Exam ex1 : previousExamsOfStudent) for (Exam ex2 : examsOfStudent) { Element btb = conflicts.addElement("back-to-back").addAttribute("student", getId(idconv, "student", String.valueOf(student.getId()))); btb.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(ex1.getId()))); btb.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(ex2.getId()))); if (getBackToBackDistance() >= 0 && period.prev().getDay() == period.getDay()) { double dist = (assignment.getValue(ex1)) .getDistanceInMeters(assignment.getValue(ex2)); if (dist > 0) btb.addAttribute("distance", String.valueOf(dist)); } } } } } if (period.next() == null || period.next().getDay() != period.getDay()) { Map<ExamStudent, Set<Exam>> studentsOfDay = getStudentsOfDay(assignment, period); for (Map.Entry<ExamStudent, Set<Exam>> entry : studentsOfDay.entrySet()) { ExamStudent student = entry.getKey(); Set<Exam> examsOfStudent = entry.getValue(); if (examsOfStudent.size() > 2) { Element mt2 = conflicts.addElement("more-2-day").addAttribute("student", getId(idconv, "student", String.valueOf(student.getId()))); for (Exam exam : examsOfStudent) { mt2.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(exam.getId()))); } } } } studentsOfPreviousPeriod = studentsOfPeriod; } /* Element conflicts = root.addElement("conflicts"); for (ExamStudent student : getStudents()) { for (ExamPeriod period : getPeriods()) { int nrExams = student.getExams(assignment, period).size(); if (nrExams > 1) { Element dir = conflicts.addElement("direct").addAttribute("student", getId(idconv, "student", String.valueOf(student.getId()))); for (Exam exam : student.getExams(assignment, period)) { dir.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(exam.getId()))); } } if (nrExams > 0) { if (period.next() != null && !student.getExams(assignment, period.next()).isEmpty() && (!isDayBreakBackToBack() || period.next().getDay() == period.getDay())) { for (Exam ex1 : student.getExams(assignment, period)) { for (Exam ex2 : student.getExams(assignment, period.next())) { Element btb = conflicts.addElement("back-to-back").addAttribute("student", getId(idconv, "student", String.valueOf(student.getId()))); btb.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(ex1.getId()))); btb.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(ex2.getId()))); if (getBackToBackDistance() >= 0) { double dist = (assignment.getValue(ex1)).getDistanceInMeters(assignment.getValue(ex2)); if (dist > 0) btb.addAttribute("distance", String.valueOf(dist)); } } } } } if (period.next() == null || period.next().getDay() != period.getDay()) { int nrExamsADay = student.getExamsADay(assignment, period.getDay()).size(); if (nrExamsADay > 2) { Element mt2 = conflicts.addElement("more-2-day").addAttribute("student", getId(idconv, "student", String.valueOf(student.getId()))); for (Exam exam : student.getExamsADay(assignment, period.getDay())) { mt2.addElement("exam").addAttribute("id", getId(idconv, "exam", String.valueOf(exam.getId()))); } } } } } */ } return document; }
From source file:org.cpsolver.ifs.example.tt.TimetableModel.java
License:Open Source License
public void saveAsXML(DataProperties cfg, boolean gen, Solution<Activity, Location> solution, Assignment<Activity, Location> assignment, File outFile) throws IOException { outFile.getParentFile().mkdirs();/*from w w w .java2 s . c o m*/ sLogger.debug("Writting XML data to:" + outFile); Document document = DocumentHelper.createDocument(); document.addComment("Interactive Timetabling - University Timetable Generator (version 2.0)"); if (assignment == null && solution != null) assignment = solution.getAssignment(); if (assignment == null) assignment = new DefaultSingleAssignment<Activity, Location>(); if (!assignedVariables(assignment).isEmpty()) { StringBuffer comments = new StringBuffer("Solution Info:\n"); Map<String, String> solutionInfo = (solution == null ? getInfo(assignment) : solution.getInfo()); for (String key : new TreeSet<String>(solutionInfo.keySet())) { String value = solutionInfo.get(key); comments.append(" " + key + ": " + value + "\n"); } document.addComment(comments.toString()); } Element root = document.addElement("Timetable"); if (gen) { Element generator = root.addElement("Generator"); generator.addAttribute("version", "2.0"); generator.addElement("DaysPerWeek").setText(String.valueOf(iNrDays)); generator.addElement("SlotsPerDay").setText(String.valueOf(iNrHours)); generator.addElement("NrRooms").setText(cfg.getProperty("Generator.NrRooms", "20")); generator.addElement("NrInstructors").setText(cfg.getProperty("Generator.NrInstructors", "20")); generator.addElement("NrClasses").setText(cfg.getProperty("Generator.NrClasses", "20")); generator.addElement("FillFactor").setText(cfg.getProperty("Generator.FillFactor", "0.8")); generator.addElement("ActivityLengthMax").setText(cfg.getProperty("Generator.ActivityLengthMax", "5")); generator.addElement("NrGroupsOfRooms").setText(cfg.getProperty("Generator.NrGroupsOfRooms", "20")); generator.addElement("NrRoomsInGroupMin").setText(cfg.getProperty("Generator.NrRoomsInGroupMin", "1")); generator.addElement("NrRoomsInGroupMax").setText(cfg.getProperty("Generator.NrRoomsInGroupMax", "10")); generator.addElement("NrRoomInGroupMin").setText(cfg.getProperty("Generator.NrRoomInGroupMin", "1")); generator.addElement("HardFreeResource").setText(cfg.getProperty("Generator.HardFreeResource", "0.05")); generator.addElement("SoftFreeResource").setText(cfg.getProperty("Generator.SoftFreeResource", "0.3")); generator.addElement("SoftUsedResource").setText(cfg.getProperty("Generator.SoftUsedResource", "0.05")); generator.addElement("SoftUsedActivity").setText(cfg.getProperty("Generator.SoftUsedActivity", "0.05")); generator.addElement("SoftFreeActivity").setText(cfg.getProperty("Generator.SoftFreeActivity", "0.3")); generator.addElement("HardFreeActivity").setText(cfg.getProperty("Generator.HardFreeActivity", "0.05")); generator.addElement("NrDependencies").setText(cfg.getProperty("Generator.NrDependencies", "50")); } ArrayList<Resource> rooms = new ArrayList<Resource>(); ArrayList<Resource> classes = new ArrayList<Resource>(); ArrayList<Resource> instructors = new ArrayList<Resource>(); ArrayList<Resource> specials = new ArrayList<Resource>(); ArrayList<Dependence> dependencies = new ArrayList<Dependence>(); for (Constraint<Activity, Location> c : constraints()) { if (c instanceof Resource) { Resource r = (Resource) c; switch (r.getType()) { case Resource.TYPE_ROOM: rooms.add(r); break; case Resource.TYPE_CLASS: classes.add(r); break; case Resource.TYPE_INSTRUCTOR: instructors.add(r); break; default: specials.add(r); } } else if (c instanceof Dependence) { dependencies.add((Dependence) c); } } Element problem = root.addElement("Problem"); problem.addAttribute("version", "2.0"); Element problemGen = problem.addElement("General"); problemGen.addElement("DaysPerWeek").setText(String.valueOf(iNrDays)); problemGen.addElement("SlotsPerDay").setText(String.valueOf(iNrHours)); Element resourceGen = problemGen.addElement("Resources"); resourceGen.addElement("Classrooms").setText(String.valueOf(rooms.size())); resourceGen.addElement("Teachers").setText(String.valueOf(instructors.size())); resourceGen.addElement("Classes").setText(String.valueOf(classes.size())); resourceGen.addElement("Special").setText(String.valueOf(specials.size())); problemGen.addElement("Activities").setText(String.valueOf(variables().size())); problemGen.addElement("Dependences").setText(String.valueOf(dependencies.size())); Element resources = problem.addElement("Resources"); Element resEl = resources.addElement("Classrooms"); for (Resource r : rooms) { Element el = resEl.addElement("Resource"); el.addAttribute("id", r.getResourceId()); el.addElement("Name").setText(r.getName()); Element pref = el.addElement("TimePreferences"); for (Integer slot : new TreeSet<Integer>(r.getDiscouragedSlots())) pref.addElement("Soft").setText(slot.toString()); for (Integer slot : new TreeSet<Integer>(r.getProhibitedSlots())) pref.addElement("Hard").setText(slot.toString()); } resEl = resources.addElement("Teachers"); for (Resource r : instructors) { Element el = resEl.addElement("Resource"); el.addAttribute("id", r.getResourceId()); el.addElement("Name").setText(r.getName()); Element pref = el.addElement("TimePreferences"); for (Integer slot : new TreeSet<Integer>(r.getDiscouragedSlots())) pref.addElement("Soft").setText(slot.toString()); for (Integer slot : new TreeSet<Integer>(r.getProhibitedSlots())) pref.addElement("Hard").setText(slot.toString()); } resEl = resources.addElement("Classes"); for (Resource r : classes) { Element el = resEl.addElement("Resource"); el.addAttribute("id", r.getResourceId()); el.addElement("Name").setText(r.getName()); Element pref = el.addElement("TimePreferences"); for (Integer slot : new TreeSet<Integer>(r.getDiscouragedSlots())) pref.addElement("Soft").setText(slot.toString()); for (Integer slot : new TreeSet<Integer>(r.getProhibitedSlots())) pref.addElement("Hard").setText(slot.toString()); } resEl = resources.addElement("Special"); for (Resource r : specials) { Element el = resEl.addElement("Resource"); el.addAttribute("id", r.getResourceId()); el.addElement("Name").setText(r.getName()); Element pref = el.addElement("TimePreferences"); for (Integer slot : new TreeSet<Integer>(r.getDiscouragedSlots())) pref.addElement("Soft").setText(slot.toString()); for (Integer slot : new TreeSet<Integer>(r.getProhibitedSlots())) pref.addElement("Hard").setText(slot.toString()); } boolean hasSolution = false; Element actEl = problem.addElement("Activities"); for (Activity a : variables()) { Element el = actEl.addElement("Activity"); el.addAttribute("id", a.getActivityId()); el.addElement("Name").setText(a.getName()); el.addElement("Length").setText(String.valueOf(a.getLength())); if (assignment.getValue(a) != null) hasSolution = true; Element pref = el.addElement("TimePreferences"); for (Integer slot : new TreeSet<Integer>(a.getDiscouragedSlots())) pref.addElement("Soft").setText(slot.toString()); for (Integer slot : new TreeSet<Integer>(a.getProhibitedSlots())) pref.addElement("Hard").setText(slot.toString()); Element reqRes = el.addElement("RequiredResources"); for (List<Resource> gr : a.getResourceGroups()) { if (gr.size() == 1) { reqRes.addElement("Resource").setText(gr.get(0).getResourceId()); } else { Element grEl = reqRes.addElement("Group").addAttribute("conjunctive", "no"); for (Resource r : gr) grEl.addElement("Resource").setText(r.getResourceId()); } } } Element depEl = problem.addElement("Dependences"); for (Dependence d : dependencies) { Element el = depEl.addElement("Dependence"); el.addAttribute("id", d.getResourceId()); el.addElement("FirstActivity").setText((d.first()).getActivityId()); el.addElement("SecondActivity").setText((d.second()).getActivityId()); switch (d.getType()) { case Dependence.TYPE_AFTER: el.addElement("Operator").setText("After"); break; case Dependence.TYPE_BEFORE: el.addElement("Operator").setText("Before"); break; case Dependence.TYPE_CLOSELY_BEFORE: el.addElement("Operator").setText("Closely before"); break; case Dependence.TYPE_CLOSELY_AFTER: el.addElement("Operator").setText("Closely after"); break; case Dependence.TYPE_CONCURRENCY: el.addElement("Operator").setText("Concurrently"); break; default: el.addElement("Operator").setText("Unknown"); } } if (hasSolution) { Element solutionEl = root.addElement("Solution"); solutionEl.addAttribute("version", "2.0"); for (Activity a : variables()) { Element el = solutionEl.addElement("Activity"); el.addAttribute("id", a.getActivityId()); Location location = assignment.getValue(a); if (location != null) { el.addElement("StartTime").setText(String.valueOf(location.getSlot())); Element res = el.addElement("UsedResources"); for (int i = 0; i < location.getResources().length; i++) res.addElement("Resource").setText(location.getResources()[i].getResourceId()); } } } FileOutputStream fos = new FileOutputStream(outFile); (new XMLWriter(fos, OutputFormat.createPrettyPrint())).write(document); fos.flush(); fos.close(); }
From source file:org.cpsolver.instructor.model.InstructorSchedulingModel.java
License:Open Source License
/** * Store the problem (together with its solution) in an XML format * @param assignment current assignment/*from w w w . j a v a 2 s. c o m*/ * @return XML document with the problem */ public Document save(Assignment<TeachingRequest.Variable, TeachingAssignment> assignment) { DecimalFormat sDF7 = new DecimalFormat("0000000"); boolean saveInitial = getProperties().getPropertyBoolean("Xml.SaveInitial", false); boolean saveBest = getProperties().getPropertyBoolean("Xml.SaveBest", false); boolean saveSolution = getProperties().getPropertyBoolean("Xml.SaveSolution", true); Document document = DocumentHelper.createDocument(); if (assignment != null && assignment.nrAssignedVariables() > 0) { StringBuffer comments = new StringBuffer("Solution Info:\n"); Map<String, String> solutionInfo = (getProperties().getPropertyBoolean("Xml.ExtendedInfo", true) ? getExtendedInfo(assignment) : getInfo(assignment)); for (String key : new TreeSet<String>(solutionInfo.keySet())) { String value = solutionInfo.get(key); comments.append(" " + key + ": " + value + "\n"); } document.addComment(comments.toString()); } Element root = document.addElement("instructor-schedule"); root.addAttribute("version", "1.0"); root.addAttribute("created", String.valueOf(new Date())); Element typesEl = root.addElement("attributes"); for (Attribute.Type type : getAttributeTypes()) { Element typeEl = typesEl.addElement("type"); if (type.getTypeId() != null) typeEl.addAttribute("id", String.valueOf(type.getTypeId())); typeEl.addAttribute("name", type.getTypeName()); typeEl.addAttribute("conjunctive", type.isConjunctive() ? "true" : "false"); typeEl.addAttribute("required", type.isRequired() ? "true" : "false"); Set<Attribute> attributes = new HashSet<Attribute>(); for (TeachingRequest request : getRequests()) { for (Preference<Attribute> pref : request.getAttributePreferences()) { Attribute attribute = pref.getTarget(); if (type.equals(attribute.getType()) && attributes.add(attribute)) { Element attributeEl = typeEl.addElement("attribute"); if (attribute.getAttributeId() != null) attributeEl.addAttribute("id", String.valueOf(attribute.getAttributeId())); attributeEl.addAttribute("name", attribute.getAttributeName()); } } for (Instructor instructor : getInstructors()) { for (Attribute attribute : instructor.getAttributes()) { if (type.equals(attribute.getType()) && attributes.add(attribute)) { Element attributeEl = typeEl.addElement("attribute"); if (attribute.getAttributeId() != null) attributeEl.addAttribute("id", String.valueOf(attribute.getAttributeId())); attributeEl.addAttribute("name", attribute.getAttributeName()); } } } } } Element requestsEl = root.addElement("teaching-requests"); for (TeachingRequest request : getRequests()) { Element requestEl = requestsEl.addElement("request"); requestEl.addAttribute("id", String.valueOf(request.getRequestId())); if (request.getNrInstructors() != 1) requestEl.addAttribute("nrInstructors", String.valueOf(request.getNrInstructors())); Course course = request.getCourse(); Element courseEl = requestEl.addElement("course"); if (course.getCourseId() != null) courseEl.addAttribute("id", String.valueOf(course.getCourseId())); if (course.getCourseName() != null) courseEl.addAttribute("name", String.valueOf(course.getCourseName())); for (Section section : request.getSections()) { Element sectionEl = requestEl.addElement("section"); sectionEl.addAttribute("id", String.valueOf(section.getSectionId())); if (section.getExternalId() != null && !section.getExternalId().isEmpty()) sectionEl.addAttribute("externalId", section.getExternalId()); if (section.getSectionType() != null && !section.getSectionType().isEmpty()) sectionEl.addAttribute("type", section.getSectionType()); if (section.getSectionName() != null && !section.getSectionName().isEmpty()) sectionEl.addAttribute("name", section.getSectionName()); if (section.hasTime()) { TimeLocation tl = section.getTime(); Element timeEl = sectionEl.addElement("time"); timeEl.addAttribute("days", sDF7.format(Long.parseLong(Integer.toBinaryString(tl.getDayCode())))); timeEl.addAttribute("start", String.valueOf(tl.getStartSlot())); timeEl.addAttribute("length", String.valueOf(tl.getLength())); if (tl.getBreakTime() != 0) timeEl.addAttribute("breakTime", String.valueOf(tl.getBreakTime())); if (tl.getTimePatternId() != null) timeEl.addAttribute("pattern", tl.getTimePatternId().toString()); if (tl.getDatePatternId() != null) timeEl.addAttribute("datePattern", tl.getDatePatternId().toString()); if (tl.getDatePatternName() != null && !tl.getDatePatternName().isEmpty()) timeEl.addAttribute("datePatternName", tl.getDatePatternName()); if (tl.getWeekCode() != null) timeEl.addAttribute("dates", bitset2string(tl.getWeekCode())); timeEl.setText(tl.getLongName(false)); } if (section.hasRoom()) sectionEl.addAttribute("room", section.getRoom()); if (section.isAllowOverlap()) sectionEl.addAttribute("canOverlap", "true"); if (section.isCommon()) sectionEl.addAttribute("common", "true"); } requestEl.addAttribute("load", sDoubleFormat.format(request.getLoad())); requestEl.addAttribute("sameCourse", Constants.preferenceLevel2preference(request.getSameCoursePreference())); requestEl.addAttribute("sameCommon", Constants.preferenceLevel2preference(request.getSameCommonPreference())); for (Preference<Attribute> pref : request.getAttributePreferences()) { Element attributeEl = requestEl.addElement("attribute"); if (pref.getTarget().getAttributeId() != null) attributeEl.addAttribute("id", String.valueOf(pref.getTarget().getAttributeId())); attributeEl.addAttribute("name", pref.getTarget().getAttributeName()); attributeEl.addAttribute("type", pref.getTarget().getType().getTypeName()); attributeEl.addAttribute("preference", (pref.isRequired() ? "R" : pref.isProhibited() ? "P" : String.valueOf(pref.getPreference()))); } for (Preference<Instructor> pref : request.getInstructorPreferences()) { Element instructorEl = requestEl.addElement("instructor"); instructorEl.addAttribute("id", String.valueOf(pref.getTarget().getInstructorId())); if (pref.getTarget().hasExternalId()) instructorEl.addAttribute("externalId", pref.getTarget().getExternalId()); if (pref.getTarget().hasName()) instructorEl.addAttribute("name", pref.getTarget().getName()); instructorEl.addAttribute("preference", (pref.isRequired() ? "R" : pref.isProhibited() ? "P" : String.valueOf(pref.getPreference()))); } if (saveBest) for (TeachingRequest.Variable variable : request.getVariables()) { if (variable.getBestAssignment() != null) { Instructor instructor = variable.getBestAssignment().getInstructor(); Element instructorEl = requestEl.addElement("best-instructor"); instructorEl.addAttribute("id", String.valueOf(instructor.getInstructorId())); if (request.getNrInstructors() != 1) instructorEl.addAttribute("index", String.valueOf(variable.getInstructorIndex())); if (instructor.hasExternalId()) instructorEl.addAttribute("externalId", instructor.getExternalId()); if (instructor.hasName()) instructorEl.addAttribute("name", instructor.getName()); } } if (saveInitial) for (TeachingRequest.Variable variable : request.getVariables()) { if (variable.getInitialAssignment() != null) { Instructor instructor = variable.getInitialAssignment().getInstructor(); Element instructorEl = requestEl.addElement("initial-instructor"); instructorEl.addAttribute("id", String.valueOf(instructor.getInstructorId())); if (request.getNrInstructors() != 1) instructorEl.addAttribute("index", String.valueOf(variable.getInstructorIndex())); if (instructor.hasExternalId()) instructorEl.addAttribute("externalId", instructor.getExternalId()); if (instructor.hasName()) instructorEl.addAttribute("name", instructor.getName()); } } if (saveSolution) for (TeachingRequest.Variable variable : request.getVariables()) { TeachingAssignment ta = assignment.getValue(variable); if (ta != null) { Instructor instructor = ta.getInstructor(); Element instructorEl = requestEl.addElement("assigned-instructor"); instructorEl.addAttribute("id", String.valueOf(instructor.getInstructorId())); if (request.getNrInstructors() != 1) instructorEl.addAttribute("index", String.valueOf(variable.getInstructorIndex())); if (instructor.hasExternalId()) instructorEl.addAttribute("externalId", instructor.getExternalId()); if (instructor.hasName()) instructorEl.addAttribute("name", instructor.getName()); } } } Element instructorsEl = root.addElement("instructors"); for (Instructor instructor : getInstructors()) { Element instructorEl = instructorsEl.addElement("instructor"); instructorEl.addAttribute("id", String.valueOf(instructor.getInstructorId())); if (instructor.hasExternalId()) instructorEl.addAttribute("externalId", instructor.getExternalId()); if (instructor.hasName()) instructorEl.addAttribute("name", instructor.getName()); if (instructor.getPreference() != 0) instructorEl.addAttribute("preference", String.valueOf(instructor.getPreference())); if (instructor.getBackToBackPreference() != 0) instructorEl.addAttribute("btb", String.valueOf(instructor.getBackToBackPreference())); if (instructor.getSameDaysPreference() != 0) instructorEl.addAttribute("same-days", String.valueOf(instructor.getSameDaysPreference())); if (instructor.getSameRoomPreference() != 0) instructorEl.addAttribute("same-room", String.valueOf(instructor.getSameRoomPreference())); for (Attribute attribute : instructor.getAttributes()) { Element attributeEl = instructorEl.addElement("attribute"); if (attribute.getAttributeId() != null) attributeEl.addAttribute("id", String.valueOf(attribute.getAttributeId())); attributeEl.addAttribute("name", attribute.getAttributeName()); attributeEl.addAttribute("type", attribute.getType().getTypeName()); } instructorEl.addAttribute("maxLoad", sDoubleFormat.format(instructor.getMaxLoad())); for (Preference<TimeLocation> tp : instructor.getTimePreferences()) { Element timeEl = instructorEl.addElement("time"); TimeLocation tl = tp.getTarget(); timeEl.addAttribute("days", sDF7.format(Long.parseLong(Integer.toBinaryString(tl.getDayCode())))); timeEl.addAttribute("start", String.valueOf(tl.getStartSlot())); timeEl.addAttribute("length", String.valueOf(tl.getLength())); if (tl.getBreakTime() != 0) timeEl.addAttribute("breakTime", String.valueOf(tl.getBreakTime())); if (tl.getTimePatternId() != null) timeEl.addAttribute("pattern", tl.getTimePatternId().toString()); if (tl.getDatePatternId() != null) timeEl.addAttribute("datePattern", tl.getDatePatternId().toString()); if (tl.getDatePatternName() != null && !tl.getDatePatternName().isEmpty()) timeEl.addAttribute("datePatternName", tl.getDatePatternName()); if (tl.getWeekCode() != null) timeEl.addAttribute("dates", bitset2string(tl.getWeekCode())); timeEl.addAttribute("preference", tp.isProhibited() ? "P" : tp.isRequired() ? "R" : String.valueOf(tp.getPreference())); if (tp.getTarget() instanceof EnrolledClass) { Element classEl = timeEl.addElement("section"); Element courseEl = null; EnrolledClass ec = (EnrolledClass) tp.getTarget(); if (ec.getCourseId() != null || ec.getCourse() != null) { courseEl = timeEl.addElement("course"); if (ec.getCourseId() != null) courseEl.addAttribute("id", String.valueOf(ec.getCourseId())); if (ec.getCourse() != null) courseEl.addAttribute("name", ec.getCourse()); } if (ec.getClassId() != null) classEl.addAttribute("id", String.valueOf(ec.getClassId())); if (ec.getType() != null) classEl.addAttribute("type", ec.getType()); if (ec.getSection() != null) classEl.addAttribute("name", ec.getSection()); if (ec.getExternalId() != null) classEl.addAttribute("externalId", ec.getExternalId()); if (ec.getRoom() != null) classEl.addAttribute("room", ec.getRoom()); classEl.addAttribute("role", ec.isInstructor() ? "instructor" : "student"); } else { timeEl.setText(tl.getLongName(false)); } } for (Preference<Course> cp : instructor.getCoursePreferences()) { Element courseEl = instructorEl.addElement("course"); Course course = cp.getTarget(); if (course.getCourseId() != null) courseEl.addAttribute("id", String.valueOf(course.getCourseId())); if (course.getCourseName() != null) courseEl.addAttribute("name", String.valueOf(course.getCourseName())); courseEl.addAttribute("preference", cp.isProhibited() ? "P" : cp.isRequired() ? "R" : String.valueOf(cp.getPreference())); } } Element constraintsEl = root.addElement("constraints"); for (Constraint<TeachingRequest.Variable, TeachingAssignment> c : constraints()) { if (c instanceof SameInstructorConstraint) { SameInstructorConstraint si = (SameInstructorConstraint) c; Element sameInstEl = constraintsEl.addElement("same-instructor"); if (si.getConstraintId() != null) sameInstEl.addAttribute("id", String.valueOf(si.getConstraintId())); if (si.getName() != null) sameInstEl.addAttribute("name", si.getName()); sameInstEl.addAttribute("preference", Constants.preferenceLevel2preference(si.getPreference())); for (TeachingRequest.Variable request : c.variables()) { Element assignmentEl = sameInstEl.addElement("request"); assignmentEl.addAttribute("id", String.valueOf(request.getRequest().getRequestId())); if (request.getRequest().getNrInstructors() != 1) assignmentEl.addAttribute("index", String.valueOf(request.getInstructorIndex())); } } else if (c instanceof SameLinkConstraint) { SameLinkConstraint si = (SameLinkConstraint) c; Element sameInstEl = constraintsEl.addElement("same-link"); if (si.getConstraintId() != null) sameInstEl.addAttribute("id", String.valueOf(si.getConstraintId())); if (si.getName() != null) sameInstEl.addAttribute("name", si.getName()); sameInstEl.addAttribute("preference", Constants.preferenceLevel2preference(si.getPreference())); for (TeachingRequest.Variable request : c.variables()) { Element assignmentEl = sameInstEl.addElement("request"); assignmentEl.addAttribute("id", String.valueOf(request.getRequest().getRequestId())); if (request.getRequest().getNrInstructors() != 1) assignmentEl.addAttribute("index", String.valueOf(request.getInstructorIndex())); } } } return document; }
From source file:org.cpsolver.studentsct.StudentRequestXml.java
License:Open Source License
public static Document exportModel(Assignment<Request, Enrollment> assignment, StudentSectioningModel model) { Document document = DocumentHelper.createDocument(); Element requestElement = document.addElement("request"); requestElement.addAttribute("campus", model.getProperties().getProperty("Data.Initiative")); requestElement.addAttribute("year", model.getProperties().getProperty("Data.Year")); requestElement.addAttribute("term", model.getProperties().getProperty("Data.Term")); for (Student student : model.getStudents()) { Element studentElement = requestElement.addElement("student"); studentElement.addAttribute("key", String.valueOf(student.getId())); Element courseRequestsElement = studentElement.addElement("updateCourseRequests"); courseRequestsElement.addAttribute("commit", "true"); Collections.sort(student.getRequests(), new Comparator<Request>() { @Override//w w w. ja v a2 s . c o m public int compare(Request r1, Request r2) { if (r1.isAlternative() != r2.isAlternative()) { return (r1.isAlternative() ? 1 : -1); } return Double.compare(r1.getPriority(), r2.getPriority()); } }); boolean hasSchedule = false; for (Request request : student.getRequests()) { if (assignment.getValue(request) != null) hasSchedule = true; if (request instanceof FreeTimeRequest) { FreeTimeRequest ftReq = (FreeTimeRequest) request; Element ftReqElement = courseRequestsElement.addElement("freeTime"); requestElement.addAttribute("days", ftReq.getTime().getDayHeader()); int startSlot = ftReq.getTime().getStartSlot(); int startTime = startSlot * Constants.SLOT_LENGTH_MIN + Constants.FIRST_SLOT_TIME_MIN; ftReqElement.addAttribute("startTime", s2zDF.format(startTime / 60) + s2zDF.format(startTime % 60)); int endTime = startTime + ftReq.getTime().getLength() * Constants.SLOT_LENGTH_MIN - ftReq.getTime().getBreakTime(); ftReqElement.addAttribute("endTime", s2zDF.format(endTime / 60) + s2zDF.format(endTime % 60)); ftReqElement.addAttribute("length", String.valueOf(ftReq.getTime().getLength() * Constants.SLOT_LENGTH_MIN)); } else { CourseRequest crReq = (CourseRequest) request; Element crReqElement = courseRequestsElement.addElement("courseOffering"); Course course = crReq.getCourses().get(0); crReqElement.addAttribute("subjectArea", course.getSubjectArea()); crReqElement.addAttribute("courseNumber", course.getCourseNumber()); crReqElement.addAttribute("waitlist", crReq.isWaitlist() ? "true" : "false"); crReqElement.addAttribute("alternative", crReq.isAlternative() ? "true" : "false"); for (int i = 1; i < crReq.getCourses().size(); i++) { Course altCourse = crReq.getCourses().get(i); Element altCourseElement = crReqElement.addElement("alternative"); altCourseElement.addAttribute("subjectArea", altCourse.getSubjectArea()); altCourseElement.addAttribute("courseNumber", altCourse.getCourseNumber()); } } } if (hasSchedule) { Element requestScheduleElement = studentElement.addElement("requestSchedule"); requestScheduleElement.addAttribute("type", "commit"); for (Request request : student.getRequests()) { if (request instanceof CourseRequest) { CourseRequest crReq = (CourseRequest) request; Enrollment enrollment = assignment.getValue(crReq); if (enrollment == null) continue; Element crReqElement = requestScheduleElement.addElement("courseOffering"); Course course = enrollment.getCourse(); crReqElement.addAttribute("subjectArea", course.getSubjectArea()); crReqElement.addAttribute("courseNumber", course.getCourseNumber()); for (Section section : enrollment.getSections()) { Element classEl = crReqElement.addElement("class"); classEl.addAttribute("id", section.getSubpart().getInstructionalType()); classEl.addAttribute("assignmentId", String.valueOf(section.getId())); } } } } } return document; }
From source file:org.cpsolver.studentsct.StudentSectioningXMLSaver.java
License:Open Source License
/** * Fill in all the data into the given document * @param document document to be populated *///from ww w .j ava2s . c om protected void populate(Document document) { if (iSaveCurrent || iSaveBest) { StringBuffer comments = new StringBuffer("Solution Info:\n"); Map<String, String> solutionInfo = (getSolution() == null ? getModel().getExtendedInfo(getAssignment()) : getSolution().getExtendedInfo()); for (String key : new TreeSet<String>(solutionInfo.keySet())) { String value = solutionInfo.get(key); comments.append(" " + key + ": " + value + "\n"); } document.addComment(comments.toString()); } Element root = document.addElement("sectioning"); root.addAttribute("version", "1.0"); root.addAttribute("initiative", getModel().getProperties().getProperty("Data.Initiative")); root.addAttribute("term", getModel().getProperties().getProperty("Data.Term")); root.addAttribute("year", getModel().getProperties().getProperty("Data.Year")); root.addAttribute("created", String.valueOf(new Date())); saveOfferings(root); saveStudents(root); saveLinkedSections(root); saveTravelTimes(root); if (iShowNames) { Progress.getInstance(getModel()).save(root); } }
From source file:org.craftercms.cstudio.alfresco.script.ModelServiceScript.java
License:Open Source License
/** * create an XML document given the model data * //from www. j av a 2 s . c o m * @param modelData * @param elementName * child element name * @return modelData in XML */ protected Document createXMLDocument(List<ModelDataTO> modelData, String elementName) { Document document = DocumentHelper.createDocument(); Element root = document.addElement(CStudioXmlConstants.DOCUMENT_MODEL_DATA); if (modelData != null) { for (ModelDataTO model : modelData) { String type = model.getType(); String localName = (type.contains(":")) ? type.substring(type.indexOf(":") + 1, type.length()) : type; String childName = (StringUtils.isEmpty(elementName)) ? localName : elementName; Element childElement = root.addElement(childName); childElement.addAttribute(CStudioXmlConstants.DOCUMENT_ATTR_NAME, type); childElement.addAttribute(CStudioXmlConstants.DOCUMENT_ATTR_ID, String.valueOf(model.getId())); childElement.addAttribute(CStudioXmlConstants.DOCUMENT_ATTR_LABEL, model.getLabel()); childElement.addAttribute(CStudioXmlConstants.DOCUMENT_ATTR_DESCRIPTION, model.getDescription()); childElement.addAttribute(CStudioXmlConstants.DOCUMENT_ATTR_VALUE, String.valueOf(model.getValue())); if (model.getChildren() != null) { addChildElements(childElement, model.getChildren(), elementName); } } } return document; }
From source file:org.craftercms.cstudio.alfresco.transform.TaxonomyRendition.java
License:Open Source License
/** * Construct XML //from w ww .j av a 2 s.c o m * * @param nodeRef * @return */ protected Document retreiveXml(NodeRef nodeRef) throws ServiceException { // Retreive values from NodeRef PersistenceManagerService persistenceManagerService = getServicesManager() .getService(PersistenceManagerService.class); NamespaceService namespaceService = getServicesManager().getService(NamespaceService.class); QName nodeQType = persistenceManagerService.getType(nodeRef); String type_value = namespaceService.getPrefixedTypeName(nodeQType); String name_value = (String) persistenceManagerService.getProperty(nodeRef, ContentModel.PROP_NAME); Long id_value = (Long) persistenceManagerService.getProperty(nodeRef, CStudioContentModel.PROP_IDENTIFIABLE_ID); String description_value = (String) persistenceManagerService.getProperty(nodeRef, CStudioContentModel.PROP_IDENTIFIABLE_DESCRIPTION); Long order_value = (Long) persistenceManagerService.getProperty(nodeRef, CStudioContentModel.PROP_IDENTIFIABLE_ORDER); Boolean disabled_value = (Boolean) persistenceManagerService.getProperty(nodeRef, CStudioContentModel.PROP_IDENTIFIABLE_DELETED); Boolean is_live_value = (Boolean) persistenceManagerService.getProperty(nodeRef, CStudioContentModel.PROP_IDENTIFIABLE_CURRENT); Object iconPath_value = persistenceManagerService.getProperty(nodeRef, CStudioContentModel.PROP_IDENTIFIABLE_ICON_PATH); // Create Document Document document = DocumentHelper.createDocument(); Element category = document.addElement(CStudioXmlConstants.DOCUMENT_CATEGORY); Element type = category.addElement(CStudioXmlConstants.DOCUMENT_CATEGORY_TYPE); type.setText(type_value != null ? type_value.toString() : ""); Element name = category.addElement(CStudioXmlConstants.DOCUMENT_CATEGORY_NAME); name.setText(name_value != null ? name_value.toString() : ""); Element id = category.addElement(CStudioXmlConstants.DOCUMENT_CATEGORY_ID); id.setText(id_value != null ? id_value.toString() : ""); Element description = category.addElement(CStudioXmlConstants.DOCUMENT_CATEGORY_DESCRIPTION); description.setText(description_value != null ? description_value.toString() : ""); Element order = category.addElement(CStudioXmlConstants.DOCUMENT_CATEGORY_ORDER); order.setText(order_value != null ? order_value.toString() : ""); if (iconPath_value != null) { Element iconPath = category.addElement(CStudioXmlConstants.DOCUMENT_CATEGORY_ICON_PATH); iconPath.setText((String) iconPath_value); } Element is_live = category.addElement(CStudioXmlConstants.DOCUMENT_CATEGORY_IS_LIVE); if (is_live_value != null && is_live_value.equals(true)) { is_live.setText("true"); } else { is_live.setText("false"); } Element disabled = category.addElement(CStudioXmlConstants.DOCUMENT_CATEGORY_DISABLED); if (disabled_value != null && disabled_value.equals(true)) { disabled.setText("true"); } else { disabled.setText("false"); } Element createdbyElement = category.addElement(CStudioXmlConstants.DOCUMENT_ELM_CREATED_BY); createdbyElement.setText(getPropertyValue(nodeRef, ContentModel.PROP_CREATOR)); Element modifiedbyElement = category.addElement(CStudioXmlConstants.DOCUMENT_ELM_MODIFIED_BY); modifiedbyElement.setText(getPropertyValue(nodeRef, ContentModel.PROP_MODIFIER)); Element parent = category.addElement(CStudioXmlConstants.DOCUMENT_CATEGORY_PARENT); Long parent_id_value = null; return document; }