List of usage examples for org.dom4j Element add
void add(Namespace namespace);
Namespace
to this element. From source file:fr.gouv.culture.vitam.database.DbTableRow.java
License:Open Source License
public Element getElement() { DocumentFactory factory = DocumentFactory.getInstance(); Element row = factory.createElement(DbSchema.ROW_FIELD); row.addAttribute(DbSchema.RANK_ATTRIBUTE, Integer.toString(rank)); row.addAttribute(DbSchema.NB_ATTRIBUTE, Integer.toString(values.size())); for (DbFieldValue value : values) { Element evalue = value.getElement(); row.add(evalue); }/*from w w w . j a va2 s . c o m*/ return row; }
From source file:fr.gouv.culture.vitam.database.model.DbCondition.java
License:Open Source License
public Element toElement() { DocumentFactory factory = DocumentFactory.getInstance(); Element root = factory.createElement(DbSchema.CONDITION_FIELD); root.addAttribute(DbSchema.OPERATOR_ATTRIBUTE, operator.name()); for (int i = 0; i < operands.length; i++) { Element op = factory.createElement(DbSchema.OPERAND_FIELD); op.addAttribute("rank", Integer.toString(i)); if (operands[i] instanceof DbField) { op.addAttribute(DbSchema.TYPE_ATTRIBUTE, DbField.class.getSimpleName()); } else {// ww w . j a v a2s .co m op.addAttribute(DbSchema.TYPE_ATTRIBUTE, operands[i].getClass().getSimpleName()); } op.setText(operands[i].toString()); root.add(op); } return root; }
From source file:fr.gouv.culture.vitam.database.model.DbSelect.java
License:Open Source License
public Element toElement() { cleanTableFrom();//from w w w . j av a2 s. co m DocumentFactory factory = DocumentFactory.getInstance(); Element root = factory.createElement(DbSchema.DBSELECT_FIELD); root.addAttribute(DbSchema.OFFSET_ATTRIBUTE, Integer.toString(offset)); root.addAttribute(DbSchema.LIMIT_ATTRIBUTE, Integer.toString(limit)); if (selected.isEmpty()) { return root; } Element select = factory.createElement(DbSchema.SELECTED_FIELD); for (DbField field : selected) { Element efield = factory.createElement(DbSchema.FIELD_FIELD); efield.setText(field.toString()); select.add(efield); } root.add(select); Element from = factory.createElement(DbSchema.FROM_FIELD); for (DbTable table : fromTables.values()) { Element efield = factory.createElement(DbSchema.TABLE_FIELD); efield.setText(table.toString()); from.add(efield); } root.add(from); if (!conditions.isEmpty()) { Element econd = factory.createElement(DbSchema.CONDITIONS_FIELD); for (DbCondition condition : conditions) { Element efield = condition.toElement(); econd.add(efield); } root.add(econd); } if (!orderByAsc.isEmpty()) { Element eorder = factory.createElement(DbSchema.ORDERASC_FIELD); for (DbField field : orderByAsc.values()) { Element efield = factory.createElement(DbSchema.FIELD_FIELD); efield.setText(field.toString()); eorder.add(efield); } root.add(eorder); } if (!orderByDesc.isEmpty()) { Element eorder = factory.createElement(DbSchema.ORDERDESC_FIELD); for (DbField field : orderByDesc.values()) { Element efield = factory.createElement(DbSchema.FIELD_FIELD); efield.setText(field.toString()); eorder.add(efield); } root.add(eorder); } return root; }
From source file:fr.gouv.culture.vitam.digest.DigestCompute.java
License:Open Source License
/** * /* w w w.j av a2 s . co m*/ * @param config * @param src * @param file * @return Null in case of error, else return the Element config.DOCUMENT_FIELD */ public static Element checkDigest(ConfigLoader config, File src, File file) { String shortname = StaticValues.getSubPath(file, src); FileInputStream inputstream; try { inputstream = new FileInputStream(file); } catch (FileNotFoundException e) { System.err.println(StaticValues.LBL.error_computedigest.get() + ": " + shortname); return null; } String[] shas = DigestCompute.computeDigest(inputstream, config.argument); //SEDA type since already configured Element result = XmlDom.factory.createElement(config.DOCUMENT_FIELD); Element attachment = XmlDom.factory.createElement(config.ATTACHMENT_FIELD); attachment.addAttribute(config.FILENAME_ATTRIBUTE.substring(1), shortname); result.add(attachment); if (shas[0] != null) { Element integrity = XmlDom.factory.createElement(config.INTEGRITY_FIELD); integrity.addAttribute(config.ALGORITHME_ATTRIBUTE.substring(1), StaticValues.XML_SHA1); integrity.setText(shas[0]); result.add(integrity); } if (shas[1] != null) { Element integrity = XmlDom.factory.createElement(config.INTEGRITY_FIELD); integrity.addAttribute(config.ALGORITHME_ATTRIBUTE.substring(1), StaticValues.XML_SHA256); integrity.setText(shas[1]); result.add(integrity); } if (shas[2] != null) { Element integrity = XmlDom.factory.createElement(config.INTEGRITY_FIELD); integrity.addAttribute(config.ALGORITHME_ATTRIBUTE.substring(1), StaticValues.XML_SHA512); integrity.setText(shas[2]); result.add(integrity); } String status = "ok"; if ((shas[0] == null && config.argument.sha1) || (shas[1] == null && config.argument.sha256) || (shas[2] == null && config.argument.sha512)) { status = "error"; } result.addAttribute("status", status); XmlDom.addDate(VitamArgument.ONEXML, config, result); return result; }
From source file:fr.gouv.culture.vitam.digest.DigestCompute.java
License:Open Source License
public static int createDigest(File src, File dst, File ftar, File fglobal, boolean oneDigestPerFile, List<File> filesToScan) { try {/* w w w .ja v a 2s .c o m*/ Element global = null; Document globalDoc = null; if (fglobal != null) { global = XmlDom.factory.createElement("digests"); global.addAttribute("source", src.getAbsolutePath()); globalDoc = XmlDom.factory.createDocument(global); } OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(StaticValues.CURRENT_OUTPUT_ENCODING); XMLWriter writer = new XMLWriter(format); int error = 0; int currank = 0; for (File file : filesToScan) { currank++; Element result = DigestCompute.checkDigest(StaticValues.config, src, file); if (result.selectSingleNode(".[@status='ok']") == null) { System.err.println(StaticValues.LBL.error_error.get() + StaticValues.LBL.error_computedigest.get() + StaticValues.getSubPath(file, src)); error++; } else if (oneDigestPerFile) { Element rootElement = XmlDom.factory.createElement("digest"); Document unique = XmlDom.factory.createDocument(rootElement); rootElement.add(result); FileOutputStream out = null; String shortname = StaticValues.getSubPath(file, src); String shortnameWithoutFilename = shortname.substring(0, shortname.lastIndexOf(file.getName())); File fdirout = new File(dst, shortnameWithoutFilename); fdirout.mkdirs(); File fout = new File(fdirout, file.getName() + "_digest.xml"); try { out = new FileOutputStream(fout); writer.setOutputStream(out); writer.write(unique); writer.close(); } catch (FileNotFoundException e) { System.err.println( StaticValues.LBL.error_error.get() + fout.getAbsolutePath() + " " + e.toString()); error++; } catch (IOException e) { System.err.println( StaticValues.LBL.error_error.get() + fout.getAbsolutePath() + " " + e.toString()); if (out != null) { try { out.close(); } catch (IOException e1) { } } error++; } result.detach(); } if (fglobal != null) { global.add(result); } } if (ftar != null) { currank++; Element result = DigestCompute.checkDigest(StaticValues.config, src, ftar); if (result.selectSingleNode(".[@status='ok']") == null) { System.err.println(StaticValues.LBL.error_error.get() + StaticValues.LBL.error_computedigest.get() + ftar.getAbsolutePath()); error++; } else if (oneDigestPerFile) { Element rootElement = XmlDom.factory.createElement("digest"); Document unique = XmlDom.factory.createDocument(rootElement); rootElement.add(result); FileOutputStream out = null; File fout = new File(dst, ftar.getName() + "_tar_digest.xml"); try { out = new FileOutputStream(fout); writer.setOutputStream(out); writer.write(unique); writer.close(); } catch (FileNotFoundException e) { System.err.println( StaticValues.LBL.error_error.get() + fout.getAbsolutePath() + " " + e.toString()); error++; } catch (IOException e) { System.err.println( StaticValues.LBL.error_error.get() + fout.getAbsolutePath() + " " + e.toString()); if (out != null) { try { out.close(); } catch (IOException e1) { } } error++; } result.detach(); } if (fglobal != null) { global.add(result); } } if (fglobal != null) { if (error > 0) { global.addAttribute("status", "error"); } else { global.addAttribute("status", "ok"); } XmlDom.addDate(VitamArgument.ONEXML, StaticValues.config, global); FileOutputStream out; try { out = new FileOutputStream(fglobal); writer.setOutputStream(out); writer.write(globalDoc); writer.close(); } catch (FileNotFoundException e) { System.err.println( StaticValues.LBL.error_error.get() + fglobal.getAbsolutePath() + " " + e.toString()); error++; } catch (IOException e) { System.err.println( StaticValues.LBL.error_error.get() + fglobal.getAbsolutePath() + " " + e.toString()); error++; } } if (error > 0) { System.err.println(StaticValues.LBL.error_error.get() + " Digest" + " [ " + currank + (error > 0 ? " (" + StaticValues.LBL.error_error.get() + error + " ) " : "") + " ]"); return -error; } return currank; } catch (UnsupportedEncodingException e) { System.err.println(StaticValues.LBL.error_error.get() + " " + e.toString()); return -1; } }
From source file:fr.gouv.culture.vitam.eml.EmlExtract.java
License:Open Source License
private static String addAddress(Element root, String entry, Address address, String except) { String value = address.toString(); String ad = StringUtils.selectChevron(value); if (ad == null || (except != null && ad.equalsIgnoreCase(except))) { return null; }//from w w w .j a v a 2s. c o m String nams = value.replace('<' + ad + '>', ""); Element val = XmlDom.factory.createElement(entry); Element name = XmlDom.factory.createElement(EMAIL_FIELDS.emailName.name); Element addresse = XmlDom.factory.createElement(EMAIL_FIELDS.emailAddress.name); name.setText(StringUtils.unescapeHTML(nams, true, false)); addresse.setText(StringUtils.unescapeHTML(ad, true, false)); val.add(name); val.add(addresse); root.add(val); return value; }
From source file:fr.gouv.culture.vitam.eml.EmlExtract.java
License:Open Source License
private static void addAddress(Element root, String entry, String[] addresses, String except) { for (String address : addresses) { if (address.contains(",")) { // multiple emails String[] split = address.split(","); for (String sub : split) { String value = sub; String ad = StringUtils.selectChevron(value); if (ad == null || (except != null && ad.equalsIgnoreCase(except))) { continue; }/* ww w. j a va2 s. co m*/ String nams = value.replace('<' + ad + '>', ""); Element val = XmlDom.factory.createElement(entry); Element name = XmlDom.factory.createElement(EMAIL_FIELDS.emailName.name); Element addresse = XmlDom.factory.createElement(EMAIL_FIELDS.emailAddress.name); name.setText(StringUtils.unescapeHTML(nams, true, false)); addresse.setText(StringUtils.unescapeHTML(ad, true, false)); val.add(name); val.add(addresse); root.add(val); } } else { String value = address; String ad = StringUtils.selectChevron(value); if (ad == null || (except != null && ad.equalsIgnoreCase(except))) { continue; } String nams = value.replace('<' + ad + '>', ""); Element val = XmlDom.factory.createElement(entry); Element name = XmlDom.factory.createElement(EMAIL_FIELDS.emailName.name); Element addresse = XmlDom.factory.createElement(EMAIL_FIELDS.emailAddress.name); name.setText(StringUtils.unescapeHTML(nams, true, false)); addresse.setText(StringUtils.unescapeHTML(ad, true, false)); val.add(name); val.add(addresse); root.add(val); } } }
From source file:fr.gouv.culture.vitam.eml.EmlExtract.java
License:Open Source License
public static String extractInfoMessage(MimeMessage message, Element root, VitamArgument argument, ConfigLoader config) {/* w w w.j a va 2s . com*/ File oldDir = argument.currentOutputDir; if (argument.currentOutputDir == null) { if (config.outputDir != null) { argument.currentOutputDir = new File(config.outputDir); } } Element keywords = XmlDom.factory.createElement(EMAIL_FIELDS.keywords.name); Element metadata = XmlDom.factory.createElement(EMAIL_FIELDS.metadata.name); String skey = ""; String id = config.addRankId(root); Address[] from = null; Element sub2 = null; try { from = message.getFrom(); } catch (MessagingException e1) { String[] partialResult; try { partialResult = message.getHeader("From"); if (partialResult != null && partialResult.length > 0) { sub2 = XmlDom.factory.createElement(EMAIL_FIELDS.from.name); Element add = XmlDom.factory.createElement(EMAIL_FIELDS.fromUnit.name); add.setText(partialResult[0]); sub2.add(add); } } catch (MessagingException e) { } } Address sender = null; try { sender = message.getSender(); } catch (MessagingException e1) { String[] partialResult; try { partialResult = message.getHeader("Sender"); if (partialResult != null && partialResult.length > 0) { if (sub2 == null) { sub2 = XmlDom.factory.createElement(EMAIL_FIELDS.from.name); Element add = XmlDom.factory.createElement(EMAIL_FIELDS.fromUnit.name); add.setText(partialResult[0]); sub2.add(add); } } } catch (MessagingException e) { } } if (from != null && from.length > 0) { String value0 = null; Element sub = (sub2 != null ? sub2 : XmlDom.factory.createElement(EMAIL_FIELDS.from.name)); if (sender != null) { value0 = addAddress(sub, EMAIL_FIELDS.fromUnit.name, sender, null); } for (Address address : from) { addAddress(sub, EMAIL_FIELDS.fromUnit.name, address, value0); } metadata.add(sub); } else if (sender != null) { Element sub = (sub2 != null ? sub2 : XmlDom.factory.createElement(EMAIL_FIELDS.from.name)); addAddress(sub, EMAIL_FIELDS.fromUnit.name, sender, null); metadata.add(sub); } else { if (sub2 != null) { metadata.add(sub2); } } Address[] replyTo = null; try { replyTo = message.getReplyTo(); if (replyTo != null && replyTo.length > 0) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.replyTo.name); for (Address address : replyTo) { addAddress(sub, EMAIL_FIELDS.fromUnit.name, address, null); } metadata.add(sub); } } catch (MessagingException e1) { String[] partialResult; try { partialResult = message.getHeader("ReplyTo"); if (partialResult != null && partialResult.length > 0) { sub2 = XmlDom.factory.createElement(EMAIL_FIELDS.replyTo.name); addAddress(sub2, EMAIL_FIELDS.fromUnit.name, partialResult, null); /*Element add = XmlDom.factory.createElement(EMAIL_FIELDS.fromUnit.name); add.setText(partialResult[0]); sub2.add(add);*/ metadata.add(sub2); } } catch (MessagingException e) { } } Address[] toRecipients = null; try { toRecipients = message.getRecipients(Message.RecipientType.TO); if (toRecipients != null && toRecipients.length > 0) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.toRecipients.name); for (Address address : toRecipients) { addAddress(sub, EMAIL_FIELDS.toUnit.name, address, null); } metadata.add(sub); } } catch (MessagingException e1) { String[] partialResult; try { partialResult = message.getHeader("To"); if (partialResult != null && partialResult.length > 0) { sub2 = XmlDom.factory.createElement(EMAIL_FIELDS.toRecipients.name); addAddress(sub2, EMAIL_FIELDS.toUnit.name, partialResult, null); /*for (String string : partialResult) { Element add = XmlDom.factory.createElement(EMAIL_FIELDS.toUnit.name); add.setText(string); sub2.add(add); }*/ metadata.add(sub2); } } catch (MessagingException e) { } } Address[] ccRecipients; try { ccRecipients = message.getRecipients(Message.RecipientType.CC); if (ccRecipients != null && ccRecipients.length > 0) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.ccRecipients.name); for (Address address : ccRecipients) { addAddress(sub, EMAIL_FIELDS.ccUnit.name, address, null); } metadata.add(sub); } } catch (MessagingException e1) { String[] partialResult; try { partialResult = message.getHeader("Cc"); if (partialResult != null && partialResult.length > 0) { sub2 = XmlDom.factory.createElement(EMAIL_FIELDS.ccRecipients.name); addAddress(sub2, EMAIL_FIELDS.ccUnit.name, partialResult, null); /*for (String string : partialResult) { Element add = XmlDom.factory.createElement(EMAIL_FIELDS.ccUnit.name); add.setText(string); sub2.add(add); }*/ metadata.add(sub2); } } catch (MessagingException e) { } } Address[] bccRecipients; try { bccRecipients = message.getRecipients(Message.RecipientType.BCC); if (bccRecipients != null && bccRecipients.length > 0) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.bccRecipients.name); for (Address address : bccRecipients) { addAddress(sub, EMAIL_FIELDS.bccUnit.name, address, null); } metadata.add(sub); } } catch (MessagingException e1) { String[] partialResult; try { partialResult = message.getHeader("Cc"); if (partialResult != null && partialResult.length > 0) { sub2 = XmlDom.factory.createElement(EMAIL_FIELDS.bccRecipients.name); addAddress(sub2, EMAIL_FIELDS.bccUnit.name, partialResult, null); /*for (String string : partialResult) { Element add = XmlDom.factory.createElement(EMAIL_FIELDS.bccUnit.name); add.setText(string); sub2.add(add); }*/ metadata.add(sub2); } } catch (MessagingException e) { } } try { String subject = message.getSubject(); if (subject != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.subject.name); sub.setText(StringUtils.unescapeHTML(subject, true, false)); metadata.add(sub); } Date sentDate = message.getSentDate(); if (sentDate != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.sentDate.name); sub.setText(sentDate.toString()); metadata.add(sub); } Date receivedDate = message.getReceivedDate(); if (receivedDate != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.receivedDate.name); sub.setText(receivedDate.toString()); metadata.add(sub); } String[] headers = message.getHeader("Received"); if (headers != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.receptionTrace.name); MailDateFormat mailDateFormat = null; long maxTime = 0; if (receivedDate == null) { mailDateFormat = new MailDateFormat(); } for (String string : headers) { Element sub3 = XmlDom.factory.createElement(EMAIL_FIELDS.trace.name); sub3.setText(StringUtils.unescapeHTML(string, true, false)); sub.add(sub3); if (receivedDate == null) { int pos = string.lastIndexOf(';'); if (pos > 0) { String recvdate = string.substring(pos + 2).replaceAll("\t\n\r\f", "").trim(); try { Date date = mailDateFormat.parse(recvdate); if (date.getTime() > maxTime) { maxTime = date.getTime(); } } catch (ParseException e) { } } } } if (receivedDate == null) { Element subdate = XmlDom.factory.createElement(EMAIL_FIELDS.receivedDate.name); Date date = new Date(maxTime); subdate.setText(date.toString()); metadata.add(subdate); } metadata.add(sub); } int internalSize = message.getSize(); if (internalSize > 0) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.emailSize.name); sub.setText(Integer.toString(internalSize)); metadata.add(sub); } String encoding = message.getEncoding(); if (encoding != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.encoding.name); sub.setText(StringUtils.unescapeHTML(encoding, true, false)); metadata.add(sub); } String description = message.getDescription(); if (description != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.description.name); sub.setText(StringUtils.unescapeHTML(description, true, false)); metadata.add(sub); } String contentType = message.getContentType(); if (contentType != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.contentType.name); sub.setText(StringUtils.unescapeHTML(contentType, true, false)); metadata.add(sub); } headers = message.getHeader("Content-Transfer-Encoding"); if (headers != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.contentTransferEncoding.name); StringBuilder builder = new StringBuilder(); for (String string : headers) { builder.append(StringUtils.unescapeHTML(string, true, false)); builder.append(' '); } sub.setText(builder.toString()); metadata.add(sub); } String[] contentLanguage = message.getContentLanguage(); if (contentLanguage != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.contentLanguage.name); StringBuilder builder = new StringBuilder(); for (String string : contentLanguage) { builder.append(StringUtils.unescapeHTML(string, true, false)); builder.append(' '); } sub.setText(builder.toString()); metadata.add(sub); } String contentId = message.getContentID(); if (contentId != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.contentId.name); sub.setText(StringUtils.removeChevron(StringUtils.unescapeHTML(contentId, true, false))); metadata.add(sub); } String disposition = message.getDisposition(); if (disposition != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.disposition.name); sub.setText(StringUtils.removeChevron(StringUtils.unescapeHTML(disposition, true, false))); metadata.add(sub); } headers = message.getHeader("Keywords"); if (headers != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.msgKeywords.name); StringBuilder builder = new StringBuilder(); for (String string : headers) { builder.append(StringUtils.unescapeHTML(string, true, false)); builder.append(' '); } sub.setText(builder.toString()); metadata.add(sub); } String messageId = message.getMessageID(); if (messageId != null) { messageId = StringUtils.removeChevron(StringUtils.unescapeHTML(messageId, true, false)).trim(); if (messageId.length() > 1) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.messageId.name); sub.setText(messageId); metadata.add(sub); } } headers = message.getHeader("In-Reply-To"); String inreplyto = null; if (headers != null) { StringBuilder builder = new StringBuilder(); for (String string : headers) { builder.append(StringUtils.removeChevron(StringUtils.unescapeHTML(string, true, false))); builder.append(' '); } inreplyto = builder.toString().trim(); if (inreplyto.length() > 0) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.inReplyTo.name); sub.setText(inreplyto); if (messageId != null && messageId.length() > 1) { String old = filEmls.get(inreplyto); if (old == null) { old = messageId; } else { old += "," + messageId; } filEmls.put(inreplyto, old); } metadata.add(sub); } } headers = message.getHeader("References"); if (headers != null) { Element sub = XmlDom.factory.createElement(EMAIL_FIELDS.references.name); StringBuilder builder = new StringBuilder(); for (String string : headers) { builder.append(StringUtils.removeChevron(StringUtils.unescapeHTML(string, true, false))); builder.append(' '); } String[] refs = builder.toString().trim().split(" "); for (String string : refs) { if (string.length() > 0) { Element ref = XmlDom.factory.createElement(EMAIL_FIELDS.reference.name); ref.setText(string); sub.add(ref); } } metadata.add(sub); } Element prop = XmlDom.factory.createElement(EMAIL_FIELDS.properties.name); headers = message.getHeader("X-Priority"); if (headers == null) { headers = message.getHeader("Priority"); if (headers != null && headers.length > 0) { prop.addAttribute(EMAIL_FIELDS.priority.name, headers[0]); } } else if (headers != null && headers.length > 0) { String imp = headers[0]; try { int Priority = Integer.parseInt(imp); switch (Priority) { case 5: imp = "LOWEST"; break; case 4: imp = "LOW"; break; case 3: imp = "NORMAL"; break; case 2: imp = "HIGH"; break; case 1: imp = "HIGHEST"; break; default: imp = "LEV" + Priority; } } catch (NumberFormatException e) { // ignore since imp will be used as returned } prop.addAttribute(EMAIL_FIELDS.priority.name, imp); } headers = message.getHeader("Sensitivity"); if (headers != null && headers.length > 0) { prop.addAttribute(EMAIL_FIELDS.sensitivity.name, headers[0]); } headers = message.getHeader("X-RDF"); if (headers != null && headers.length > 0) { System.err.println("Found X-RDF"); StringBuilder builder = new StringBuilder(); for (String string : headers) { builder.append(string); builder.append("\n"); } try { byte[] decoded = org.apache.commons.codec.binary.Base64.decodeBase64(builder.toString()); String rdf = new String(decoded); Document tempDocument = DocumentHelper.parseText(rdf); Element xrdf = prop.addElement("x-rdf"); xrdf.add(tempDocument.getRootElement()); } catch (Exception e) { System.err.println("Cannot decode X-RDF: " + e.getMessage()); } } try { File old = argument.currentOutputDir; if (config.extractFile) { File newOutDir = new File(argument.currentOutputDir, id); newOutDir.mkdirs(); argument.currentOutputDir = newOutDir; } if (argument.extractKeyword) { skey = handleMessage(message, metadata, prop, id, argument, config); // should have hasAttachment if (prop.hasContent()) { metadata.add(prop); } if (metadata.hasContent()) { root.add(metadata); } ExtractInfo.exportMetadata(keywords, skey, "", config, null); if (keywords.hasContent()) { root.add(keywords); } } else { handleMessage(message, metadata, prop, id, argument, config); // should have hasAttachment if (prop.hasContent()) { metadata.add(prop); } if (metadata.hasContent()) { root.add(metadata); } } argument.currentOutputDir = old; } catch (IOException e) { System.err.println(StaticValues.LBL.error_error.get() + e.toString()); } try { message.getInputStream().close(); } catch (IOException e) { System.err.println(StaticValues.LBL.error_error.get() + e.toString()); } root.addAttribute(EMAIL_FIELDS.status.name, "ok"); } catch (MessagingException e) { System.err.println(StaticValues.LBL.error_error.get() + e.toString()); e.printStackTrace(); String status = "Error during identification"; root.addAttribute(EMAIL_FIELDS.status.name, status); } catch (Exception e) { System.err.println(StaticValues.LBL.error_error.get() + e.toString()); e.printStackTrace(); String status = "Error during identification"; root.addAttribute(EMAIL_FIELDS.status.name, status); } argument.currentOutputDir = oldDir; return skey; }
From source file:fr.gouv.culture.vitam.eml.EmlExtract.java
License:Open Source License
private static final String handleMessage(Message message, Element metadata, Element prop, String id, VitamArgument argument, ConfigLoader config) throws IOException, MessagingException { Object content = message.getContent(); String[] cte = message.getHeader("Content-Transfer-Encoding"); String[] aresult = null;//from w w w .j ava2 s . c o m if (cte != null && cte.length > 0) { aresult = extractContentType(message.getContentType(), cte[0]); } else { aresult = extractContentType(message.getContentType(), null); } String result = ""; if (content instanceof String) { Element body = XmlDom.factory.createElement("body"); body.addAttribute("mime", aresult[0]); if (aresult[1] != null) { body.addAttribute("charset", aresult[1]); } metadata.add(body); //result = saveBody((String) content.toString(), aresult, id, argument, config); result = saveBody(message.getInputStream(), aresult, id, argument, config); } else if (content instanceof Multipart) { // handle multi part prop.addAttribute(EMAIL_FIELDS.hasAttachment.name, "true"); Multipart mp = (Multipart) content; Element identification = XmlDom.factory.createElement(EMAIL_FIELDS.attachments.name); String value = handleMultipart(mp, identification, id, argument, config); if (identification.hasContent()) { metadata.add(identification); } if (argument.extractKeyword) { result = value; } } return result; }
From source file:fr.gouv.culture.vitam.eml.EmlExtract.java
License:Open Source License
private static final String handleMultipart(Multipart mp, Element identification, String id, VitamArgument argument, ConfigLoader config) throws MessagingException, IOException { int count = mp.getCount(); String result = ""; identification.addAttribute(EMAIL_FIELDS.attNumber.name, Integer.toString(count - 1)); for (int i = 0; i < count; i++) { BodyPart bp = mp.getBodyPart(i); Object content = bp.getContent(); if (content instanceof String) { String[] cte = bp.getHeader("Content-Transfer-Encoding"); String[] aresult = null; if (cte != null && cte.length > 0) { aresult = extractContentType(bp.getContentType(), cte[0]); } else { aresult = extractContentType(bp.getContentType(), null); }//w w w .j av a2 s.c o m Element emlroot = XmlDom.factory.createElement("body"); // <identity format="Internet Message Format" mime="message/rfc822" puid="fmt/278" extensions="eml"/> Element subidenti = XmlDom.factory.createElement("identification"); Element identity = XmlDom.factory.createElement("identity"); identity.addAttribute("format", "Internet Message Body Format"); identity.addAttribute("mime", aresult[0] != null ? aresult[0] : "unknown"); identity.addAttribute("extensions", aresult[3] != null ? aresult[3].substring(1) : "unknown"); if (aresult[1] != null) { identity.addAttribute("charset", aresult[1]); } identification.add(identity); emlroot.add(subidenti); identification.add(emlroot); //result += " " + saveBody((String) content.toString(), aresult, id, argument, config); result += " " + saveBody(bp.getInputStream(), aresult, id, argument, config); } else if (content instanceof InputStream) { // handle input stream if (argument.extractKeyword) { result += " " + addSubIdentities(identification, bp, (InputStream) content, argument, config); } else { addSubIdentities(identification, bp, (InputStream) content, argument, config); } ((InputStream) content).close(); } else if (content instanceof Message) { Message message = (Message) content; // XXX perhaps using Commands.addFormatIdentification Element emlroot = XmlDom.factory.createElement(EMAIL_FIELDS.formatEML.name); // <identity format="Internet Message Format" mime="message/rfc822" puid="fmt/278" extensions="eml"/> Element subidenti = XmlDom.factory.createElement("identification"); Element identity = XmlDom.factory.createElement("identity"); identity.addAttribute("format", "Internet Message Format"); identity.addAttribute("mime", "message/rfc822"); identity.addAttribute("puid", "fmt/278"); identity.addAttribute("extensions", "eml"); identification.add(identity); emlroot.add(subidenti); identification.add(emlroot); if (argument.extractKeyword) { result += " " + extractInfoMessage((MimeMessage) message, emlroot, argument, config); } else { extractInfoMessage((MimeMessage) message, emlroot, argument, config); } } else if (content instanceof Multipart) { Multipart mp2 = (Multipart) content; if (argument.extractKeyword) { result += " " + handleMultipartRecur(mp2, identification, id + "_" + i, argument, config); } else { handleMultipartRecur(mp2, identification, id + "_" + i, argument, config); } } } return result; }