r695 - in trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage: attachment engine
Author: glandais Date: 2008-02-06 17:11:44 +0000 (Wed, 06 Feb 2008) New Revision: 695 Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/attachment/AttachmentHandler.java trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/attachment/FileSystemAttachmentHandler.java trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java Log: Attachment handling Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/attachment/AttachmentHandler.java =================================================================== --- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/attachment/AttachmentHandler.java 2008-02-06 17:11:21 UTC (rev 694) +++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/attachment/AttachmentHandler.java 2008-02-06 17:11:44 UTC (rev 695) @@ -19,6 +19,7 @@ import java.io.InputStream; +import fr.cemagref.simexplorer.is.attachment.Attachment; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.storage.SimExplorerStorageException; @@ -34,15 +35,15 @@ * * @param entity * DataEntity related to content - * @param field - * Unique field for content * @param is * Content + * @param attachment + * the attachment * * @throws SimExplorerStorageException * the sim explorer storage exception */ - public abstract void storeData(MetaData entity, String field, InputStream is) + public abstract void storeData(MetaData entity, Attachment attachment, InputStream is) throws SimExplorerStorageException; /** @@ -50,15 +51,15 @@ * * @param entity * DataEntity related to content - * @param field - * Unique field for content + * @param attachment + * the attachment * * @return Content * * @throws SimExplorerStorageException * the sim explorer storage exception */ - public abstract InputStream retrieveData(MetaData entity, String field) + public abstract InputStream retrieveData(MetaData entity, Attachment attachment) throws SimExplorerStorageException; /** @@ -66,15 +67,15 @@ * * @param entity * the entity - * @param field - * the field + * @param attachment + * the attachment * * @return the string * * @throws SimExplorerStorageException * the sim explorer storage exception */ - public abstract String retrieveMD5Data(MetaData entity, String field) + public abstract String retrieveMD5Data(MetaData entity, Attachment attachment) throws SimExplorerStorageException; /** @@ -82,13 +83,13 @@ * * @param entity * DataEntity related to content - * @param field - * Unique field for content + * @param attachment + * the attachment * * @throws SimExplorerStorageException * the sim explorer storage exception */ - public abstract void deleteData(MetaData entity, String field) + public abstract void deleteData(MetaData entity, Attachment attachment) throws SimExplorerStorageException; } \ No newline at end of file Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/attachment/FileSystemAttachmentHandler.java =================================================================== --- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/attachment/FileSystemAttachmentHandler.java 2008-02-06 17:11:21 UTC (rev 694) +++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/attachment/FileSystemAttachmentHandler.java 2008-02-06 17:11:44 UTC (rev 695) @@ -28,6 +28,7 @@ import org.codelutin.util.MD5; +import fr.cemagref.simexplorer.is.attachment.Attachment; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.storage.SimExplorerStorageException; import fr.cemagref.simexplorer.is.storage.util.Config; @@ -49,12 +50,12 @@ * * @param entity * DataEntity related to content - * @param field - * Unique field for content + * @param attachment + * the attachment * * @return Instance of file */ - private File getFile(MetaData entity, String field) { + private File getFile(MetaData entity, Attachment attachment) { String resultPath = baseFolder; // Create file path @@ -66,7 +67,7 @@ resultPath = resultPath + entity.getUuid(); } resultPath = resultPath + "/" + entity.getVersion().toString() + "/" - + field; + + attachment.getUniqueId(); File result = new File(resultPath); // Create directories @@ -82,12 +83,12 @@ * @see fr.cemagref.simexplorer.is.storage.attachment.AttachmentHandler#retrieveData(fr.cemagref.simexplorer.is.entities.metadata.MetaData, java.lang.String) */ @Override - public InputStream retrieveData(MetaData entity, String field) + public InputStream retrieveData(MetaData entity, Attachment attachment) throws SimExplorerStorageException { // Simple stream on file FileInputStream fis = null; try { - fis = new FileInputStream(getFile(entity, field)); + fis = new FileInputStream(getFile(entity, attachment)); } catch (FileNotFoundException e) { throw new SimExplorerStorageException(e); } @@ -98,11 +99,11 @@ * @see fr.cemagref.simexplorer.is.storage.attachment.AttachmentHandler#retrieveMD5Data(fr.cemagref.simexplorer.is.entities.metadata.MetaData, java.lang.String) */ @Override - public String retrieveMD5Data(MetaData entity, String field) + public String retrieveMD5Data(MetaData entity, Attachment attachment) throws SimExplorerStorageException { String md5 = null; try { - md5 = MD5.asHex(MD5.getHash(getFile(entity, field))); + md5 = MD5.asHex(MD5.getHash(getFile(entity, attachment))); } catch (Exception e) { throw new SimExplorerStorageException(e); } @@ -113,12 +114,12 @@ * @see fr.cemagref.simexplorer.is.storage.attachment.AttachmentHandler#storeData(fr.cemagref.simexplorer.is.entities.metadata.MetaData, java.lang.String, java.io.InputStream) */ @Override - public void storeData(MetaData entity, String field, InputStream is) + public void storeData(MetaData entity, Attachment attachment, InputStream is) throws SimExplorerStorageException { // Simple stream on file try { - File file = getFile(entity, field); + File file = getFile(entity, attachment); FileOutputStream fos = new FileOutputStream(file); // Buffer copy stream to stream @@ -146,11 +147,11 @@ * @see fr.cemagref.simexplorer.is.storage.attachment.AttachmentHandler#deleteData(fr.cemagref.simexplorer.is.entities.metadata.MetaData, java.lang.String) */ @Override - public void deleteData(MetaData entity, String field) + public void deleteData(MetaData entity, Attachment attachment) throws SimExplorerStorageException { try { // Simple delete on file - getFile(entity, field).delete(); + getFile(entity, attachment).delete(); } catch (Exception e) { throw new SimExplorerStorageException(e); } Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java =================================================================== --- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2008-02-06 17:11:21 UTC (rev 694) +++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2008-02-06 17:11:44 UTC (rev 695) @@ -24,6 +24,7 @@ import javax.ejb.Local; +import fr.cemagref.simexplorer.is.attachment.Attachment; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.storage.SimExplorerStorageException; @@ -72,7 +73,7 @@ * the sim explorer storage exception */ public abstract void saveElement(String token, MetaData element, - Map<String, InputStream> attachments) + Map<Attachment, InputStream> attachments) throws SimExplorerStorageException; /** @@ -158,7 +159,7 @@ * the sim explorer storage exception */ public abstract InputStream retrieveData(String token, MetaData entity, - String field) throws SimExplorerStorageException; + Attachment attachment) throws SimExplorerStorageException; /** * Get number of items corresponding to query. Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java =================================================================== --- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java 2008-02-06 17:11:21 UTC (rev 694) +++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java 2008-02-06 17:11:44 UTC (rev 695) @@ -99,33 +99,30 @@ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#saveElement(fr.cemagref.simexplorer.is.entities.metadata.MetaData, java.util.Map) */ public void saveElement(String token, MetaData element, - Map<String, InputStream> attachments) + Map<Attachment, InputStream> attachments) throws SimExplorerStorageException { // Save all attachments in system - for (Map.Entry<String, InputStream> entry : attachments.entrySet()) { + for (Map.Entry<Attachment, InputStream> entry : attachments.entrySet()) { attachmentHandler.storeData(element, entry.getKey(), entry .getValue()); } // Parse all attachments for indexing List<Reader> readers = new ArrayList<Reader>(); - for (Map.Entry<String, InputStream> entry : attachments.entrySet()) { - String field = entry.getKey(); - InputStream content = attachmentHandler - .retrieveData(element, field); - if (element.getAttachments() != null) { - Attachment attachment = findAttachment(field, element - .getAttachments()); - if (attachment != null) { - try { - // Transform stream into indexable text - Reader reader = attachment.getContentType() - .renderToText(content); - readers.add(reader); - } catch (Exception e) { - throw new SimExplorerStorageException(e); - } + for (Map.Entry<Attachment, InputStream> entry : attachments.entrySet()) { + Attachment attachment = entry.getKey(); + + if (attachment.getContentType() != null) { + InputStream content = attachmentHandler.retrieveData(element, + attachment); + try { + // Transform stream into indexable text + Reader reader = attachment.getContentType().renderToText( + content); + readers.add(reader); + } catch (Exception e) { + throw new SimExplorerStorageException(e); } } } @@ -143,26 +140,6 @@ database.insertElement(element, readers); } - /** - * Find attachment. - * - * @param uniqueId - * the unique id - * @param attachments - * the attachments - * - * @return the attachment - */ - private Attachment findAttachment(String uniqueId, - List<Attachment> attachments) { - for (Attachment attachment : attachments) { - if (attachment.getUniqueId().equals(uniqueId)) { - return attachment; - } - } - return null; - } - // Read /* (non-Javadoc) @@ -198,9 +175,9 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#retrieveData(fr.cemagref.simexplorer.is.entities.metadata.MetaData, java.lang.String) */ - public InputStream retrieveData(String token, MetaData entity, String field) - throws SimExplorerStorageException { - InputStream result = attachmentHandler.retrieveData(entity, field); + public InputStream retrieveData(String token, MetaData entity, + Attachment attachment) throws SimExplorerStorageException { + InputStream result = attachmentHandler.retrieveData(entity, attachment); return result; } @@ -264,20 +241,27 @@ MetaData element = getMetadata(token, uuid, version); List<Attachment> attachments = element.getAttachments(); for (Attachment attachment : attachments) { - attachmentHandler.deleteData(element, attachment.getUniqueId()); + attachmentHandler.deleteData(element, attachment); } database.deleteElement(element); } // Tools + private Attachment getTmpAttachment(String id) { + Attachment res = new Attachment(); + res.setDataHash(""); + res.setFileName(id); + return res; + } + /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#storeTempData(java.io.InputStream) */ public String storeTempData(InputStream stream) throws SimExplorerStorageException { String id = UUID.randomUUID().toString(); - attachmentHandler.storeData(mdTmp, id, stream); + attachmentHandler.storeData(mdTmp, getTmpAttachment(id), stream); return id; } @@ -286,22 +270,24 @@ */ public InputStream retrieveTempData(String id) throws SimExplorerStorageException { - InputStream is = attachmentHandler.retrieveData(mdTmp, id); + InputStream is = attachmentHandler.retrieveData(mdTmp, + getTmpAttachment(id)); return is; } @Override public String retrieveMD5TempData(String id) throws SimExplorerStorageException { - String md5 = attachmentHandler.retrieveMD5Data(mdTmp, id); + String md5 = attachmentHandler.retrieveMD5Data(mdTmp, + getTmpAttachment(id)); return md5; } - + /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#deleteTempData(java.lang.String) */ public void deleteTempData(String id) throws SimExplorerStorageException { - attachmentHandler.deleteData(mdTmp, id); + attachmentHandler.deleteData(mdTmp, getTmpAttachment(id)); } /* (non-Javadoc)
participants (1)
-
glandais@users.labs.libre-entreprise.org