Example usage for org.dom4j.io XMLWriter close

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

Introduction

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

Prototype

public void close() throws IOException 

Source Link

Document

Closes the underlying Writer

Usage

From source file:org.tomac.tools.converter.XmlTranslator.java

License:LGPL

public void write(Document document, File outputDir) throws IOException {

    // lets write to a file
    final OutputFormat format = OutputFormat.createPrettyPrint();
    XMLWriter writer = new XMLWriter(new FileWriter(outputDir), format);
    writer.write(document);/*from w  ww  .j a  va  2s  .  c om*/
    writer.close();

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

}

From source file:org.unitime.banner.queueprocessor.util.ClobTools.java

License:Apache License

public static Clob documentToCLOB(Document document, Connection conn) throws IOException, SQLException {
    Clob clob = conn.createClob();
    XMLWriter writer = new XMLWriter(clob.setCharacterStream(1l), OutputFormat.createCompactFormat());
    writer.write(document);/*from  w  w  w.  jav a  2 s.c  om*/
    writer.flush();
    writer.close();
    return clob;
}

From source file:org.unitime.commons.hibernate.blob.XmlBlobType.java

License:Open Source License

public void nullSafeSet(PreparedStatement ps, Object value, int index, SessionImplementor session)
        throws SQLException, HibernateException {
    if (value == null) {
        ps.setNull(index, sqlTypes()[0]);
    } else {/*from  w  ww  .  j av a2  s .com*/
        try {
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            XMLWriter writer = new XMLWriter(new GZIPOutputStream(bytes), OutputFormat.createCompactFormat());
            writer.write((Document) value);
            writer.flush();
            writer.close();
            ps.setBinaryStream(index, new ByteArrayInputStream(bytes.toByteArray(), 0, bytes.size()),
                    bytes.size());
        } catch (IOException e) {
            throw new HibernateException(e.getMessage(), e);
        }
    }
}

From source file:org.unitime.commons.hibernate.blob.XmlBlobType.java

License:Open Source License

public Serializable disassemble(Object value) throws HibernateException {
    try {//from w  w  w  .  j av a  2  s.  c  om
        if (value == null)
            return null;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        XMLWriter writer = new XMLWriter(new GZIPOutputStream(out), OutputFormat.createCompactFormat());
        writer.write((Document) value);
        writer.flush();
        writer.close();
        return out.toByteArray();
    } catch (UnsupportedEncodingException e) {
        throw new HibernateException(e.getMessage(), e);
    } catch (IOException e) {
        throw new HibernateException(e.getMessage(), e);
    }
}

From source file:org.unitime.commons.hibernate.blob.XmlClobType.java

License:Open Source License

public void nullSafeSet(PreparedStatement ps, Object value, int index, SessionImplementor session)
        throws SQLException, HibernateException {
    if (value == null) {
        ps.setNull(index, sqlTypes()[0]);
    } else {/*w  ww. j a v a  2  s  .c o m*/
        try {
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            XMLWriter writer = new XMLWriter(bytes, OutputFormat.createCompactFormat());
            writer.write((Document) value);
            writer.flush();
            writer.close();
            ps.setCharacterStream(index, new CharArrayReader(bytes.toString().toCharArray(), 0, bytes.size()),
                    bytes.size());
        } catch (IOException e) {
            throw new HibernateException(e.getMessage(), e);
        }
    }
}

From source file:org.unitime.commons.hibernate.blob.XmlClobType.java

License:Open Source License

public Serializable disassemble(Object value) throws HibernateException {
    try {//from  w  w  w.  j av a2  s. c  o  m
        if (value == null)
            return null;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        XMLWriter writer = new XMLWriter(out, OutputFormat.createCompactFormat());
        writer.write((Document) value);
        writer.flush();
        writer.close();
        return out.toByteArray();
    } catch (UnsupportedEncodingException e) {
        throw new HibernateException(e.getMessage(), e);
    } catch (IOException e) {
        throw new HibernateException(e.getMessage(), e);
    }
}

