Example usage for org.dom4j.io XMLWriter XMLWriter

List of usage examples for org.dom4j.io XMLWriter XMLWriter

Introduction

In this page you can find the example usage for org.dom4j.io XMLWriter XMLWriter.

Prototype

public XMLWriter(OutputStream out, OutputFormat format) throws UnsupportedEncodingException 

Source Link

Usage

From source file:net.nikr.eve.jeveasset.io.local.update.updates.Update1To2.java

License:Open Source License

@Override
public void performUpdate(final String path) {
    LOG.info("Performing update from v1 to v2");
    LOG.info(" - modifies files:");
    LOG.info("  - settings.xml");
    try {//from   w  w w  .  j  ava 2  s.c om
        // We need to update the settings
        // current changes are:
        // 1. XPath: /settings/filters/filter/row[@mode]
        // changed from (e.g.) "Contains" to the enum value name in AssetFilter.Mode
        // 2. settings/marketstat[@defaultprice] --> another enum: Asset.PriceMode
        // 3. settings/columns/column --> settings/tables/table/column
        // settings/flags/flag --> removed two flags (now in settings/tables/table)
        SAXReader xmlReader = new SAXReader();
        Document doc = xmlReader.read(path);
        convertDefaultPriceModes(doc);
        convertModes(doc);
        convertTableSettings(doc);

        FileOutputStream fos = new FileOutputStream(path);
        OutputFormat outformat = OutputFormat.createPrettyPrint();
        outformat.setEncoding("UTF-16");
        XMLWriter writer = new XMLWriter(fos, outformat);
        writer.write(doc);
        writer.flush();
    } catch (IOException ex) {
        LOG.error("", ex);
        throw new RuntimeException(ex);
    } catch (DocumentException ex) {
        LOG.error("", ex);
        throw new RuntimeException(ex);
    }
}

From source file:net.osxx.util.SettingUtils.java

License:Open Source License

/**
 * /*from   ww  w . j  a va2  s.  c o m*/
 * 
 * @param setting
 *            
 */
