From: <my...@us...> - 2010-03-12 09:02:38
|
Revision: 2294 http://aperture.svn.sourceforge.net/aperture/?rev=2294&view=rev Author: mylka Date: 2010-03-12 09:02:32 +0000 (Fri, 12 Mar 2010) Log Message: ----------- applied a little change in DataObjectFactory, all dates are now placed in the metadata with UTC timezones, so that the extracted metadata is exactly the same on all timezones Modified Paths: -------------- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java Modified: aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java =================================================================== --- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-03-11 16:34:34 UTC (rev 2293) +++ aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-03-12 09:02:32 UTC (rev 2294) @@ -34,10 +34,12 @@ import org.ontoware.rdf2go.exception.ModelRuntimeException; import org.ontoware.rdf2go.model.Model; +import org.ontoware.rdf2go.model.node.Literal; import org.ontoware.rdf2go.model.node.Resource; import org.ontoware.rdf2go.model.node.URI; import org.ontoware.rdf2go.model.node.impl.URIImpl; import org.ontoware.rdf2go.vocabulary.RDF; +import org.ontoware.rdf2go.vocabulary.XSD; import org.semanticdesktop.aperture.accessor.DataObject; import org.semanticdesktop.aperture.accessor.RDFContainerFactory; import org.semanticdesktop.aperture.accessor.base.FileDataObjectBase; @@ -47,6 +49,7 @@ import org.semanticdesktop.aperture.helper.html.HtmlParserUtil; import org.semanticdesktop.aperture.rdf.RDFContainer; import org.semanticdesktop.aperture.rdf.util.ModelUtil; +import org.semanticdesktop.aperture.util.DateUtil; import org.semanticdesktop.aperture.vocabulary.APERTURE_NIE_EXTENSIONS; import org.semanticdesktop.aperture.vocabulary.NFO; import org.semanticdesktop.aperture.vocabulary.NIE; @@ -1394,7 +1397,9 @@ private void copyDate(URI predicate, HashMap map, RDFContainer metadata) { Date value = (Date) map.get(predicate); if (value != null) { - metadata.add(predicate, value); + String utcDate = DateUtil.dateTime2UTCString(value); + Literal dateLiteral = metadata.getModel().createDatatypeLiteral(utcDate, XSD._dateTime); + metadata.add(predicate, dateLiteral); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2010-04-02 12:50:58
|
Revision: 2313 http://aperture.svn.sourceforge.net/aperture/?rev=2313&view=rev Author: mylka Date: 2010-04-02 12:50:52 +0000 (Fri, 02 Apr 2010) Log Message: ----------- added a little fix that makes sure that each mail part has only one mime type Modified Paths: -------------- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java Modified: aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java =================================================================== --- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-04-01 17:10:08 UTC (rev 2312) +++ aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-04-02 12:50:52 UTC (rev 2313) @@ -1306,7 +1306,7 @@ } copyString(NIE.characterSet, dataObjectHashMap, metadata); - copyString(NIE.mimeType, dataObjectHashMap, metadata); + copyUniqueString(NIE.mimeType, dataObjectHashMap, metadata); copyString(NMO.contentMimeType, dataObjectHashMap, metadata); copyString(NMO.messageSubject, dataObjectHashMap, metadata); copyString(NFO.fileName, dataObjectHashMap, metadata); @@ -1379,6 +1379,14 @@ metadata.add(predicate, value); } } + + private void copyUniqueString(URI predicate, HashMap map, RDFContainer metadata) { + String value = (String) map.get(predicate); + if (value != null) { + metadata.remove(predicate); + metadata.add(predicate, value); + } + } private void copyInt(URI predicate, HashMap map, RDFContainer metadata) { Integer value = (Integer) map.get(predicate); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2010-06-24 11:25:36
|
Revision: 2358 http://aperture.svn.sourceforge.net/aperture/?rev=2358&view=rev Author: mylka Date: 2010-06-24 11:25:30 +0000 (Thu, 24 Jun 2010) Log Message: ----------- [3020731] fixed the multipart/related problem Modified Paths: -------------- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java Modified: aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java =================================================================== --- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-06-17 19:22:54 UTC (rev 2357) +++ aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-06-24 11:25:30 UTC (rev 2358) @@ -1026,7 +1026,13 @@ } // all remaining data objects are registered as the parent object's children - parent.put(CHILDREN_KEY, children); + Object oldChildren = parent.get(CHILDREN_KEY); + if (oldChildren != null) { + ArrayList list = (ArrayList)oldChildren; + list.addAll(children); + } else { + parent.put(CHILDREN_KEY, children); + } // return the parent as the result of this operation return parent; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2010-06-25 15:45:43
|
Revision: 2360 http://aperture.svn.sourceforge.net/aperture/?rev=2360&view=rev Author: mylka Date: 2010-06-25 15:45:35 +0000 (Fri, 25 Jun 2010) Log Message: ----------- [3021445] fixed the problem with multipart/report emails Modified Paths: -------------- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java Modified: aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java =================================================================== --- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-06-24 13:35:09 UTC (rev 2359) +++ aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-06-25 15:45:35 UTC (rev 2360) @@ -1059,15 +1059,24 @@ private HashMap handleAlternativePart(Multipart part, ContentType contentType, URI uri, Date date) throws MessagingException, IOException { + + + Part parentPart = part.getParent(); + HashMap parent = null; + if (parentPart instanceof Message) { + parent = handleSinglePart(parentPart, contentType, uri, date, true, true); + } + + // nothing to return when there are no parts int count = 0; if ((count = getNestedPartCount(part)) == -1) { - return null; + return parent; } if (count == 0) { - return null; + return parent; } @@ -1096,26 +1105,14 @@ // interpret the selected alternative part HashMap child = handleMailPart(part.getBodyPart(index), uri, date, true); - // If this part was nested in a message, we should merge the obtained info with a data object - // modeling all message info, in all other cases (e.g. when the multipart/alternative was - // nested in a multipart/mixed), we can simply return the child data object. - // We can use the same uri as for the child object, as only one of these objects will actually - // be returned. - Part parentPart = part.getParent(); - if (parentPart instanceof Message) { - HashMap parent = handleSinglePart(parentPart, contentType, uri, date, true, true); - - if (parent == null) { - return child; - } - else { - transferInfo(child, parent); - return parent; - } + if (parent == null) { + return child; } else { - return child; + transferInfo(child, parent); + return parent; } + } private HashMap handleDigestPart(Multipart part, ContentType contentType, URI uri, Date date) @@ -1328,15 +1325,37 @@ transferInfo(errorPart, parent); } } + + // second part is the delivery status report + if (count > 1) { + URI nestedURI = new URIImpl(getBodyPartURIPrefix(uri) + "1"); + HashMap deliveryStatusPart = handleMailPart(part.getBodyPart(1), nestedURI, date, true); + if (deliveryStatusPart != null) { + Object oldChildren = parent.get(CHILDREN_KEY); + if (oldChildren != null) { + ((ArrayList)oldChildren).add(deliveryStatusPart); + } else { + ArrayList children = new ArrayList(); + children.add(deliveryStatusPart); + parent.put(CHILDREN_KEY, children); + } + } + } // the optional third part contains the (partial) returned message and will become an attachment if (count > 2) { + // this has 0 instead of 1 or 2 at the end of the uri for backward compatibility URI nestedURI = new URIImpl(getBodyPartURIPrefix(uri) + "0"); HashMap returnedMessage = handleMailPart(part.getBodyPart(2), nestedURI, date, true); if (returnedMessage != null) { - ArrayList children = new ArrayList(); - children.add(returnedMessage); - parent.put(CHILDREN_KEY, children); + Object oldChildren = parent.get(CHILDREN_KEY); + if (oldChildren != null) { + ((ArrayList)oldChildren).add(returnedMessage); + } else { + ArrayList children = new ArrayList(); + children.add(returnedMessage); + parent.put(CHILDREN_KEY, children); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2010-06-28 11:01:06
|
Revision: 2361 http://aperture.svn.sourceforge.net/aperture/?rev=2361&view=rev Author: mylka Date: 2010-06-28 11:00:59 +0000 (Mon, 28 Jun 2010) Log Message: ----------- [3022302] fixed the multipart/related inside multipart/alternative attachments problem Modified Paths: -------------- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java Modified: aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java =================================================================== --- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-06-25 15:45:35 UTC (rev 2360) +++ aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-06-28 11:00:59 UTC (rev 2361) @@ -1069,23 +1069,16 @@ // nothing to return when there are no parts - int count = 0; - - if ((count = getNestedPartCount(part)) == -1) { + if (getNestedPartCount(part) <= 0) { return parent; } - if (count == 0) { - return parent; - } - - int plaintextindex = getPartWithMimeType(part, "text/plain"); int htmlindex = getPartWithMimeType(part, "text/html"); - int multipartMixedIndex = getPartWithMimeType(part, "multipart/mixed"); + int multipartIndex = getPartWithMimeType(part, "multipart"); - // first try the mulitpart/mixed alternative - int index = multipartMixedIndex; + // first try the mulitpart alternative + int index = multipartIndex; // if not available try to fetch the text/plain alternative if (index < 0) { @@ -1094,7 +1087,7 @@ // if not available, try to fetch the text/html alternative if (index < 0) { - index = getPartWithMimeType(part, "text/html"); + index = htmlindex; } // if still not found, simply take the first available part; @@ -1703,7 +1696,7 @@ for (int i = 0; i < count; i++) { BodyPart bodyPart = multipart.getBodyPart(i); String partType = getMimeType(bodyPart); - if (mimeType.equalsIgnoreCase(partType)) { + if (partType.toLowerCase().startsWith(mimeType)) { return i; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2011-04-04 18:39:10
|
Revision: 2480 http://aperture.svn.sourceforge.net/aperture/?rev=2480&view=rev Author: mylka Date: 2011-04-04 18:39:03 +0000 (Mon, 04 Apr 2011) Log Message: ----------- removed a single triple from the signatureContainedIn-related code in data object factory Modified Paths: -------------- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java Modified: aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java =================================================================== --- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2011-04-04 16:33:16 UTC (rev 2479) +++ aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2011-04-04 18:39:03 UTC (rev 2480) @@ -1454,7 +1454,7 @@ if (dataObjectHashMap.containsKey(APERTURE_NIE_EXTENSIONS.signatureContainedIn)) { URI uri = (URI)dataObjectHashMap.get(APERTURE_NIE_EXTENSIONS.signatureContainedIn); metadata.add(APERTURE_NIE_EXTENSIONS.signatureContainedIn, uri); - metadata.getModel().addStatement(uri, RDF.type, NIE.DataObject); +// metadata.getModel().addStatement(uri, RDF.type, NIE.DataObject); } copyBoolean(APERTURE_NIE_EXTENSIONS.hasSignature, dataObjectHashMap, metadata); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2011-07-18 10:54:28
|
Revision: 2516 http://aperture.svn.sourceforge.net/aperture/?rev=2516&view=rev Author: mylka Date: 2011-07-18 10:54:22 +0000 (Mon, 18 Jul 2011) Log Message: ----------- Uncommented the line which added a (superfluous) type DataObject triple. It's necessary to appease the validator Modified Paths: -------------- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java Modified: aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java =================================================================== --- aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2011-07-15 15:15:15 UTC (rev 2515) +++ aperture/trunk/core/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2011-07-18 10:54:22 UTC (rev 2516) @@ -1454,7 +1454,7 @@ if (dataObjectHashMap.containsKey(APERTURE_NIE_EXTENSIONS.signatureContainedIn)) { URI uri = (URI)dataObjectHashMap.get(APERTURE_NIE_EXTENSIONS.signatureContainedIn); metadata.add(APERTURE_NIE_EXTENSIONS.signatureContainedIn, uri); -// metadata.getModel().addStatement(uri, RDF.type, NIE.DataObject); + metadata.getModel().addStatement(uri, RDF.type, NIE.DataObject); } copyBoolean(APERTURE_NIE_EXTENSIONS.hasSignature, dataObjectHashMap, metadata); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |