List of usage examples for org.dom4j.io XMLWriter flush
public void flush() throws IOException
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 . jav 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 {/*from w w w . j a v a 2s .c om*/ 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 a 2 s. com 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//from w w w .j av 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;/* 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 w w.j a va 2 s.co 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();/* www .ja v a 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) { } } }
From source file:org.waarp.common.xml.XmlUtil.java
License:Open Source License
/** * Save the document into the file// ww w .j a v a 2s . c o m * * @param file * @param document * @throws IOException */ static public void saveDocument(File file, Document document) throws IOException { if (file.exists() && (!file.canWrite())) { throw new IOException("File is not writable: " + file.getPath()); } OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(WaarpStringUtils.UTF8.name()); XMLWriter writer = new XMLWriter(new FileWriter(file), format); writer.write(document); writer.flush(); writer.close(); }
From source file:org.waarp.common.xml.XmlUtil.java
License:Open Source License
/** * Save the branch from element into the file * //from www . j av a 2s . c o m * @param file * @param element * @throws IOException */ static public void saveElement(File file, Element element) throws IOException { if (file.exists() && (!file.canWrite())) { throw new IOException("File is not writable: " + file.getPath()); } OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(WaarpStringUtils.UTF8.name()); XMLWriter writer = new XMLWriter(new FileWriter(file), format); writer.write(element); writer.flush(); writer.close(); }
From source file:org.waarp.openr66.database.data.DbTaskRunner.java
License:Open Source License
/** * Write the selected TaskRunners from PrepareStatement to a XMLWriter * /*from w w w.ja va2s. c o m*/ * @param preparedStatement * ready to be executed * @param xmlWriter * @return the NbAndSpecialId for the number of transfer and higher rank found * @throws WaarpDatabaseNoConnectionException * @throws WaarpDatabaseSqlException * @throws OpenR66ProtocolBusinessException */ public static NbAndSpecialId writeXML(DbPreparedStatement preparedStatement, XMLWriter xmlWriter) throws WaarpDatabaseNoConnectionException, WaarpDatabaseSqlException, OpenR66ProtocolBusinessException { Element root = new DefaultElement(XMLRUNNERS); NbAndSpecialId nbAndSpecialId = new NbAndSpecialId(); try { xmlWriter.writeOpen(root); Element node; while (preparedStatement.getNext()) { DbTaskRunner runner = DbTaskRunner.getFromStatement(preparedStatement); if (nbAndSpecialId.higherSpecialId < runner.specialId) { nbAndSpecialId.higherSpecialId = runner.specialId; } node = DbTaskRunner.getElementFromRunner(runner); xmlWriter.write(node); xmlWriter.flush(); nbAndSpecialId.nb++; } xmlWriter.writeClose(root); } catch (IOException e) { logger.error("Cannot write XML file", e); throw new OpenR66ProtocolBusinessException("Cannot write file: " + e.getMessage()); } return nbAndSpecialId; }