From source file:org.unitime.timetable.action.SectioningDemoAction.java

License:Open Source License

/** 
 * Method execute//  w  w w .  jav  a  2 s.  c  om
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    HttpSession httpSession = request.getSession();
    if (!Web.isLoggedIn(httpSession) || !Web.isAdmin(httpSession)) {
        throw new Exception("Access Denied.");
    }

    MessageResources rsc = getResources(request);
    User user = Web.getUser(request.getSession());
    Session session = Session.getCurrentAcadSession(user);
    SectioningDemoForm frm = (SectioningDemoForm) form;
    ActionMessages errors = null;

    String op = frm.getOp();
    if (op == null || op.trim().length() == 0)
        op = rsc.getMessage("op.view");
    if (request.getParameter("op2") != null && request.getParameter("op2").length() > 0)
        op = request.getParameter("op2");

    frm.setOp(op);

    // First access
    if (op.equals(rsc.getMessage("op.view"))) {
        doLoad(request, frm);
        request.getSession().removeAttribute("LastSolution");
    }

    Element studentEl = (Element) request.getSession().getAttribute("LastSolution");
    if (studentEl != null) {
        frm.load(session, studentEl, false, request);
    }

    if ("Add Request".equals(op)) {
        frm.setNrRequests(frm.getNrRequests() + 1);
    }

    if ("Add Alternative Request".equals(op)) {
        frm.setNrAltRequests(frm.getNrAltRequests() + 1);
    }

    if ("Delete".equals(op)) {
        frm.removeRequest(Integer.parseInt(request.getParameter("reqIdx")));
    }

    if ("Move Up".equals(op)) {
        frm.moveRequest(Integer.parseInt(request.getParameter("reqIdx")), -1);
    }

    if ("Move Down".equals(op)) {
        frm.moveRequest(Integer.parseInt(request.getParameter("reqIdx")), +1);
    }

    if ("Clear".equals(op)) {
        frm.getCourseAssignments().clear();
        frm.getMessages().clear();
    }

    if ("Unload".equals(op)) {
        frm.reset(mapping, request);
    }

    if ("Load".equals(op)) {
        errors = frm.validate(mapping, request);
        if (errors == null || errors.size() == 0) {
            if (frm.getStudentId() == null || frm.getStudentId().length() == 0) {
                errors.add("studentId", new ActionMessage("errors.generic", "No student id provided."));
                saveErrors(request, errors);
            } else {
                Student student = Student.findByExternalId(session.getUniqueId(), frm.getStudentId());
                if (student == null) {
                    frm.setStudentLoaded(false);
                    errors.add("studentId", new ActionMessage("errors.generic",
                            "Student with id " + frm.getStudentId() + " does not exists."));
                    saveErrors(request, errors);
                    frm.reset(mapping, request);
                } else {
                    Document requestXml = DocumentHelper.createDocument();
                    Element requestEl = requestXml.addElement("request");
                    requestEl.addAttribute("campus", session.getAcademicInitiative());
                    requestEl.addAttribute("year", session.getAcademicYear());
                    requestEl.addAttribute("term", session.getAcademicTerm());
                    requestEl.addAttribute("version", "1.1");
                    requestEl.addAttribute("timestamp", new Date().toString());

                    studentEl = requestEl.addElement("student");
                    studentEl.addAttribute("key", frm.getStudentId());

                    studentEl.addElement("retrieveCourseRequests");

                    Document responseXml = StudentSectioningTest.testSectioning(requestXml);
                    studentEl = responseXml.getRootElement().element("student");

                    frm.load(session, studentEl, true, null);

                    if (studentEl != null) {
                        request.getSession().setAttribute("LastSolution", studentEl);
                    } else {
                        request.getSession().removeAttribute("LastSolution");
                    }

                    File requestFile = ApplicationProperties.getTempFile("request", "xml");
                    XMLWriter out = new XMLWriter(new FileOutputStream(requestFile),
                            OutputFormat.createPrettyPrint());
                    out.write(requestXml);
                    out.flush();
                    out.close();
                    frm.setRequestFile("temp/" + requestFile.getName());

                    File responseFile = ApplicationProperties.getTempFile("response", "xml");
                    out = new XMLWriter(new FileOutputStream(responseFile), OutputFormat.createPrettyPrint());
                    out.write(responseXml);
                    out.flush();
                    out.close();
                    frm.setResponseFile("temp/" + responseFile.getName());

                    frm.setStudentLoaded(true);
                }
            }
        } else {
            saveErrors(request, errors);
        }
    }

    // Submit request
    if (op.equals(rsc.getMessage("button.submitStudentRequest")) || op.equals("Save")) {
        errors = frm.validate(mapping, request);
        if (errors == null || errors.size() == 0) {

            Document requestXml = DocumentHelper.createDocument();
            Element requestEl = requestXml.addElement("request");
            requestEl.addAttribute("campus", session.getAcademicInitiative());
            requestEl.addAttribute("year", session.getAcademicYear());
            requestEl.addAttribute("term", session.getAcademicTerm());
            requestEl.addAttribute("version", "1.1");
            requestEl.addAttribute("timestamp", new Date().toString());

            studentEl = requestEl.addElement("student");
            studentEl.addAttribute("key", (frm.getStudentId() == null || frm.getStudentId().length() == 0 ? "-1"
                    : frm.getStudentId()));

            frm.save(session, studentEl, op.equals("Save"));

            Document responseXml = StudentSectioningTest.testSectioning(requestXml);
            studentEl = responseXml.getRootElement().element("student");

            frm.load(session, studentEl, false, null);

            if (studentEl != null) {
                request.getSession().setAttribute("LastSolution", studentEl);
            } else {
                request.getSession().removeAttribute("LastSolution");
            }

            File requestFile = ApplicationProperties.getTempFile("request", "xml");
            XMLWriter out = new XMLWriter(new FileOutputStream(requestFile), OutputFormat.createPrettyPrint());
            out.write(requestXml);
            out.flush();
            out.close();
            frm.setRequestFile("temp/" + requestFile.getName());

            File responseFile = ApplicationProperties.getTempFile("response", "xml");
            out = new XMLWriter(new FileOutputStream(responseFile), OutputFormat.createPrettyPrint());
            out.write(responseXml);
            out.flush();
            out.close();
            frm.setResponseFile("temp/" + responseFile.getName());

        } else {
            saveErrors(request, errors);
        }
    }

    return mapping.findForward("displayForm");

}

From source file:org.unitime.timetable.backup.SessionBackup.java

License:Open Source License

@Override
public void backup(OutputStream out, Progress progress, Long sessionId) throws IOException {
    iOut = CodedOutputStream.newInstance(out);
    iProgress = progress;/*from  ww  w. j ava 2  s.  c o m*/
    iSessionId = sessionId;
    iHibSession = new _RootDAO().createNewSession();
    iHibSession.setCacheMode(CacheMode.IGNORE);
    iHibSessionFactory = iHibSession.getSessionFactory();
    try {
        iProgress.setStatus("Exporting Session");
        iProgress.setPhase("Loading Model", 3);
        TreeSet<ClassMetadata> allMeta = new TreeSet<ClassMetadata>(new Comparator<ClassMetadata>() {
            @Override
            public int compare(ClassMetadata m1, ClassMetadata m2) {
                return m1.getEntityName().compareTo(m2.getEntityName());
            }
        });
        allMeta.addAll(iHibSessionFactory.getAllClassMetadata().values());
        iProgress.incProgress();

        Queue<QueueItem> queue = new LinkedList<QueueItem>();

        queue.add(new QueueItem(iHibSessionFactory.getClassMetadata(Session.class), null, "uniqueId",
                Relation.None));

        Set<String> avoid = new HashSet<String>();
        // avoid following relations
        avoid.add(TimetableManager.class.getName() + ".departments");
        avoid.add(TimetableManager.class.getName() + ".solverGroups");
        avoid.add(DistributionType.class.getName() + ".departments");
        avoid.add(LastLikeCourseDemand.class.getName() + ".student");
        avoid.add(Student.class.getName() + ".lastLikeCourseDemands");

        Set<String> disallowedNotNullRelations = new HashSet<String>();
        disallowedNotNullRelations.add(Assignment.class.getName() + ".datePattern");
        disallowedNotNullRelations.add(Assignment.class.getName() + ".timePattern");
        disallowedNotNullRelations.add(LastLikeCourseDemand.class.getName() + ".student");
        disallowedNotNullRelations.add(OnlineSectioningLog.class.getName() + ".session");

        Map<String, List<QueueItem>> data = new HashMap<String, List<QueueItem>>();
        List<QueueItem> sessions = new ArrayList<QueueItem>();
        sessions.add(queue.peek());
        data.put(queue.peek().name(), sessions);

        QueueItem item = null;
        while ((item = queue.poll()) != null) {
            if (item.size() == 0)
                continue;
            for (ClassMetadata meta : allMeta) {
                if (meta.hasSubclasses())
                    continue;
                for (int i = 0; i < meta.getPropertyNames().length; i++) {
                    String property = meta.getPropertyNames()[i];
                    if (disallowedNotNullRelations.contains(meta.getEntityName() + "." + property)
                            || meta.getPropertyNullability()[i])
                        continue;
                    Type type = meta.getPropertyTypes()[i];
                    if (type instanceof EntityType && type.getReturnedClass().equals(item.clazz())) {
                        QueueItem qi = new QueueItem(meta, item, property, Relation.Parent);
                        if (!data.containsKey(qi.name())) {
                            List<QueueItem> items = new ArrayList<QueueItem>();
                            data.put(qi.name(), items);
                            queue.add(qi);
                            items.add(qi);
                            if (qi.size() > 0)
                                iProgress.info("Parent: " + qi);
                        }
                    }
                }
            }
        }
        iProgress.incProgress();

        for (List<QueueItem> list : data.values())
            queue.addAll(list);

        // The following part is needed to ensure that instructor distribution preferences are saved including their distribution types 
        List<QueueItem> distributions = new ArrayList<QueueItem>();
        for (QueueItem instructor : data.get(DepartmentalInstructor.class.getName())) {
            QueueItem qi = new QueueItem(iHibSessionFactory.getClassMetadata(DistributionPref.class),
                    instructor, "owner", Relation.Parent);
            distributions.add(qi);
            queue.add(qi);
            if (qi.size() > 0)
                iProgress.info("Extra: " + qi);
        }
        data.put(DistributionPref.class.getName(), distributions);

        while ((item = queue.poll()) != null) {
            if (item.size() == 0)
                continue;
            for (int i = 0; i < item.meta().getPropertyNames().length; i++) {
                String property = item.meta().getPropertyNames()[i];
                Type type = item.meta().getPropertyTypes()[i];
                if (type instanceof EntityType) {
                    if (avoid.contains(item.name() + "." + property))
                        continue;

                    ClassMetadata meta = iHibSessionFactory.getClassMetadata(type.getReturnedClass());
                    if (item.contains(meta.getEntityName()))
                        continue;

                    QueueItem qi = new QueueItem(meta, item, property, Relation.One);
                    List<QueueItem> items = data.get(qi.name());
                    if (items == null) {
                        items = new ArrayList<QueueItem>();
                        data.put(qi.name(), items);
                    }
                    queue.add(qi);
                    items.add(qi);

                    if (qi.size() > 0)
                        iProgress.info("One: " + qi);
                }
                if (type instanceof CollectionType) {
                    if (avoid.contains(item.name() + "." + property))
                        continue;

                    ClassMetadata meta = iHibSessionFactory.getClassMetadata(((CollectionType) type)
                            .getElementType((SessionFactoryImplementor) iHibSessionFactory).getReturnedClass());
                    if (meta == null || item.contains(meta.getEntityName()))
                        continue;

                    QueueItem qi = new QueueItem(meta, item, property, Relation.Many);
                    List<QueueItem> items = data.get(qi.name());
                    if (items == null) {
                        items = new ArrayList<QueueItem>();
                        data.put(qi.name(), items);
                    }
                    queue.add(qi);
                    items.add(qi);

                    if (qi.size() > 0)
                        iProgress.info("Many: " + qi);
                }
            }
        }
        iProgress.incProgress();

        Map<String, Set<Serializable>> allExportedIds = new HashMap<String, Set<Serializable>>();
        for (String name : new TreeSet<String>(data.keySet())) {
            List<QueueItem> list = data.get(name);
            Map<String, TableData.Table.Builder> tables = new HashMap<String, TableData.Table.Builder>();
            for (QueueItem current : list) {
                if (current.size() == 0)
                    continue;
                iProgress.info("Loading " + current);
                List<Object> objects = current.list();
                if (objects == null || objects.isEmpty())
                    continue;
                iProgress.setPhase(current.abbv() + " [" + objects.size() + "]", objects.size());
                objects: for (Object object : objects) {
                    iProgress.incProgress();

                    // Get meta data (check for sub-classes)
                    ClassMetadata meta = iHibSessionFactory.getClassMetadata(object.getClass());
                    if (meta == null)
                        meta = current.meta();
                    if (meta.hasSubclasses()) {
                        for (Iterator i = iHibSessionFactory.getAllClassMetadata().entrySet().iterator(); i
                                .hasNext();) {
                            Map.Entry entry = (Map.Entry) i.next();
                            ClassMetadata classMetadata = (ClassMetadata) entry.getValue();
                            if (classMetadata.getMappedClass().isInstance(object)
                                    && !classMetadata.hasSubclasses()) {
                                meta = classMetadata;
                                break;
                            }
                        }
                    }

                    // Get unique identifier
                    Serializable id = meta.getIdentifier(object, (SessionImplementor) iHibSession);

                    // Check if already exported
                    Set<Serializable> exportedIds = allExportedIds.get(meta.getEntityName());
                    if (exportedIds == null) {
                        exportedIds = new HashSet<Serializable>();
                        allExportedIds.put(meta.getEntityName(), exportedIds);
                    }
                    if (!exportedIds.add(id))
                        continue;

                    // Check relation to an academic session (if exists)
                    for (String property : meta.getPropertyNames()) {
                        Type type = meta.getPropertyType(property);
                        if (type instanceof EntityType && type.getReturnedClass().equals(Session.class)) {
                            Session s = (Session) meta.getPropertyValue(object, property);
                            if (s != null && !s.getUniqueId().equals(iSessionId)) {
                                iProgress.warn(meta.getEntityName()
                                        .substring(meta.getEntityName().lastIndexOf('.') + 1) + "@" + id
                                        + " belongs to a different academic session (" + s + ")");
                                continue objects; // wrong session
                            }
                        }
                    }

                    // Get appropriate table
                    TableData.Table.Builder table = tables.get(meta.getEntityName());
                    if (table == null) {
                        table = TableData.Table.newBuilder();
                        tables.put(meta.getEntityName(), table);
                        table.setName(meta.getEntityName());
                    }

                    // Export object
                    TableData.Record.Builder record = TableData.Record.newBuilder();
                    record.setId(id.toString());
                    for (String property : meta.getPropertyNames()) {
                        Type type = meta.getPropertyType(property);
                        Object value = meta.getPropertyValue(object, property);
                        if (value == null)
                            continue;
                        TableData.Element.Builder element = TableData.Element.newBuilder();
                        element.setName(property);
                        if (type instanceof PrimitiveType) {
                            element.addValue(((PrimitiveType) type).toString(value));
                        } else if (type instanceof StringType) {
                            element.addValue(((StringType) type).toString((String) value));
                        } else if (type instanceof BinaryType) {
                            element.addValueBytes(ByteString.copyFrom((byte[]) value));
                        } else if (type instanceof TimestampType) {
                            element.addValue(((TimestampType) type).toString((Date) value));
                        } else if (type instanceof DateType) {
                            element.addValue(((DateType) type).toString((Date) value));
                        } else if (type instanceof EntityType) {
                            List<Object> ids = current.relation(property, id, false);
                            if (ids != null)
                                for (Object i : ids)
                                    element.addValue(i.toString());
                            iHibSession.evict(value);
                        } else if (type instanceof CustomType && value instanceof Document) {
                            if (object instanceof CurriculumClassification && property.equals("students"))
                                continue;
                            StringWriter w = new StringWriter();
                            XMLWriter x = new XMLWriter(w, OutputFormat.createCompactFormat());
                            x.write((Document) value);
                            x.flush();
                            x.close();
                            element.addValue(w.toString());
                        } else if (type instanceof CollectionType) {
                            List<Object> ids = current.relation(property, id, false);
                            if (ids != null)
                                for (Object i : ids)
                                    element.addValue(i.toString());
                        } else if (type instanceof EmbeddedComponentType
                                && property.equalsIgnoreCase("uniqueCourseNbr")) {
                            continue;
                        } else {
                            iProgress.warn("Unknown data type: " + type + " (property " + meta.getEntityName()
                                    + "." + property + ", class " + value.getClass() + ")");
                            continue;
                        }
                        record.addElement(element.build());

                    }
                    table.addRecord(record.build());
                    iHibSession.evict(object);
                }
                current.clearCache();
            }

            for (TableData.Table.Builder table : tables.values()) {
                add(table.build());
            }
        }

        /*
        // Skip ConstraintInfo
        if (!iData.containsKey(ConstraintInfo.class.getName()))
           iData.put(ConstraintInfo.class.getName(), new QueueItem(iHibSessionFactory.getClassMetadata(ConstraintInfo.class), null, null, Relation.Empty));
                
        for (String name: items)
           export(iData.get(name));
                    
        while (true) {
         List<Object> objects = new ArrayList<Object>();
         ClassMetadata meta = null;
         for (Entity e: iObjects) {
        if (e.exported()) continue;
        if (objects.isEmpty() || meta.getEntityName().equals(e.name())) {
           meta = e.meta();
           objects.add(e.object());
           e.notifyExported();
        }
         }
         if (objects.isEmpty()) break;
         export(meta, objects, null);
        }
        */
        iProgress.setStatus("All done.");
    } finally {
        iHibSession.close();
    }
}

