r1231 - in trunk/simexplorer-is: simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine simexplorer-i
Author: glandais Date: 2008-02-25 14:14:33 +0000 (Mon, 25 Feb 2008) New Revision: 1231 Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/SearchColumn.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/Database.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/DatabaseConstants.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabase.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseLoadMassTestCase.java trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseTestCase.java trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseThread.java Log: Element indexation Fieldable research Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -466,7 +466,7 @@ } else { getStorageEngine().duplicateElementHierarchy(token, currentMetaData, elementToUpdate); } - getStorageEngine().saveElement(token, elementToUpdate, attachments); + getStorageEngine().saveElement(token, loggableElement, attachments); getStorageEngine().commit(); } @@ -847,7 +847,7 @@ attachments.put(attachment, getStorageEngine().retrieveTempData(idAttachment)); } - getStorageEngine().saveElement(token, metaData, attachments); + getStorageEngine().saveElement(token, element, attachments); getStorageEngine().commit(); } Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -27,6 +27,7 @@ import javax.ejb.Stateless; import fr.cemagref.simexplorer.is.entities.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.exceptions.SimExplorerException; @@ -210,12 +211,12 @@ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngineImpl#saveElement(java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.MetaData, java.util.Map) */ @Override - public void saveElement(String token, MetaData element, Map<Attachment, InputStream> attachments) + public void saveElement(String token, LoggableElement element, Map<Attachment, InputStream> attachments) throws SimExplorerException { - Permission permission = credentialManager.getPermission(token, element.getUuid()); + Permission permission = credentialManager.getPermission(token, element.getMetaData().getUuid()); if (permission.isCanWrite()) { super.saveElement(token, element, attachments); - credentialManager.saveElement(token, element.getUuid()); + credentialManager.saveElement(token, element.getMetaData().getUuid()); } else { throw new SimExplorerSecurityException(); } Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/SearchColumn.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/SearchColumn.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/SearchColumn.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -25,17 +25,23 @@ public enum SearchColumn { /** The All fields. */ - AllFields(DatabaseConstants.KEY_SEARCHABLE_CONTENT), + AllFields(DatabaseConstants.KEY_SEARCHABLE_ALL), /** The Name. */ - Name(DatabaseConstants.KEY_SEARCHABLE_CONTENT), + Name(DatabaseConstants.KEY_NAME), /** The Description. */ - Description(DatabaseConstants.KEY_SEARCHABLE_CONTENT), + Description(DatabaseConstants.KEY_DESCRIPTION), /** The Descriptors. */ - Descriptors(DatabaseConstants.KEY_SEARCHABLE_CONTENT); + Descriptors(DatabaseConstants.KEY_SEARCHABLE_DESCRIPTORS), + /** The Descriptors. */ + AttachmentsName(DatabaseConstants.KEY_SEARCHABLE_ATTACHMENTS_NAME), + + /** The Descriptors. */ + AttachmentsContent(DatabaseConstants.KEY_SEARCHABLE_ATTACHMENTS_CONTENT); + /** The column. */ private String column; Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/Database.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/Database.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/Database.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -23,6 +23,8 @@ import java.util.List; import java.util.Map; +import fr.cemagref.simexplorer.is.entities.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.Descriptor; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.exceptions.SimExplorerException; @@ -76,11 +78,13 @@ * Insert an element into database Delete existing element with same id/version if exists. * * @param element Element to insert - * @param readers the readers + * @param descriptors the descriptors + * @param attachments the attachments + * @param attachmentsContent the attachments content * * @throws SimExplorerException the sim explorer storage exception */ - public abstract void insertElement(MetaData element, List<Reader> readers) throws SimExplorerException; + public abstract void insertElement(MetaData element, List<Reader> attachmentsContent, List<Attachment> attachments, List<Descriptor> descriptors) throws SimExplorerException; /** * Save element hierarchy, saving the fact that parent uses child. Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/DatabaseConstants.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/DatabaseConstants.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/DatabaseConstants.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -67,8 +67,17 @@ public static final String KEY_PARENT_VERSION = "simexplorer.parent.version"; /** Field name for searchable content. */ - public static final String KEY_SEARCHABLE_CONTENT = "simexplorer.searchablecontent"; + public static final String KEY_SEARCHABLE_ALL = "simexplorer.searchable.all"; + /** Field name for searchable content. */ + public static final String KEY_SEARCHABLE_DESCRIPTORS = "simexplorer.searchable.descriptors"; + + /** Field name for searchable content. */ + public static final String KEY_SEARCHABLE_ATTACHMENTS_NAME = "simexplorer.searchable.attachments.name"; + + /** Field name for searchable content. */ + public static final String KEY_SEARCHABLE_ATTACHMENTS_CONTENT = "simexplorer.searchable.attachments.content"; + /** No date sort. */ public static final int SORT_NONE = 0; Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabase.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabase.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabase.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -20,6 +20,7 @@ import java.io.File; import java.io.IOException; import java.io.Reader; +import java.io.StringReader; import java.util.ArrayList; import java.util.BitSet; import java.util.Collection; @@ -33,7 +34,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.lucene.analysis.Analyzer; +import org.apache.lucene.analysis.KeywordAnalyzer; +import org.apache.lucene.analysis.PerFieldAnalyzerWrapper; import org.apache.lucene.analysis.SimpleAnalyzer; +import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexReader; @@ -56,6 +60,8 @@ import org.apache.lucene.store.LockFactory; import org.apache.lucene.store.NoLockFactory; +import fr.cemagref.simexplorer.is.entities.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.Descriptor; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.exceptions.SimExplorerException; @@ -100,6 +106,9 @@ /** Searcher that should be used for new queries. */ private static Searcher cachedSearcher = null; + /** The analyzer. */ + private static Analyzer analyzer = null; + /** Date of latest optimization. */ private static Date lastOptimize = new Date(); @@ -322,8 +331,26 @@ public void open(boolean create) throws SimExplorerException { if (writer == null) { // Create an analyzer - Analyzer analyzer = new SimpleAnalyzer(); + SimpleAnalyzer simpleAnalyzer = new SimpleAnalyzer(); + analyzer = new PerFieldAnalyzerWrapper(simpleAnalyzer); + PerFieldAnalyzerWrapper perFieldAnalyzerWrapper = (PerFieldAnalyzerWrapper) analyzer; + KeywordAnalyzer keywordAnalyzer = new KeywordAnalyzer(); + perFieldAnalyzerWrapper.addAnalyzer(KEY_UUID, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_UUID_VERSION, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_UUID_VERSION_PARENT, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_UUID_VERSION_CHILD, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_VERSION, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_LATEST, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_CLASSNAME, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_CREATIONDATE, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_HASH, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_PARENT_UUID, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_PARENT_VERSION, keywordAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_NAME, simpleAnalyzer); + perFieldAnalyzerWrapper.addAnalyzer(KEY_DESCRIPTION, simpleAnalyzer); + + // Retrieve all searchable columns File indexDir = new File(dbFolder); // Create directories File resultFolder = new File(indexDir.getParent()); @@ -410,9 +437,10 @@ * @see fr.cemagref.simexplorer.is.storage.database.Database#insertElement(fr.cemagref.simexplorer.is.entities.metadata.MetaData, java.util.List) */ @Override - public void insertElement(MetaData element, List<Reader> readers) throws SimExplorerException { + public void insertElement(MetaData element, List<Reader> attachmentsContent, List<Attachment> attachments, + List<Descriptor> descriptors) throws SimExplorerException { // Save element to a Lucene document - Document document = saveLuceneElement(element, readers); + Document document = saveLuceneElement(element, attachmentsContent, attachments, descriptors); try { synchronized (writerSynchronizer) { @@ -622,8 +650,8 @@ * @see fr.cemagref.simexplorer.is.storage.database.Database#findElementsByContentSearchCount(java.lang.String, boolean) */ @Override - public int findElementsByContentSearchCount(String queryText, SearchColumn column, boolean onlyLatest, String userFilter) - throws SimExplorerException { + public int findElementsByContentSearchCount(String queryText, SearchColumn column, boolean onlyLatest, + String userFilter) throws SimExplorerException { Query query; try { query = getQueryByContentSearch(queryText, column, onlyLatest); @@ -656,8 +684,9 @@ * @see fr.cemagref.simexplorer.is.storage.database.Database#findElementsByContentSearch(java.lang.String, boolean, int, int, int) */ @Override - public List<MetaData> findElementsByContentSearch(String queryText, SearchColumn searchColumn, boolean onlyLatest, int start, int count, - SortColumn sortColumn, SortOrder sortOrder, String userFilter) throws SimExplorerException { + public List<MetaData> findElementsByContentSearch(String queryText, SearchColumn searchColumn, boolean onlyLatest, + int start, int count, SortColumn sortColumn, SortOrder sortOrder, String userFilter) + throws SimExplorerException { Query query; try { query = getQueryByContentSearch(queryText, searchColumn, onlyLatest); @@ -720,20 +749,28 @@ * * @param queryText String to match * @param onlyLatest Latest flag + * @param column the column * * @return Query * * @throws ParseException the parse exception */ - private Query getQueryByContentSearch(String queryText, SearchColumn column, boolean onlyLatest) throws ParseException { + private Query getQueryByContentSearch(String queryText, SearchColumn column, boolean onlyLatest) + throws ParseException { Query query; - // Create an analyzer for query parsing - Analyzer analyzer = new SimpleAnalyzer(); - // Create an parser to handle query - QueryParser parser = new QueryParser(column.getColumn(), analyzer); - // Parse query - Query searchQuery = parser.parse(queryText); + Query searchQuery = null; + + if (column == SearchColumn.AllFields) { + searchQuery = new BooleanQuery(); + ((BooleanQuery) searchQuery).add(getQueryByContentSearchForColumn(queryText, column.getColumn()), + BooleanClause.Occur.SHOULD); + ((BooleanQuery) searchQuery).add(getQueryByContentSearchForColumn(queryText, + SearchColumn.AttachmentsContent.getColumn()), BooleanClause.Occur.SHOULD); + } else { + searchQuery = getQueryByContentSearchForColumn(queryText, column.getColumn()); + } + if (onlyLatest) { // If we want only latest items // Boolean search with content and latest field @@ -748,6 +785,25 @@ return query; } + /** + * Gets the query by content search for column. + * + * @param queryText the query text + * @param column the column + * + * @return the query by content search for column + * + * @throws ParseException the parse exception + */ + private Query getQueryByContentSearchForColumn(String queryText, String column) throws ParseException { + // Create an parser to handle query + QueryParser parser; + parser = new QueryParser(column, analyzer); + // Parse query + Query searchQuery = parser.parse(queryText); + return searchQuery; + } + /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.database.Database#deleteElement(java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.Version) */ @@ -914,24 +970,29 @@ /** * Transform an element to a Lucene document thanks to a factory. * - * @param readers the readers * @param element the element + * @param descriptors the descriptors + * @param attachments the attachments + * @param attachmentsContent the attachments content * * @return the document */ - private Document saveLuceneElement(MetaData element, List<Reader> readers) { + private Document saveLuceneElement(MetaData element, List<Reader> attachmentsContent, List<Attachment> attachments, + List<Descriptor> descriptors) { Document document = new Document(); // Store all element properties in Lucene document - addSimpleField(document, KEY_UUID, element.getUuid()); addSimpleField(document, KEY_VERSION, element.getVersion().toString()); addSimpleField(document, KEY_UUID_VERSION, getUuidVersion(element.getUuid(), element.getVersion())); addSimpleField(document, KEY_NAME, element.getName()); + document.add(new Field(KEY_SEARCHABLE_ALL, new StringReader(element.getName()))); + addSimpleField(document, KEY_DESCRIPTION, element.getDescription()); + document.add(new Field(KEY_SEARCHABLE_ALL, new StringReader(element.getDescription()))); + addSimpleField(document, KEY_CLASSNAME, element.getElementClass().getCanonicalName()); - addSimpleField(document, KEY_DESCRIPTION, element.getDescription()); if (element.isLatest()) { addSimpleField(document, KEY_LATEST, "1"); } else { @@ -948,9 +1009,18 @@ addSimpleField(document, KEY_PARENT_VERSION, element.getParentVersion().toString()); } - for (Reader reader : readers) { - document.add(new Field(KEY_SEARCHABLE_CONTENT, reader)); + // Index data + for (Descriptor descriptor : descriptors) { + document.add(new Field(KEY_SEARCHABLE_DESCRIPTORS, new StringReader(descriptor.getValue()))); + document.add(new Field(KEY_SEARCHABLE_ALL, new StringReader(descriptor.getValue()))); } + for (Attachment attachment : attachments) { + document.add(new Field(KEY_SEARCHABLE_ATTACHMENTS_NAME, new StringReader(attachment.getFileName()))); + document.add(new Field(KEY_SEARCHABLE_ALL, new StringReader(attachment.getFileName()))); + } + for (Reader attachmentContent : attachmentsContent) { + document.add(new Field(KEY_SEARCHABLE_ATTACHMENTS_CONTENT, attachmentContent)); + } return document; } Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -24,6 +24,7 @@ import javax.ejb.Local; import fr.cemagref.simexplorer.is.entities.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.exceptions.SimExplorerException; @@ -67,7 +68,7 @@ * * @throws SimExplorerException the sim explorer storage exception */ - public abstract void saveElement(String token, MetaData element, Map<Attachment, InputStream> attachments) + public abstract void saveElement(String token, LoggableElement element, Map<Attachment, InputStream> attachments) throws SimExplorerException; /** Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -29,6 +29,7 @@ import java.util.UUID; import fr.cemagref.simexplorer.is.entities.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.exceptions.SimExplorerException; @@ -71,7 +72,7 @@ protected MetaData[] convertList(Collection<MetaData> metadatas) { return metadatas.toArray(new MetaData[metadatas.size()]); } - + /** Default constructor with default implementations of storage and indexing. */ public StorageEngineImpl() { this(null, null); @@ -128,21 +129,21 @@ * @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<Attachment, InputStream> attachments) + public void saveElement(String token, LoggableElement loggableElement, Map<Attachment, InputStream> attachments) throws SimExplorerException { // Save all attachments in system for (Map.Entry<Attachment, InputStream> entry : attachments.entrySet()) { - attachmentHandler.storeData(element, entry.getKey(), entry.getValue()); + attachmentHandler.storeData(loggableElement.getMetaData(), entry.getKey(), entry.getValue()); } // Parse all attachments for indexing - List<Reader> readers = new ArrayList<Reader>(); + List<Reader> attachmentsContent = new ArrayList<Reader>(); for (Map.Entry<Attachment, InputStream> entry : attachments.entrySet()) { Attachment attachment = entry.getKey(); if (attachment.getContentType() != null) { - InputStream content = attachmentHandler.retrieveData(element, attachment); + InputStream content = attachmentHandler.retrieveData(loggableElement.getMetaData(), attachment); // Transform stream into indexable text Reader reader; try { @@ -150,23 +151,13 @@ } catch (Exception e) { throw new SimExplorerTechnicalException(e); } - readers.add(reader); + attachmentsContent.add(reader); } } - if (element.getName() != null) { - Reader reader = new StringReader(element.getName()); - readers.add(reader); - } - if (element.getDescription() != null) { - Reader reader = new StringReader(element.getDescription()); - readers.add(reader); - } - // FIXME descriptors - // Insert element in database - // FIXME separate search - database.insertElement(element, readers); + database.insertElement(loggableElement.getMetaData(), attachmentsContent, loggableElement.getAttachments(), + loggableElement.getDescriptors()); } /* (non-Javadoc) @@ -249,7 +240,7 @@ @Override public MetaData[] getMetadatasUsing(String token, String uuid, Version version) throws SimExplorerException { MetaData mde = database.getElement(uuid, version); - return convertList( database.getElementsUsing(mde)); + return convertList(database.getElementsUsing(mde)); } @Override @@ -279,17 +270,18 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findFullTextCount(java.lang.String, boolean) */ - public int findFullTextCount(String token, String query, SearchColumn searchColumn, boolean onlyLatest) throws SimExplorerException { + public int findFullTextCount(String token, String query, SearchColumn searchColumn, boolean onlyLatest) + throws SimExplorerException { return database.findElementsByContentSearchCount(query, searchColumn, onlyLatest); } /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findFullText(java.lang.String, boolean, int, int, int) */ - public MetaData[] findFullText(String token, String query, SearchColumn searchColumn, boolean onlyLatest, int indexStart, int count, - SortColumn column, SortOrder sortOrder) throws SimExplorerException { - List<MetaData> elements = database.findElementsByContentSearch(query, searchColumn, onlyLatest, indexStart, count, column, - sortOrder); + public MetaData[] findFullText(String token, String query, SearchColumn searchColumn, boolean onlyLatest, + int indexStart, int count, SortColumn column, SortOrder sortOrder) throws SimExplorerException { + List<MetaData> elements = database.findElementsByContentSearch(query, searchColumn, onlyLatest, indexStart, + count, column, sortOrder); return convertList(elements); } Modified: trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseLoadMassTestCase.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseLoadMassTestCase.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseLoadMassTestCase.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -25,6 +25,8 @@ import java.util.Random; import junit.framework.TestCase; +import fr.cemagref.simexplorer.is.entities.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.Descriptor; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.storage.MetaDataGenerator; import fr.cemagref.simexplorer.is.storage.SearchColumn; @@ -161,7 +163,7 @@ readers.clear(); readers.add(reader); - database.insertElement(me, readers); + database.insertElement(me, readers, new ArrayList<Attachment>(), new ArrayList<Descriptor>()); } if (i > 0 && i % 100 == 0) { Modified: trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseTestCase.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseTestCase.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseTestCase.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -26,9 +26,12 @@ import junit.framework.TestCase; +import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import fr.cemagref.simexplorer.is.entities.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.Descriptor; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.storage.MetaDataGenerator; @@ -81,11 +84,11 @@ */ public void testInsertElementGetElement() throws Exception { MetaData me = mdg.generateMetaDataEntity(); - database.insertElement(me, new ArrayList<Reader>()); + database.insertElement(me, new ArrayList<Reader>(), new ArrayList<Attachment>(), new ArrayList<Descriptor>()); database.commit(); MetaData me2 = database.getElement(me.getUuid(), me.getVersion()); assertEquals(me.getDescription(), me2.getDescription()); - database.insertElement(me, new ArrayList<Reader>()); + database.insertElement(me, new ArrayList<Reader>(), new ArrayList<Attachment>(), new ArrayList<Descriptor>()); database.commit(); } @@ -97,14 +100,14 @@ public void testIndexAddFindElementsByContentSearch() throws Exception { MetaData me = mdg.generateMetaDataEntity(); - String keyphrase = Long.toHexString(r.nextLong()); + String keyphrase = RandomStringUtils.randomAlphabetic(r.nextInt(5) + 5); StringReader reader = new StringReader("ogijeriog ergijergioj " + keyphrase + " egiojergij ergijerogij"); List<Reader> readers = new ArrayList<Reader>(); readers.add(reader); - database.insertElement(me, readers); + database.insertElement(me, readers, new ArrayList<Attachment>(), new ArrayList<Descriptor>()); database.commit(); int mesCount = database.findElementsByContentSearchCount(keyphrase, SearchColumn.AllFields, true); @@ -120,7 +123,8 @@ public void testGetVersions() throws Exception { MetaData[] mes = mdg.generateVersionnedMetaDataEntity(); for (MetaData me : mes) { - database.insertElement(me, new ArrayList<Reader>()); + database.insertElement(me, new ArrayList<Reader>(), new ArrayList<Attachment>(), + new ArrayList<Descriptor>()); } database.commit(); @@ -141,7 +145,8 @@ public void testFindElementsById() throws Exception { MetaData[] mes = mdg.generateVersionnedMetaDataEntity(); for (MetaData me : mes) { - database.insertElement(me, new ArrayList<Reader>()); + database.insertElement(me, new ArrayList<Reader>(), new ArrayList<Attachment>(), + new ArrayList<Descriptor>()); } database.commit(); @@ -157,7 +162,7 @@ public void testFindElementsByProperties() throws Exception { MetaData me = mdg.generateMetaDataEntity(); - database.insertElement(me, new ArrayList<Reader>()); + database.insertElement(me, new ArrayList<Reader>(), new ArrayList<Attachment>(), new ArrayList<Descriptor>()); database.commit(); } Modified: trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseThread.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseThread.java 2008-02-25 14:12:26 UTC (rev 1230) +++ trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseThread.java 2008-02-25 14:14:33 UTC (rev 1231) @@ -22,6 +22,8 @@ import java.util.List; import java.util.Random; +import fr.cemagref.simexplorer.is.entities.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.Descriptor; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.storage.MetaDataGenerator; import fr.cemagref.simexplorer.is.storage.database.Database; @@ -52,8 +54,7 @@ /** * Sets the database. * - * @param database - * the database to set + * @param database the database to set */ public void setDatabase(Database database) { this.database = database; @@ -87,11 +88,9 @@ /** * Search elements. * - * @param id - * the id + * @param id the id * - * @throws Exception - * the exception + * @throws Exception the exception */ private void searchElements(String id) throws Exception { List<MetaData> mde = database.findElementsById(id, true); @@ -103,13 +102,11 @@ /** * Insert elements. * - * @param ipass - * the ipass + * @param ipass the ipass * * @return the string * - * @throws Exception - * the exception + * @throws Exception the exception */ private String insertElements(int ipass) throws Exception { @@ -120,7 +117,8 @@ for (int j = 0; j < ncycles; j++) { MetaData[] mes = mdg.generateVersionnedMetaDataEntity(); for (MetaData me : mes) { - database.insertElement(me, new ArrayList<Reader>()); + database.insertElement(me, new ArrayList<Reader>(), new ArrayList<Attachment>(), + new ArrayList<Descriptor>()); id = me.getUuid(); } } @@ -141,8 +139,7 @@ /** * Sets the id thread lucene. * - * @param idThreadLucene - * the idThreadLucene to set + * @param idThreadLucene the idThreadLucene to set */ public void setIdThreadLucene(int idThreadLucene) { this.idThreadLucene = idThreadLucene;
participants (1)
-
glandais@users.labs.libre-entreprise.org