public static void set(Setting setting) {
    try {
        File osxxXmlFile = new ClassPathResource(CommonAttributes.SHOPXX_XML_PATH).getFile();
        Document document = new SAXReader().read(osxxXmlFile);
        List<Element> elements = document.selectNodes("/osxx/setting");
        for (Element element : elements) {
            try {
                String name = element.attributeValue("name");
                String value = beanUtils.getProperty(setting, name);
                Attribute attribute = element.attribute("value");
                attribute.setValue(value);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
        }

        FileOutputStream fileOutputStream = null;
        XMLWriter xmlWriter = null;
        try {
            OutputFormat outputFormat = OutputFormat.createPrettyPrint();
            outputFormat.setEncoding("UTF-8");
            outputFormat.setIndent(true);
            outputFormat.setIndent("   ");
            outputFormat.setNewlines(true);
            fileOutputStream = new FileOutputStream(osxxXmlFile);
            xmlWriter = new XMLWriter(fileOutputStream, outputFormat);
            xmlWriter.write(document);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (xmlWriter != null) {
                try {
                    xmlWriter.close();
                } catch (IOException e) {
                }
            }
            IOUtils.closeQuietly(fileOutputStream);
        }

        Ehcache cache = cacheManager.getEhcache(Setting.CACHE_NAME);
        cache.put(new net.sf.ehcache.Element(Setting.CACHE_KEY, setting));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:net.sf.cpsolver.coursett.IdConvertor.java

License:Open Source License

/**
 * Save id conversion file. Name of the file needs to be provided by system
 * property IdConvertor.File/*  w w  w . j av a  2s . co  m*/
 */
public void save() {
    (new File(iFile)).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(iFile);
        (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:net.sf.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();//from w  ww .j a 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 && !getModel().assignedVariables().isEmpty()) {
        StringBuffer comments = new StringBuffer("Solution Info:\n");
        Map<String, String> solutionInfo = (getSolution() == null ? getModel().getInfo()
                : getSolution().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");
    root.addAttribute("version", "2.5");
    root.addAttribute("initiative", getModel().getProperties().getProperty("Data.Initiative"));
    root.addAttribute("term", getModel().getProperties().getProperty("Data.Term"));
    root.addAttribute("year", String.valueOf(getModel().getYear()));
    root.addAttribute("created", String.valueOf(new Date()));
    root.addAttribute("nrDays", String.valueOf(Constants.DAY_CODES.length));
    root.addAttribute("slotsPerDay", String.valueOf(Constants.SLOTS_PER_DAY));
    if (!iConvertIds && getModel().getProperties().getProperty("General.SessionId") != null)
        root.addAttribute("session", getModel().getProperties().getProperty("General.SessionId"));
    if (iShowNames && !iConvertIds && getModel().getProperties().getProperty("General.SolverGroupId") != null)
        root.addAttribute("solverGroup",
                getId("solverGroup", getModel().getProperties().getProperty("General.SolverGroupId")));

    HashMap<String, Element> roomElements = new HashMap<String, Element>();

    Element roomsEl = root.addElement("rooms");
    for (RoomConstraint roomConstraint : getModel().getRoomConstraints()) {
        Element roomEl = roomsEl.addElement("room").addAttribute("id",
                getId("room", roomConstraint.getResourceId()));
        roomEl.addAttribute("constraint", "true");
        if (roomConstraint instanceof DiscouragedRoomConstraint)
            roomEl.addAttribute("discouraged", "true");
        if (iShowNames) {
            roomEl.addAttribute("name", roomConstraint.getRoomName());
        }
        if (!iConvertIds && roomConstraint.getBuildingId() != null)
            roomEl.addAttribute("building", getId("bldg", roomConstraint.getBuildingId()));
        roomElements.put(getId("room", roomConstraint.getResourceId()), roomEl);
        roomEl.addAttribute("capacity", String.valueOf(roomConstraint.getCapacity()));
        if (roomConstraint.getPosX() != null && roomConstraint.getPosY() != null)
            roomEl.addAttribute("location", roomConstraint.getPosX() + "," + roomConstraint.getPosY());
        if (roomConstraint.getIgnoreTooFar())
            roomEl.addAttribute("ignoreTooFar", "true");
        if (!roomConstraint.getConstraint())
            roomEl.addAttribute("fake", "true");
        if (roomConstraint.getSharingModel() != null) {
            RoomSharingModel sharingModel = roomConstraint.getSharingModel();
            Element sharingEl = roomEl.addElement("sharing");
            sharingEl.addElement("pattern").addAttribute("unit", "6").setText(sharingModel.getPreferences());
            sharingEl.addElement("freeForAll").addAttribute("value",
                    String.valueOf(RoomSharingModel.sFreeForAllPrefChar));
            sharingEl.addElement("notAvailable").addAttribute("value",
                    String.valueOf(RoomSharingModel.sNotAvailablePrefChar));
            for (int i = 0; i < sharingModel.getNrDepartments(); i++) {
                sharingEl.addElement("department").addAttribute("value", String.valueOf((char) ('0' + i)))
                        .addAttribute("id", getId("dept", sharingModel.getDepartmentIds()[i]));
            }
        }
        if (roomConstraint.getType() != null && iShowNames)
            roomEl.addAttribute("type", roomConstraint.getType().toString());
    }

    Element instructorsEl = root.addElement("instructors");

    Element departmentsEl = root.addElement("departments");
    HashMap<Long, String> depts = new HashMap<Long, String>();

    Element configsEl = (iShowNames ? root.addElement("configurations") : null);
    HashSet<Configuration> configs = new HashSet<Configuration>();

    Element classesEl = root.addElement("classes");
    HashMap<Long, Element> classElements = new HashMap<Long, Element>();
    List<Lecture> vars = new ArrayList<Lecture>(getModel().variables());
    if (getModel().hasConstantVariables())
        vars.addAll(getModel().constantVariables());
    for (Lecture lecture : vars) {
        Placement placement = lecture.getAssignment();
        if (lecture.isCommitted() && placement == null)
            placement = lecture.getInitialAssignment();
        Placement initialPlacement = lecture.getInitialAssignment();
        // if (initialPlacement==null) initialPlacement =
        // (Placement)lecture.getAssignment();
        Placement bestPlacement = lecture.getBestAssignment();
        Element classEl = classesEl.addElement("class").addAttribute("id",
                getId("class", lecture.getClassId()));
        classElements.put(lecture.getClassId(), classEl);
        if (iShowNames && lecture.getNote() != null)
            classEl.addAttribute("note", lecture.getNote());
        if (iShowNames && !lecture.isCommitted())
            classEl.addAttribute("ord", String.valueOf(lecture.getOrd()));
        if (iShowNames && lecture.getSolverGroupId() != null)
            classEl.addAttribute("solverGroup", getId("solverGroup", lecture.getSolverGroupId()));
        if (lecture.getParent() == null && lecture.getConfiguration() != null) {
            if (!iShowNames)
                classEl.addAttribute("offering",
                        getId("offering", lecture.getConfiguration().getOfferingId().toString()));
            classEl.addAttribute("config",
                    getId("config", lecture.getConfiguration().getConfigId().toString()));
            if (iShowNames && configs.add(lecture.getConfiguration())) {
                configsEl.addElement("config")
                        .addAttribute("id",
                                getId("config", lecture.getConfiguration().getConfigId().toString()))
                        .addAttribute("limit", String.valueOf(lecture.getConfiguration().getLimit()))
                        .addAttribute("offering",
                                getId("offering", lecture.getConfiguration().getOfferingId().toString()));
            }
        }
        classEl.addAttribute("committed", (lecture.isCommitted() ? "true" : "false"));
        if (lecture.getParent() != null)
            classEl.addAttribute("parent", getId("class", lecture.getParent().getClassId()));
        if (lecture.getSchedulingSubpartId() != null)
            classEl.addAttribute("subpart", getId("subpart", lecture.getSchedulingSubpartId()));
        if (iShowNames && lecture.isCommitted() && placement != null && placement.getAssignmentId() != null) {
            classEl.addAttribute("assignment", getId("assignment", placement.getAssignmentId()));
        }
        if (!lecture.isCommitted()) {
            if (lecture.minClassLimit() == lecture.maxClassLimit()) {
                classEl.addAttribute("classLimit", String.valueOf(lecture.maxClassLimit()));
            } else {
                classEl.addAttribute("minClassLimit", String.valueOf(lecture.minClassLimit()));
                classEl.addAttribute("maxClassLimit", String.valueOf(lecture.maxClassLimit()));
            }
            if (lecture.roomToLimitRatio() != 1.0)
                classEl.addAttribute("roomToLimitRatio", String.valueOf(lecture.roomToLimitRatio()));
        }
        if (lecture.getNrRooms() != 1)
            classEl.addAttribute("nrRooms", String.valueOf(lecture.getNrRooms()));
        if (iShowNames)
            classEl.addAttribute("name", lecture.getName());
        if (lecture.getDeptSpreadConstraint() != null) {
            classEl.addAttribute("department",
                    getId("dept", lecture.getDeptSpreadConstraint().getDepartmentId()));
            depts.put(lecture.getDeptSpreadConstraint().getDepartmentId(),
                    lecture.getDeptSpreadConstraint().getName());
        }
        if (lecture.getScheduler() != null)
            classEl.addAttribute("scheduler", getId("dept", lecture.getScheduler()));
        for (InstructorConstraint ic : lecture.getInstructorConstraints()) {
            Element instrEl = classEl.addElement("instructor").addAttribute("id",
                    getId("inst", ic.getResourceId()));
            if ((lecture.isCommitted() || iSaveCurrent) && placement != null)
                instrEl.addAttribute("solution", "true");
            if (iSaveInitial && initialPlacement != null)
                instrEl.addAttribute("initial", "true");
            if (iSaveBest && bestPlacement != null && !bestPlacement.equals(placement))
                instrEl.addAttribute("best", "true");
        }
        for (RoomLocation rl : lecture.roomLocations()) {
            Element roomLocationEl = classEl.addElement("room");
            roomLocationEl.addAttribute("id", getId("room", rl.getId()));
            roomLocationEl.addAttribute("pref", String.valueOf(rl.getPreference()));
            if ((lecture.isCommitted() || iSaveCurrent) && placement != null
                    && placement.hasRoomLocation(rl.getId()))
                roomLocationEl.addAttribute("solution", "true");
            if (iSaveInitial && initialPlacement != null && initialPlacement.hasRoomLocation(rl.getId()))
                roomLocationEl.addAttribute("initial", "true");
            if (iSaveBest && bestPlacement != null && !bestPlacement.equals(placement)
                    && bestPlacement.hasRoomLocation(rl.getId()))
                roomLocationEl.addAttribute("best", "true");
            if (!roomElements.containsKey(getId("room", rl.getId()))) {
                // room location without room constraint
                Element roomEl = roomsEl.addElement("room").addAttribute("id", getId("room", rl.getId()));
                roomEl.addAttribute("constraint", "false");
                if (!iConvertIds && rl.getBuildingId() != null)
                    roomEl.addAttribute("building", getId("bldg", rl.getBuildingId()));
                if (iShowNames) {
                    roomEl.addAttribute("name", rl.getName());
                }
                roomElements.put(getId("room", rl.getId()), roomEl);
                roomEl.addAttribute("capacity", String.valueOf(rl.getRoomSize()));
                if (rl.getPosX() != null && rl.getPosY() != null)
                    roomEl.addAttribute("location", rl.getPosX() + "," + rl.getPosY());
                if (rl.getIgnoreTooFar())
                    roomEl.addAttribute("ignoreTooFar", "true");
            }
        }
        boolean first = true;
        for (TimeLocation tl : lecture.timeLocations()) {
            Element timeLocationEl = classEl.addElement("time");
            timeLocationEl.addAttribute("days",
                    sDF[7].format(Long.parseLong(Integer.toBinaryString(tl.getDayCode()))));
            timeLocationEl.addAttribute("start", String.valueOf(tl.getStartSlot()));
            timeLocationEl.addAttribute("length", String.valueOf(tl.getLength()));
            timeLocationEl.addAttribute("breakTime", String.valueOf(tl.getBreakTime()));
            if (iShowNames) {
                timeLocationEl.addAttribute("pref", String.valueOf(tl.getPreference()));
                timeLocationEl.addAttribute("npref", String.valueOf(tl.getNormalizedPreference()));
            } else {
                timeLocationEl.addAttribute("pref", String.valueOf(tl.getNormalizedPreference()));
            }
            if (!iConvertIds && tl.getTimePatternId() != null)
                timeLocationEl.addAttribute("pattern", getId("pat", tl.getTimePatternId()));
            if (first) {
                if (!iConvertIds && tl.getDatePatternId() != null)
                    classEl.addAttribute("datePattern", getId("dpat", String.valueOf(tl.getDatePatternId())));
                if (iShowNames)
                    classEl.addAttribute("datePatternName", tl.getDatePatternName());
                classEl.addAttribute("dates", bitset2string(tl.getWeekCode()));
                first = false;
            }
            if ((lecture.isCommitted() || iSaveCurrent) && placement != null
                    && placement.getTimeLocation().equals(tl))
                timeLocationEl.addAttribute("solution", "true");
            if (iSaveInitial && initialPlacement != null && initialPlacement.getTimeLocation().equals(tl))
                timeLocationEl.addAttribute("initial", "true");
            if (iSaveBest && bestPlacement != null && !bestPlacement.equals(placement)
                    && bestPlacement.getTimeLocation().equals(tl))
                timeLocationEl.addAttribute("best", "true");
        }
    }

    for (InstructorConstraint ic : getModel().getInstructorConstraints()) {
        if (iShowNames || ic.isIgnoreDistances()) {
            Element instrEl = instructorsEl.addElement("instructor").addAttribute("id",
                    getId("inst", ic.getResourceId()));
            if (iShowNames) {
                if (ic.getPuid() != null && ic.getPuid().length() > 0)
                    instrEl.addAttribute("puid", ic.getPuid());
                instrEl.addAttribute("name", ic.getName());
                if (ic.getType() != null && iShowNames)
                    instrEl.addAttribute("type", ic.getType().toString());
            }
            if (ic.isIgnoreDistances()) {
                instrEl.addAttribute("ignDist", "true");
            }
        }
        if (ic.getAvailableArray() != null) {
            HashSet<Long> done = new HashSet<Long>();
            for (int i = 0; i < ic.getAvailableArray().length; i++) {
                if (ic.getAvailableArray()[i] != null) {
                    for (Placement placement : ic.getAvailableArray()[i]) {
                        Lecture lecture = placement.variable();
                        if (done.add(lecture.getClassId())) {
                            Element classEl = classElements.get(lecture.getClassId());
                            classEl.addElement("instructor")
                                    .addAttribute("id", getId("inst", ic.getResourceId()))
                                    .addAttribute("solution", "true");
                        }
                    }
                }
            }
        }
    }
    if (instructorsEl.elements().isEmpty())
        root.remove(instructorsEl);

    Element grConstraintsEl = root.addElement("groupConstraints");
    for (GroupConstraint gc : getModel().getGroupConstraints()) {
        Element grEl = grConstraintsEl.addElement("constraint").addAttribute("id",
                getId("gr", String.valueOf(gc.getId())));
        grEl.addAttribute("type", gc.getType().reference());
        grEl.addAttribute("pref", gc.getPrologPreference());
        for (Lecture l : gc.variables()) {
            grEl.addElement("class").addAttribute("id", getId("class", l.getClassId()));
        }
    }
    for (SpreadConstraint spread : getModel().getSpreadConstraints()) {
        Element grEl = grConstraintsEl.addElement("constraint").addAttribute("id",
                getId("gr", String.valueOf(spread.getId())));
        grEl.addAttribute("type", "SPREAD");
        grEl.addAttribute("pref", Constants.sPreferenceRequired);
        if (iShowNames)
            grEl.addAttribute("name", spread.getName());
        for (Lecture l : spread.variables()) {
            grEl.addElement("class").addAttribute("id", getId("class", l.getClassId()));
        }
    }
    for (Constraint<Lecture, Placement> c : getModel().constraints()) {
        if (c instanceof MinimizeNumberOfUsedRoomsConstraint) {
            Element grEl = grConstraintsEl.addElement("constraint").addAttribute("id",
                    getId("gr", String.valueOf(c.getId())));
            grEl.addAttribute("type", "MIN_ROOM_USE");
            grEl.addAttribute("pref", Constants.sPreferenceRequired);
            for (Lecture l : c.variables()) {
                grEl.addElement("class").addAttribute("id", getId("class", l.getClassId()));
            }
        }
        if (c instanceof MinimizeNumberOfUsedGroupsOfTime) {
            Element grEl = grConstraintsEl.addElement("constraint").addAttribute("id",
                    getId("gr", String.valueOf(c.getId())));
            grEl.addAttribute("type", ((MinimizeNumberOfUsedGroupsOfTime) c).getConstraintName());
            grEl.addAttribute("pref", Constants.sPreferenceRequired);
            for (Lecture l : c.variables()) {
                grEl.addElement("class").addAttribute("id", getId("class", l.getClassId()));
            }
        }
    }
    for (ClassLimitConstraint clc : getModel().getClassLimitConstraints()) {
        Element grEl = grConstraintsEl.addElement("constraint").addAttribute("id",
                getId("gr", String.valueOf(clc.getId())));
        grEl.addAttribute("type", "CLASS_LIMIT");
        grEl.addAttribute("pref", Constants.sPreferenceRequired);
        if (clc.getParentLecture() != null) {
            grEl.addElement("parentClass").addAttribute("id",
                    getId("class", clc.getParentLecture().getClassId()));
        } else
            grEl.addAttribute("courseLimit", String.valueOf(clc.classLimit() - clc.getClassLimitDelta()));
        if (clc.getClassLimitDelta() != 0)
            grEl.addAttribute("delta", String.valueOf(clc.getClassLimitDelta()));
        if (iShowNames)
            grEl.addAttribute("name", clc.getName());
        for (Lecture l : clc.variables()) {
            grEl.addElement("class").addAttribute("id", getId("class", l.getClassId()));
        }
    }

    HashMap<Student, List<String>> students = new HashMap<Student, List<String>>();
    for (Lecture lecture : vars) {
        for (Student student : lecture.students()) {
            List<String> enrls = students.get(student);
            if (enrls == null) {
                enrls = new ArrayList<String>();
                students.put(student, enrls);
            }
            enrls.add(getId("class", lecture.getClassId()));
        }
    }

    Element studentsEl = root.addElement("students");
    for (Student student : new TreeSet<Student>(students.keySet())) {
        Element stEl = studentsEl.addElement("student").addAttribute("id", getId("student", student.getId()));
        if (iShowNames) {
            if (student.getAcademicArea() != null)
                stEl.addAttribute("area", student.getAcademicArea());
            if (student.getAcademicClassification() != null)
                stEl.addAttribute("classification", student.getAcademicClassification());
            if (student.getMajor() != null)
                stEl.addAttribute("major", student.getMajor());
            if (student.getCurriculum() != null)
                stEl.addAttribute("curriculum", student.getCurriculum());
        }
        for (Map.Entry<Long, Double> entry : student.getOfferingsMap().entrySet()) {
            Long offeringId = entry.getKey();
            Double weight = entry.getValue();
            Element offEl = stEl.addElement("offering").addAttribute("id",
                    getId("offering", offeringId.toString()));
            if (weight.doubleValue() != 1.0)
                offEl.addAttribute("weight", sStudentWeightFormat.format(weight));
        }
        if (iExportStudentSectioning || getModel().unassignedVariables().isEmpty()
                || student.getOfferingsMap().isEmpty()) {
            List<String> lectures = students.get(student);
            Collections.sort(lectures);
            for (String classId : lectures) {
                stEl.addElement("class").addAttribute("id", classId);
            }
        }
        Map<Long, Set<Lecture>> canNotEnroll = student.canNotEnrollSections();
        if (canNotEnroll != null) {
            for (Set<Lecture> canNotEnrollLects : canNotEnroll.values()) {
                for (Iterator<Lecture> i3 = canNotEnrollLects.iterator(); i3.hasNext();) {
                    stEl.addElement("prohibited-class").addAttribute("id",
                            getId("class", (i3.next()).getClassId()));
                }
            }
        }

        if (student.getCommitedPlacements() != null) {
            for (Placement placement : student.getCommitedPlacements()) {
                stEl.addElement("class").addAttribute("id", getId("class", placement.variable().getClassId()));
            }
        }
    }

    if (getModel().getProperties().getPropertyInt("MPP.GenTimePert", 0) > 0) {
        Element perturbationsEl = root.addElement("perturbations");
        int nrChanges = getModel().getProperties().getPropertyInt("MPP.GenTimePert", 0);
        List<Lecture> lectures = new ArrayList<Lecture>();
        while (lectures.size() < nrChanges) {
            Lecture lecture = ToolBox.random(getModel().assignedVariables());
            if (lecture.isCommitted() || lecture.timeLocations().size() <= 1 || lectures.contains(lecture))
                continue;
            Placement placement = lecture.getAssignment();
            TimeLocation tl = placement.getTimeLocation();
            perturbationsEl.addElement("class").addAttribute("id", getId("class", lecture.getClassId()))
                    .addAttribute("days",
                            sDF[7].format(Long.parseLong(Integer.toBinaryString(tl.getDayCode()))))
                    .addAttribute("start", String.valueOf(tl.getStartSlot()))
                    .addAttribute("length", String.valueOf(tl.getLength()));
            lectures.add(lecture);
        }
    }

    for (Map.Entry<Long, String> entry : depts.entrySet()) {
        Long id = entry.getKey();
        String name = entry.getValue();
        if (iShowNames) {
            departmentsEl.addElement("department").addAttribute("id", getId("dept", id.toString()))
                    .addAttribute("name", name);
        }
    }
    if (departmentsEl.elements().isEmpty())
        root.remove(departmentsEl);

    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:net.sf.cpsolver.ifs.example.tt.TimetableModel.java

License:Open Source License

public void saveAsXML(DataProperties cfg, boolean gen, Solution<Activity, Location> solution, File outFile)
        throws IOException {
    outFile.getParentFile().mkdirs();//from ww w . j  a  va 2 s . c  om
    sLogger.debug("Writting XML data to:" + outFile);

    Document document = DocumentHelper.createDocument();
    document.addComment("Interactive Timetabling - University Timetable Generator (version 2.0)");

    if (!assignedVariables().isEmpty()) {
        StringBuffer comments = new StringBuffer("Solution Info:\n");
        Map<String, String> solutionInfo = (solution == null ? getInfo() : 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 (a.getAssignment() != 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());
            if (a.getAssignment() != null) {
                Location location = a.getAssignment();
                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:net.sf.cpsolver.studentsct.StudentRequestXml.java

License:Open Source License

public static void main(String[] args) {
    try {/*from w  w w  . j a va  2s. c o  m*/
        ToolBox.configureLogging();
        StudentSectioningModel model = new StudentSectioningModel(new DataProperties());
        StudentSectioningXMLLoader xmlLoad = new StudentSectioningXMLLoader(model);
        xmlLoad.setInputFile(new File(args[0]));
        xmlLoad.load();
        Document document = exportModel(model);
        FileOutputStream fos = new FileOutputStream(new File(args[1]));
        (new XMLWriter(fos, OutputFormat.createPrettyPrint())).write(document);
        fos.flush();
        fos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:net.sf.cpsolver.studentsct.StudentSectioningXMLSaver.java

License:Open Source License

/**
 * Save an XML file/* w w w .  j  a v  a2  s.c  o  m*/
 * 
 * @param outFile
 *            output file
 */
public void save(File outFile) throws Exception {
    if (outFile == null)
        outFile = new File(iOutputFolder, "solution.xml");
    outFile.getParentFile().mkdirs();
    sLogger.debug("Writting XML data to:" + outFile);

    Document document = DocumentHelper.createDocument();
    document.addComment("Student Sectioning");

    if ((iSaveCurrent || iSaveBest)) { // &&
                                       // !getModel().assignedVariables().isEmpty()
        StringBuffer comments = new StringBuffer("Solution Info:\n");
        Map<String, String> solutionInfo = (getSolution() == null ? getModel().getExtendedInfo()
                : 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()));

    Element offeringsEl = root.addElement("offerings");
    for (Offering offering : getModel().getOfferings()) {
        Element offeringEl = offeringsEl.addElement("offering");
        offeringEl.addAttribute("id", getId("offering", offering.getId()));
        if (iShowNames)
            offeringEl.addAttribute("name", offering.getName());
        for (Course course : offering.getCourses()) {
            Element courseEl = offeringEl.addElement("course");
            courseEl.addAttribute("id", getId("course", course.getId()));
            if (iShowNames)
                courseEl.addAttribute("subjectArea", course.getSubjectArea());
            if (iShowNames)
                courseEl.addAttribute("courseNbr", course.getCourseNumber());
            if (iShowNames && course.getLimit() >= 0)
                courseEl.addAttribute("limit", String.valueOf(course.getLimit()));
            if (iShowNames && course.getProjected() != 0)
                courseEl.addAttribute("projected", String.valueOf(course.getProjected()));
        }
        for (Config config : offering.getConfigs()) {
            Element configEl = offeringEl.addElement("config");
            configEl.addAttribute("id", getId("config", config.getId()));
            if (config.getLimit() >= 0)
                configEl.addAttribute("limit", String.valueOf(config.getLimit()));
            if (iShowNames)
                configEl.addAttribute("name", config.getName());
            for (Subpart subpart : config.getSubparts()) {
                Element subpartEl = configEl.addElement("subpart");
                subpartEl.addAttribute("id", getId("subpart", subpart.getId()));
                subpartEl.addAttribute("itype", subpart.getInstructionalType());
                if (subpart.getParent() != null)
                    subpartEl.addAttribute("parent", getId("subpart", subpart.getParent().getId()));
                if (iShowNames)
                    subpartEl.addAttribute("name", subpart.getName());
                if (subpart.isAllowOverlap())
                    subpartEl.addAttribute("allowOverlap", "true");
                for (Section section : subpart.getSections()) {
                    Element sectionEl = subpartEl.addElement("section");
                    sectionEl.addAttribute("id", getId("section", section.getId()));
                    sectionEl.addAttribute("limit", String.valueOf(section.getLimit()));
                    if (section.getNameByCourse() != null)
                        for (Map.Entry<Long, String> entry : section.getNameByCourse().entrySet())
                            sectionEl.addElement("cname").addAttribute("id", entry.getKey().toString())
                                    .setText(entry.getValue());
                    if (section.getParent() != null)
                        sectionEl.addAttribute("parent", getId("section", section.getParent().getId()));
                    if (iShowNames && section.getChoice().getInstructorIds() != null)
                        sectionEl.addAttribute("instructorIds", section.getChoice().getInstructorIds());
                    if (iShowNames && section.getChoice().getInstructorNames() != null)
                        sectionEl.addAttribute("instructorNames", section.getChoice().getInstructorNames());
                    if (iShowNames)
                        sectionEl.addAttribute("name", section.getName());
                    if (section.getPlacement() != null) {
                        TimeLocation tl = section.getPlacement().getTimeLocation();
                        if (tl != null) {
                            Element timeLocationEl = sectionEl.addElement("time");
                            timeLocationEl.addAttribute("days",
                                    sDF[7].format(Long.parseLong(Integer.toBinaryString(tl.getDayCode()))));
                            timeLocationEl.addAttribute("start", String.valueOf(tl.getStartSlot()));
                            timeLocationEl.addAttribute("length", String.valueOf(tl.getLength()));
                            if (tl.getBreakTime() != 0)
                                timeLocationEl.addAttribute("breakTime", String.valueOf(tl.getBreakTime()));
                            if (iShowNames && tl.getTimePatternId() != null)
                                timeLocationEl.addAttribute("pattern",
                                        getId("timePattern", tl.getTimePatternId()));
                            if (iShowNames && tl.getDatePatternId() != null)
                                timeLocationEl.addAttribute("datePattern", tl.getDatePatternId().toString());
                            if (iShowNames && tl.getDatePatternName() != null
                                    && tl.getDatePatternName().length() > 0)
                                timeLocationEl.addAttribute("datePatternName", tl.getDatePatternName());
                            timeLocationEl.addAttribute("dates", bitset2string(tl.getWeekCode()));
                            if (iShowNames)
                                timeLocationEl.setText(tl.getLongName());
                        }
                        for (RoomLocation rl : section.getRooms()) {
                            Element roomLocationEl = sectionEl.addElement("room");
                            roomLocationEl.addAttribute("id", getId("room", rl.getId()));
                            if (iShowNames && rl.getBuildingId() != null)
                                roomLocationEl.addAttribute("building", getId("building", rl.getBuildingId()));
                            if (iShowNames && rl.getName() != null)
                                roomLocationEl.addAttribute("name", rl.getName());
                            roomLocationEl.addAttribute("capacity", String.valueOf(rl.getRoomSize()));
                            if (rl.getPosX() != null && rl.getPosY() != null)
                                roomLocationEl.addAttribute("location", rl.getPosX() + "," + rl.getPosY());
                            if (rl.getIgnoreTooFar())
                                roomLocationEl.addAttribute("ignoreTooFar", "true");
                        }
                    }
                    if (iSaveOnlineSectioningInfo) {
                        if (section.getSpaceHeld() != 0.0)
                            sectionEl.addAttribute("hold", sStudentWeightFormat.format(section.getSpaceHeld()));
                        if (section.getSpaceExpected() != 0.0)
                            sectionEl.addAttribute("expect",
                                    sStudentWeightFormat.format(section.getSpaceExpected()));
                    }
                }
            }
        }
        if (!offering.getReservations().isEmpty()) {
            for (Reservation r : offering.getReservations()) {
                Element reservationEl = offeringEl.addElement("reservation");
                reservationEl.addAttribute("id", getId("reservation", r.getId()));
                if (r instanceof GroupReservation) {
                    GroupReservation gr = (GroupReservation) r;
                    reservationEl.addAttribute("type", "group");
                    for (Long studentId : gr.getStudentIds())
                        reservationEl.addElement("student").addAttribute("id", getId("student", studentId));
                    if (gr.getLimit() >= 0.0)
                        reservationEl.addAttribute("limit", String.valueOf(gr.getLimit()));
                } else if (r instanceof IndividualReservation) {
                    reservationEl.addAttribute("type", "individual");
                    for (Long studentId : ((IndividualReservation) r).getStudentIds())
                        reservationEl.addElement("student").addAttribute("id", getId("student", studentId));
                } else if (r instanceof CurriculumReservation) {
                    reservationEl.addAttribute("type", "curriculum");
                    CurriculumReservation cr = (CurriculumReservation) r;
                    if (cr.getLimit() >= 0.0)
                        reservationEl.addAttribute("limit", String.valueOf(cr.getLimit()));
                    reservationEl.addAttribute("area", cr.getAcademicArea());
                    for (String clasf : cr.getClassifications())
                        reservationEl.addElement("classification").addAttribute("code", clasf);
                    for (String major : cr.getMajors())
                        reservationEl.addElement("major").addAttribute("code", major);
                } else if (r instanceof CourseReservation) {
                    reservationEl.addAttribute("type", "course");
                    CourseReservation cr = (CourseReservation) r;
                    reservationEl.addAttribute("course", getId("course", cr.getCourse().getId()));
                }
                for (Config config : r.getConfigs())
                    reservationEl.addElement("config").addAttribute("id", getId("config", config.getId()));
                for (Map.Entry<Subpart, Set<Section>> entry : r.getSections().entrySet()) {
                    for (Section section : entry.getValue()) {
                        reservationEl.addElement("section").addAttribute("id",
                                getId("section", section.getId()));
                    }
                }
            }
        }
    }

    Element studentsEl = root.addElement("students");
    for (Student student : getModel().getStudents()) {
        Element studentEl = studentsEl.addElement("student");
        studentEl.addAttribute("id", getId("student", student.getId()));
        if (student.isDummy())
            studentEl.addAttribute("dummy", "true");
        if (iSaveStudentInfo) {
            for (AcademicAreaCode aac : student.getAcademicAreaClasiffications()) {
                Element aacEl = studentEl.addElement("classification");
                if (aac.getArea() != null)
                    aacEl.addAttribute("area", aac.getArea());
                if (aac.getCode() != null)
                    aacEl.addAttribute("code", aac.getCode());
            }
            for (AcademicAreaCode aac : student.getMajors()) {
                Element aacEl = studentEl.addElement("major");
                if (aac.getArea() != null)
                    aacEl.addAttribute("area", aac.getArea());
                if (aac.getCode() != null)
                    aacEl.addAttribute("code", aac.getCode());
            }
            for (AcademicAreaCode aac : student.getMinors()) {
                Element aacEl = studentEl.addElement("minor");
                if (aac.getArea() != null)
                    aacEl.addAttribute("area", aac.getArea());
                if (aac.getCode() != null)
                    aacEl.addAttribute("code", aac.getCode());
            }
        }
        for (Request request : student.getRequests()) {
            if (request instanceof FreeTimeRequest) {
                Element requestEl = studentEl.addElement("freeTime");
                FreeTimeRequest ft = (FreeTimeRequest) request;
                requestEl.addAttribute("id", getId("request", request.getId()));
                requestEl.addAttribute("priority", String.valueOf(request.getPriority()));
                if (request.isAlternative())
                    requestEl.addAttribute("alternative", "true");
                if (request.getWeight() != 1.0)
                    requestEl.addAttribute("weight", sStudentWeightFormat.format(request.getWeight()));
                TimeLocation tl = ft.getTime();
                if (tl != null) {
                    requestEl.addAttribute("days",
                            sDF[7].format(Long.parseLong(Integer.toBinaryString(tl.getDayCode()))));
                    requestEl.addAttribute("start", String.valueOf(tl.getStartSlot()));
                    requestEl.addAttribute("length", String.valueOf(tl.getLength()));
                    if (iShowNames && tl.getDatePatternId() != null)
                        requestEl.addAttribute("datePattern", tl.getDatePatternId().toString());
                    requestEl.addAttribute("dates", bitset2string(tl.getWeekCode()));
                    if (iShowNames)
                        requestEl.setText(tl.getLongName());
                }
                if (iSaveInitial && request.getInitialAssignment() != null) {
                    requestEl.addElement("initial");
                }
                if (iSaveCurrent && request.getAssignment() != null) {
                    requestEl.addElement("current");
                }
                if (iSaveBest && request.getBestAssignment() != null) {
                    requestEl.addElement("best");
                }
            } else if (request instanceof CourseRequest) {
                CourseRequest cr = (CourseRequest) request;
                Element requestEl = studentEl.addElement("course");
                requestEl.addAttribute("id", getId("request", request.getId()));
                requestEl.addAttribute("priority", String.valueOf(request.getPriority()));
                if (request.isAlternative())
                    requestEl.addAttribute("alternative", "true");
                if (request.getWeight() != 1.0)
                    requestEl.addAttribute("weight", sStudentWeightFormat.format(request.getWeight()));
                requestEl.addAttribute("waitlist", cr.isWaitlist() ? "true" : "false");
                if (cr.getTimeStamp() != null)
                    requestEl.addAttribute("timeStamp", cr.getTimeStamp().toString());
                boolean first = true;
                for (Course course : cr.getCourses()) {
                    if (first)
                        requestEl.addAttribute("course", getId("course", course.getId()));
                    else
                        requestEl.addElement("alternative").addAttribute("course",
                                getId("course", course.getId()));
                    first = false;
                }
                for (Choice choice : cr.getWaitlistedChoices()) {
                    Element choiceEl = requestEl.addElement("waitlisted");
                    choiceEl.addAttribute("offering", getId("offering", choice.getOffering().getId()));
                    choiceEl.setText(choice.getId());
                }
                for (Choice choice : cr.getSelectedChoices()) {
                    Element choiceEl = requestEl.addElement("selected");
                    choiceEl.addAttribute("offering", getId("offering", choice.getOffering().getId()));
                    choiceEl.setText(choice.getId());
                }
                if (iSaveInitial && request.getInitialAssignment() != null) {
                    Element assignmentEl = requestEl.addElement("initial");
                    Enrollment enrollment = request.getInitialAssignment();
                    if (enrollment.getReservation() != null)
                        assignmentEl.addAttribute("reservation",
                                getId("reservation", enrollment.getReservation().getId()));
                    for (Section section : enrollment.getSections()) {
                        Element sectionEl = assignmentEl.addElement("section").addAttribute("id",
                                getId("section", section.getId()));
                        if (iShowNames)
                            sectionEl.setText(section.getName() + " "
                                    + (section.getTime() == null ? " Arr Hrs"
                                            : " " + section.getTime().getLongName())
                                    + (section.getNrRooms() == 0 ? ""
                                            : " " + section.getPlacement().getRoomName(","))
                                    + (section.getChoice().getInstructorNames() == null ? ""
                                            : " " + section.getChoice().getInstructorNames()));
                    }
                }
                if (iSaveCurrent && request.getAssignment() != null) {
                    Element assignmentEl = requestEl.addElement("current");
                    Enrollment enrollment = request.getAssignment();
                    if (enrollment.getReservation() != null)
                        assignmentEl.addAttribute("reservation",
                                getId("reservation", enrollment.getReservation().getId()));
                    for (Section section : enrollment.getSections()) {
                        Element sectionEl = assignmentEl.addElement("section").addAttribute("id",
                                getId("section", section.getId()));
                        if (iShowNames)
                            sectionEl.setText(section.getName() + " "
                                    + (section.getTime() == null ? " Arr Hrs"
                                            : " " + section.getTime().getLongName())
                                    + (section.getNrRooms() == 0 ? ""
                                            : " " + section.getPlacement().getRoomName(","))
                                    + (section.getChoice().getInstructorNames() == null ? ""
                                            : " " + section.getChoice().getInstructorNames()));
                    }
                }
                if (iSaveBest && request.getBestAssignment() != null) {
                    Element assignmentEl = requestEl.addElement("best");
                    Enrollment enrollment = request.getBestAssignment();
                    if (enrollment.getReservation() != null)
                        assignmentEl.addAttribute("reservation",
                                getId("reservation", enrollment.getReservation().getId()));
                    for (Section section : enrollment.getSections()) {
                        Element sectionEl = assignmentEl.addElement("section").addAttribute("id",
                                getId("section", section.getId()));
                        if (iShowNames)
                            sectionEl.setText(section.getName() + " "
                                    + (section.getTime() == null ? " Arr Hrs"
                                            : " " + section.getTime().getLongName())
                                    + (section.getNrRooms() == 0 ? ""
                                            : " " + section.getPlacement().getRoomName(","))
                                    + (section.getChoice().getInstructorNames() == null ? ""
                                            : " " + section.getChoice().getInstructorNames()));
                    }
                }
            }
        }
    }

    if (iShowNames) {
        Progress.getInstance(getModel()).save(root);
    }

    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)
        IdConvertor.getInstance().save();
}

From source file:net.sf.eclipsecs.core.util.XMLUtil.java

License:Open Source License

/**
 * Creates a pretty printed representation of the document as a byte array.
 * //  www  . ja  va 2s. c om
 * @param document the document
 * @return the document as a byte array (UTF-8)
 * @throws IOException Exception while serializing the document
 */
public static byte[] toByteArray(Document document) throws IOException {

    ByteArrayOutputStream byteOut = new ByteArrayOutputStream(512);

    // Pretty print the document to System.out
    OutputFormat format = OutputFormat.createPrettyPrint();
    XMLWriter writer = new XMLWriter(byteOut, format);
    writer.write(document);

    return byteOut.toByteArray();
}

From source file:net.sf.ginp.config.Configuration.java

License:Open Source License

/**
 *  Saves current settings to Disk./*from w  w w  .  jav a2 s.  c  o m*/
 */
public static void writeConfig() {
    try {
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer = new XMLWriter(new FileWriter(configfilelocation), format);
        writer.write(document);
        writer.close();
        log.info("Writen config file to disk.");

        // check It
        try {
            FileInputStream fis = new FileInputStream(new File(configfilelocation));
            SetupManager service = ModelUtil.getSetupManager();
            document = service.testValidConfig(fis);
            configOK = true;
        } catch (Exception ex) {
            log.error("Error parsing new config file", ex);
        }
    } catch (Exception e) {
        log.error("Error writing config file to disk.", e);
    }

    readConfig();
}

From source file:net.sf.ginp.setup.SetupManagerImpl.java

License:Open Source License

/**
 * @param visit//w  ww  .jav  a  2 s  . c  o  m
 * @param outputDocument
 * @throws UnsupportedEncodingException
 * @throws IOException generally, and specifically
 *  FileNotFoundException and UnsupportedEncodingException
 */
public final boolean writeConfig(final SetupVisit visit, final Document outputDocument) throws IOException {
    FileOutputStream outputStream = null;
    XMLWriter write = null;
    boolean success = false;

    try {
        String confFileLocation = Configuration.getConfigfilelocation();

        if (confFileLocation == null) {
            log.warn("Configuration.getConfigfilelocation() is NULL!");
        }

        // make sure directory exists and be verbose about this to log.
        File configDir = new File(Configuration.getConfigfilelocationPath());

        if (!configDir.exists()) {
            if (configDir.mkdirs()) {
                log.info("Config directory created at: " + configDir.getAbsolutePath());
            } else {
                log.error("Can not create config directory at: " + configDir.getAbsolutePath());
            }
        } else {
            if (log.isDebugEnabled()) {
                log.debug("Config dir exists at:" + configDir.getAbsolutePath());
            }
        }

        // warn about overwrite
        File configFile = new File(confFileLocation);

        if (configFile.exists()) {
            log.warn("Overwriting config file at: " + configFile.getAbsolutePath());
        }

        outputStream = new FileOutputStream(configFile, false);

        OutputFormat format = OutputFormat.createPrettyPrint();
        write = new XMLWriter(outputStream, format);
        write.write(outputDocument);
        success = configFile.exists();
    } catch (Exception ex) {
        log.error("Error writing config.", ex);
    } finally {
        if (write != null) {
            write.flush();
            write.close();
        }

        if (outputStream != null) {
            outputStream.flush();
            outputStream.close();
        }
    }

    return success;
}