From source file:org.unitime.timetable.model.CurriculumClassification.java

License:Apache License

public void setStudentsDocument(Document document) {
    try {/*  w  ww.  j  a v  a 2 s.c o m*/
        if (document == null) {
            setStudents(null);
        } else {
            StringWriter string = new StringWriter();
            XMLWriter writer = new XMLWriter(string, OutputFormat.createCompactFormat());
            writer.write(document);
            writer.flush();
            writer.close();
            setStudents(string.toString());
        }
    } catch (Exception e) {
        sLog.warn("Failed to store cached students for " + getCurriculum().getAbbv() + " " + getName() + ": "
                + e.getMessage(), e);
    }
}

From source file:org.unitime.timetable.solver.ui.TimetableInfoUtil.java

License:Open Source License

public void saveToFile(String name, TimetableInfo info) throws Exception {
    File file = new File(ApplicationProperties.getBlobFolder(), name);
    file.getParentFile().mkdirs();//  w w  w .j a va  2 s  . c om
    FileOutputStream out = null;
    try {
        out = new FileOutputStream(file);
        XMLWriter writer = new XMLWriter(new GZIPOutputStream(out), OutputFormat.createCompactFormat());
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement(info.getClass().getName());
        info.save(root);
        writer.write(document);
        writer.flush();
        writer.close();
        out.flush();
        out.close();
        out = null;
    } finally {
        try {
            if (out != null)
                out.close();
        } catch (IOException e) {
        }
    }
}