Author: glandais Date: 2007-12-20 18:42:03 +0000 (Thu, 20 Dec 2007) New Revision: 81 Modified: trunk/simexplorer-si-storage/pom.xml trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabase.java trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/factories/MetaDataEntityFactory.java trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/factories/XmlConstants.java trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageService.java trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageServiceImpl.java trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/MetaDataParser.java trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/service/StorageServiceTest.java Log: Tests service recherche full text Modified: trunk/simexplorer-si-storage/pom.xml =================================================================== --- trunk/simexplorer-si-storage/pom.xml 2007-12-20 16:56:19 UTC (rev 80) +++ trunk/simexplorer-si-storage/pom.xml 2007-12-20 18:42:03 UTC (rev 81) @@ -1,27 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <project> - <!--lutinproject.xml--> <parent> - <groupId>lutinlib</groupId> <artifactId>lutinproject</artifactId> + <groupId>lutinlib</groupId> <version>2.2</version> </parent> - - <properties> - <!--Source base dir--> - <maven.src.dir>${basedir}/target/src-build</maven.src.dir> - - <!--Test--> - <maven.test.skip>true</maven.test.skip> - - <!--Compile with ?--> - <maven.compile.source>1.5</maven.compile.source> - <maven.compile.target>1.5</maven.compile.target> - - <!--Verbose--> - <maven.verbose>false</maven.verbose> - </properties> - <modelVersion>4.0.0</modelVersion> <groupId>simexplorer-is-storage</groupId> <artifactId>simexplorer-is-storage</artifactId> @@ -43,9 +26,20 @@ <artifactId>junit</artifactId> <version>4.4</version> </dependency> + <dependency> + <groupId>lutinlib</groupId> + <artifactId>lutinutil</artifactId> + <version>0.26</version> + </dependency> </dependencies> - <reporting> <outputDirectory>target/site</outputDirectory> </reporting> + <properties> + <maven.test.skip>true</maven.test.skip> + <maven.compile.source>1.5</maven.compile.source> + <maven.compile.target>1.5</maven.compile.target> + <maven.verbose>false</maven.verbose> + <maven.src.dir>${basedir}/target/src-build</maven.src.dir> + </properties> </project> \ No newline at end of file Modified: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabase.java =================================================================== --- trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabase.java 2007-12-20 16:56:19 UTC (rev 80) +++ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabase.java 2007-12-20 18:42:03 UTC (rev 81) @@ -535,8 +535,8 @@ for (Map.Entry<String, Content> entry : attachments.entrySet()) { String key = KEY_ATTACHMENT + "." + entry.getKey(); Content value = entry.getValue(); - if (value != null) { - addSimpleField(document, key, value.getClass().getSimpleName()); + if (value != null && value.getType() != null) { + addSimpleField(document, key, value.getType().getClass().getSimpleName()); } } Modified: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java =================================================================== --- trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2007-12-20 16:56:19 UTC (rev 80) +++ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2007-12-20 18:42:03 UTC (rev 81) @@ -203,4 +203,8 @@ attachmentHandler.deleteData(mdTmp, id); } + public int findCount(String query) throws Exception { + return database.findElementsByContentSearchCount(query); + } + } Modified: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/factories/MetaDataEntityFactory.java =================================================================== --- trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/factories/MetaDataEntityFactory.java 2007-12-20 16:56:19 UTC (rev 80) +++ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/factories/MetaDataEntityFactory.java 2007-12-20 18:42:03 UTC (rev 81) @@ -3,12 +3,13 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; +import java.util.Set; import org.w3c.dom.Document; import org.w3c.dom.Element; import fr.cemagref.simexplorer.is.storage.attachment.Content; -import fr.cemagref.simexplorer.is.storage.database.DatabaseConstants; +import fr.cemagref.simexplorer.is.storage.attachment.type.ContentTypeFactory; import fr.cemagref.simexplorer.is.storage.entities.metadata.MetaDataEntity; public class MetaDataEntityFactory<E extends MetaDataEntity> extends @@ -52,10 +53,43 @@ entity.setParentVersionVersion(getProperty(xmlElement, KEY_METADATA_PARENTVERSION_VERSION)); - // FIXME Map<String, String> descriptors = new HashMap<String, String>(); + + Element descriptorsElement = getElementByTagName(xmlElement, + KEY_METADATA_DESCRIPTORS); + if (descriptorsElement != null) { + Set<Element> descriptorElements = getElementsByTagName( + descriptorsElement, KEY_METADATA_DESCRIPTOR); + for (Element descriptorElement : descriptorElements) { + String name = getProperty(descriptorElement, + KEY_DESCRIPTOR_NAME); + String value = getProperty(descriptorElement, + KEY_DESCRIPTOR_VALUE); + descriptors.put(name, value); + } + } entity.setDescriptors(descriptors); + Map<String, Content> attachments = new HashMap<String, Content>(); + + Element attachmentsElement = getElementByTagName(xmlElement, + KEY_METADATA_ATTACHMENTS); + if (attachmentsElement != null) { + Set<Element> attachmentElements = getElementsByTagName( + attachmentsElement, KEY_METADATA_ATTACHMENT); + for (Element attachmentElement : attachmentElements) { + String name = getProperty(attachmentElement, + KEY_ATTACHMENT_NAME); + String type = getProperty(attachmentElement, + KEY_ATTACHMENT_TYPE); + Content content = new Content(); + content + .setType(ContentTypeFactory + .getContentTypeInstance(type)); + attachments.put(name, content); + } + } + entity.setAttachments(attachments); return entity; Modified: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/factories/XmlConstants.java =================================================================== --- trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/factories/XmlConstants.java 2007-12-20 16:56:19 UTC (rev 80) +++ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/factories/XmlConstants.java 2007-12-20 18:42:03 UTC (rev 81) @@ -2,8 +2,8 @@ public interface XmlConstants { - public static final String KEY_METADATA_UUID = "uuid"; - public static final String KEY_METADATA_VERSION = "version"; + public static final String KEY_METADATA_UUID = "uuid"; + public static final String KEY_METADATA_VERSION = "version"; public static final String KEY_METADATA_NAME = "name"; public static final String KEY_METADATA_TYPE = "type"; public static final String KEY_METADATA_DESCRIPTION = "description"; @@ -13,6 +13,15 @@ public static final String KEY_METADATA_PARENTDATA_VERSION = "parentdataversion"; public static final String KEY_METADATA_PARENTVERSION_UUID = "parentversionuuid"; public static final String KEY_METADATA_PARENTVERSION_VERSION = "parentversionversion"; + public static final String KEY_METADATA_DESCRIPTORS = "descriptors"; + public static final String KEY_METADATA_DESCRIPTOR = "descriptor"; + public static final String KEY_METADATA_ATTACHMENTS = "attachments"; + public static final String KEY_METADATA_ATTACHMENT = "attachment"; - + public static final String KEY_DESCRIPTOR_NAME = "name"; + public static final String KEY_DESCRIPTOR_VALUE = "value"; + + public static final String KEY_ATTACHMENT_NAME = "name"; + public static final String KEY_ATTACHMENT_TYPE = "type"; + } Modified: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageService.java =================================================================== --- trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageService.java 2007-12-20 16:56:19 UTC (rev 80) +++ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageService.java 2007-12-20 18:42:03 UTC (rev 81) @@ -30,4 +30,6 @@ public MetaDataEntity getMetadata(String uuid, String version) throws Exception; + public int findCount(String query) throws Exception; + } Modified: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageServiceImpl.java =================================================================== --- trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageServiceImpl.java 2007-12-20 16:56:19 UTC (rev 80) +++ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/service/StorageServiceImpl.java 2007-12-20 18:42:03 UTC (rev 81) @@ -37,7 +37,7 @@ // FIXME centralized private static String KEY_METADATA = "metadata"; private static String KEY_XML = "xml"; - private static String KEY_ATTACHMENT = "attachment"; + // private static String KEY_ATTACHMENT = "attachment"; private static String KEY_TYPE_EA = "EA"; private static String KEY_COMPONENT = "C"; private static String KEY_ED = "ED"; @@ -92,6 +92,10 @@ return storageEngine.getElementVersion(uuid, new Version(version)); } + public int findCount(String query) throws Exception { + return storageEngine.findCount(query); + } + private MetaDataEntity saveElement(InputStream zipStream) throws Exception { String xmlFile = null; Map<String, String> attachments = new HashMap<String, String>(); @@ -210,8 +214,8 @@ attachments.put(KEY_XML, storageEngine.retrieveTempData(idxml)); for (Map.Entry<String, String> entry : idsattachment.entrySet()) { - attachments.put(KEY_ATTACHMENT + "." + entry.getKey(), - storageEngine.retrieveTempData(entry.getValue())); + attachments.put(entry.getKey(), storageEngine + .retrieveTempData(entry.getValue())); } storageEngine.saveElement(metaData, attachments); @@ -259,7 +263,6 @@ } - /* * public MetaDataEntity loadElement(String idxml, Map<String, String> * idsattachment) throws Exception { } Modified: trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/MetaDataParser.java =================================================================== --- trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/MetaDataParser.java 2007-12-20 16:56:19 UTC (rev 80) +++ trunk/simexplorer-si-storage/src/java/fr/cemagref/simexplorer/is/storage/xml/MetaDataParser.java 2007-12-20 18:42:03 UTC (rev 81) @@ -13,42 +13,28 @@ public class MetaDataParser extends Parser { - private static String KEY_METADATA = "metadata"; + private static String KEY_METADATA = "metadata"; - private static String KEY_UUID = "uuid"; - private static String KEY_VERSION = "version"; + private static String KEY_UUID = "uuid"; + private static String KEY_VERSION = "version"; - /* - * @Override public static MetaDataEntity parse(InputStream xmlStream) - * throws Exception { MetaDataEntity mde = new MetaDataEntity(); - * - * Document document = getBuilder().parse(xmlStream); Element rootElement = - * (Element) document.getFirstChild(); Element metadataElement = - * getElementByTagName(rootElement, KEY_METADATA); - * - * mde.setUuid(getProperty(metadataElement, KEY_UUID)); - * mde.setVersion(getProperty(metadataElement, KEY_VERSION)); - * - * return mde; } - */ + public static MetaDataEntity parse(InputStream xmlStream) throws Exception { + MetaDataEntityFactory<MetaDataEntity> elementFactory = (MetaDataEntityFactory) BaseEntityFactory + .getFactory(MetaDataEntity.class); - public static MetaDataEntity parse(InputStream xmlStream) throws Exception { - MetaDataEntityFactory<MetaDataEntity> elementFactory = (MetaDataEntityFactory) BaseEntityFactory - .getFactory(MetaDataEntity.class); + Document document = elementFactory.getBuilder().parse(xmlStream); + Element rootElement = (Element) document.getFirstChild(); + Element metadataElement = elementFactory.getElementByTagName( + rootElement, KEY_METADATA); - Document document = elementFactory.getBuilder().parse(xmlStream); - Element rootElement = (Element) document.getFirstChild(); - Element metadataElement = elementFactory.getElementByTagName( - rootElement, KEY_METADATA); + MetaDataEntity metaData = elementFactory + .loadXMLElement(metadataElement); + return metaData; + } - MetaDataEntity metaData = elementFactory - .loadXMLElement(metadataElement); - return metaData; - } + public static void save(Document document, Element xmlElement, + MetaDataEntity element) throws Exception { - public static void save(Document document, Element xmlElement, - MetaDataEntity element) throws Exception { + } - } - } Modified: trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/service/StorageServiceTest.java =================================================================== --- trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/service/StorageServiceTest.java 2007-12-20 16:56:19 UTC (rev 80) +++ trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/service/StorageServiceTest.java 2007-12-20 18:42:03 UTC (rev 81) @@ -46,6 +46,10 @@ public void testInsertElementStreams() throws Exception { String id = UUID.randomUUID().toString(); + String[] randomcontent = new String[2]; + for (int i = 0; i < randomcontent.length; i++) { + randomcontent[i] = Long.toHexString(r.nextLong()); + } StringBuffer xmlString = new StringBuffer( "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"); @@ -53,6 +57,33 @@ xmlString.append("<metadata>"); xmlString.append("<uuid>" + id + "</uuid>"); xmlString.append("<version>1.0</version>"); + xmlString.append("<name>Test element</name>"); + xmlString.append("<type>TEST</type>"); + xmlString.append("<description>Element test</description>"); + xmlString.append("<creationdate>0</creationdate>"); + xmlString.append("<hash>AAAAA</hash>"); + /* + * xmlString.append("<parentdatauuid></parentdatauuid>"); + * xmlString.append("<parentdataversion></parentdataversion>"); + * xmlString.append("<parentversionuuid></parentversionuuid>"); + * xmlString.append("<parentversionversion></parentversionversion>"); + */ + xmlString.append("<descriptors>"); + xmlString + .append("<descriptor><name>a</name><value>1</value></descriptor>"); + xmlString + .append("<descriptor><name>b</name><value>2</value></descriptor>"); + xmlString + .append("<descriptor><name>c</name><value>3</value></descriptor>"); + xmlString.append("</descriptors>"); + xmlString.append("<attachments>"); + for (int i = 0; i < randomcontent.length; i++) { + xmlString.append("<attachment>"); + xmlString.append("<name>content" + i + + "</name><type>RawType</type>"); + xmlString.append("</attachment>"); + } + xmlString.append("</attachments>"); xmlString.append("</metadata>"); xmlString.append("</data>"); @@ -63,9 +94,33 @@ Map<String, RemoteInputStream> attachmentsRemoteStream = new HashMap<String, RemoteInputStream>(); + for (int j = 0; j < randomcontent.length; j++) { + + StringBuffer contentString = new StringBuffer(""); + for (int i = 0; i < 50; i++) { + contentString.append(Long.toHexString(r.nextLong())) + .append(" "); + } + contentString.append(randomcontent[j]).append(" "); + for (int i = 0; i < 100; i++) { + contentString.append(Long.toHexString(r.nextLong())) + .append(" "); + } + + InputStream contentStream = new ByteArrayInputStream(contentString + .toString().getBytes()); + RemoteInputStreamServer contentRemoteStream = new SimpleRemoteInputStream( + contentStream); + attachmentsRemoteStream.put("content" + j, contentRemoteStream); + + } + storageService.saveElement(xmlRemoteStream, attachmentsRemoteStream); storageService.commit(); assertNotNull(storageService.getMetadata(id)); + for (int i = 0; i < randomcontent.length; i++) { + assertTrue(storageService.findCount(randomcontent[i]) > 0); + } } }