Author: glandais Date: 2008-02-18 17:07:42 +0000 (Mon, 18 Feb 2008) New Revision: 1077 Added: trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceVersions.java Removed: trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceLocalVersions.java Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceMassInsert.java trunk/simexplorer-is/simexplorer-is-storage/pom.xml trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/Component.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationApplication.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationData.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/factories/BaseEntityFactory.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/factories/MetaDataFactory.java trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/ElementGenerator.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/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 trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneSimpleTest.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockDatabase.java trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDelete.java trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDownload.java trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Install.java Log: Set -> List 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-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -23,15 +23,13 @@ import java.io.InputStream; import java.io.PipedInputStream; import java.io.PipedOutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.UUID; -import java.util.Collections; -import java.util.ArrayList; -import java.util.Arrays; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -401,7 +399,7 @@ * @see fr.cemagref.simexplorer.is.service.StorageService#getVersions(java.lang.String, java.lang.String) */ public Version[] getVersions(String token, String uuid) throws SimExplorerException { - Set<MetaData> metas = getStorageEngine().getElementVersions(token, uuid); + List<MetaData> metas = getStorageEngine().getElementVersions(token, uuid); List<Version> versions = new ArrayList<Version>(metas.size()); for (MetaData metaData : metas) { versions.add(metaData.getVersion()); @@ -428,7 +426,7 @@ * @see fr.cemagref.simexplorer.is.service.StorageService#deleteElement(java.lang.String, java.lang.String) */ public void deleteElement(String token, String uuid) throws SimExplorerException { - Set<MetaData> allUsedByList = new HashSet<MetaData>(); + List<MetaData> allUsedByList = new ArrayList<MetaData>(); Version[] versions = getVersions(token, uuid); for (Version aVersion : versions) { MetaData[] versionUsedBy = getMetadatasUsedBy(token, uuid, aVersion.toString()); @@ -668,7 +666,7 @@ // Elements Element entitiesElement = elementFactory.getXMLElementByTagName(node, entitiesNode); - Set<Element> entityElements = elementFactory.getXMLElementsByTagName(entitiesElement, entityNode); + List<Element> entityElements = elementFactory.getXMLElementsByTagName(entitiesElement, entityNode); for (Element element : entityElements) { MetaData elementMetaData = saveElement(token, document, element, idsattachment); getStorageEngine().saveElementHierarchy(token, parent, elementMetaData); Deleted: trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceLocalVersions.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceLocalVersions.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceLocalVersions.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -1,246 +0,0 @@ -/* -* ##% Copyright (C) 2008 Code Lutin, Gabriel Landais -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* ##% */ -package fr.cemagref.simexplorer.is.service; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.Set; - -import junit.framework.TestCase; - -import com.healthmarketscience.rmiio.SerializableInputStream; - -import fr.cemagref.simexplorer.is.entities.attachment.Attachment; -import fr.cemagref.simexplorer.is.entities.data.Code; -import fr.cemagref.simexplorer.is.entities.data.Component; -import fr.cemagref.simexplorer.is.entities.data.ExplorationApplication; -import fr.cemagref.simexplorer.is.entities.data.ExplorationData; -import fr.cemagref.simexplorer.is.entities.data.Library; -import fr.cemagref.simexplorer.is.entities.metadata.MetaData; -import fr.cemagref.simexplorer.is.entities.metadata.Version; -import fr.cemagref.simexplorer.is.exceptions.SimExplorerException; -import fr.cemagref.simexplorer.is.factories.BaseEntityFactory; -import fr.cemagref.simexplorer.is.factories.MetaDataFactory; -import fr.cemagref.simexplorer.is.factories.XmlConstants; -import fr.cemagref.simexplorer.is.storage.ElementGenerator.RandomStream; -import fr.cemagref.simexplorer.is.storage.ElementGenerator; - -public class StorageServiceLocalVersions extends TestCase { - - /** The storage service. */ - private StorageService storageService; - - /** The element generator. */ - private ElementGenerator elementGenerator; - - private String token; - - /** The r. */ - private Random r = new Random(); - - private Map<Attachment, ElementGenerator.RandomStream> attachments; - - /* (non-Javadoc) - * @see junit.framework.TestCase#setUp() - */ - @Override - protected void setUp() throws Exception { - super.setUp(); - elementGenerator = new ElementGenerator(); - - storageService = new StorageServiceClient(); - - /* - Properties properties = (Properties) System.getProperties().clone(); - properties.put("java.naming.provider.url", "jnp://localhost:1099"); - properties.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); - properties.put("java.naming.factory.url.pkgs", "org.jnp.interfaces"); - - Context context = new InitialContext(properties); - storageService = (StorageService) context.lookup("StorageService"); - */ - } - - private MetaData saveEa(ExplorationApplication ea, boolean computeAttachments) throws Exception { - - if (computeAttachments) { - attachments = new HashMap<Attachment, ElementGenerator.RandomStream>(); - - List<Attachment> attachmentsKeys = new ArrayList<Attachment>(); - - attachmentsKeys.addAll(ea.getMetaData().getAttachments()); - Set<Component> components = ea.getComponents(); - for (Component component : components) { - attachmentsKeys.addAll(component.getMetaData().getAttachments()); - Set<Library> libraries = component.getLibraries(); - for (Library library : libraries) { - attachmentsKeys.addAll(library.getMetaData().getAttachments()); - } - } - Set<ExplorationData> explorations = ea.getExplorations(); - for (ExplorationData explorationData : explorations) { - attachmentsKeys.addAll(explorationData.getMetaData().getAttachments()); - } - - for (Attachment attachment : attachmentsKeys) { - RandomStream randomStream = elementGenerator.generateTextStream(); - attachment.setDataHash(randomStream.getMd5()); - attachments.put(attachment, randomStream); - } - } - - SerializableInputStream xmlStream = new SerializableInputStream(BaseEntityFactory.getFactory( - ExplorationApplication.class).saveElement(XmlConstants.VALUE_METADATA_TYPE_EA, ea)); - - Map<Attachment, SerializableInputStream> realAttachments = new HashMap<Attachment, SerializableInputStream>(); - for (Map.Entry<Attachment, ElementGenerator.RandomStream> element : attachments.entrySet()) { - realAttachments.put(element.getKey(), new SerializableInputStream(element.getValue().getStream())); - } - - return storageService.saveElement(token, xmlStream, realAttachments); - } - - private void listExisting(String uuid) throws SimExplorerException { - if (uuid != null) { - Version[] versions = storageService.getVersions(token, uuid); - System.out.println("Versions of uuid " + uuid + ":"); - for (int i = 0; i < versions.length; i++) { - System.out.println(versions[i]); - } - } - } - - private String testVersionUpdate(String firstVersion, String secondVersion, String assertFirst, - String assertSecond, boolean different) throws Exception { - System.out.println("-----------------------------"); - - ExplorationApplication ea; - - MetaDataFactory<MetaData> mdeFactory = MetaDataFactory.getFactory(MetaData.class); - - ea = elementGenerator.generateRandomEA(); - - StringBuffer task = new StringBuffer(); - task.append(firstVersion).append("A + ").append(secondVersion); - if (different) { - task.append("B"); - } else { - task.append("A"); - } - task.append(" = ").append(assertFirst).append("A"); - if (different) { - task.append(" + ").append(assertSecond).append("B"); - } - System.out.println(task.toString()); - - System.out.println("UUID : " + ea.getMetaData().getUuid()); - System.out.println("Name : " + ea.getMetaData().getName()); - - ea.getMetaData().setVersion(firstVersion); - - System.out.println("Saving " + firstVersion + "A"); - MetaData mde1 = saveEa(ea, true); - listExisting(ea.getMetaData().getUuid()); - - ea.getMetaData().setVersion(secondVersion); - - if (different) { - Component component = ea.getComponents().iterator().next(); - Code code = new Code(); - code.setCode("regreg"); - code.setLanguage("regreg"); - component.getCodes().add(code); - } - - System.out.print("Saving " + secondVersion); - if (different) { - System.out.println("B"); - } else { - System.out.println("A"); - } - MetaData mde2 = saveEa(ea, false); - listExisting(ea.getMetaData().getUuid()); - - System.out.println("A : " + mde1.getHash()); - if (different) { - System.out.println("B : " + mde2.getHash()); - } - - return ea.getMetaData().getUuid(); - // assertEquals(mde1.getVersion().toString(), assertFirst); - // assertEquals(mde2.getVersion().toString(), assertSecond); - } - - public void testVersionUpdate() throws Exception { - - String password = "password"; - // token = storageService.loginUser("superadmin", - // AuthenticationServiceHelper.computeHash(password.toCharArray())); - - List<String> uuids = new ArrayList<String>(); - - uuids.add(testVersionUpdate("1.1", "1.0", "1.1", "1.1", false)); - uuids.add(testVersionUpdate("1.1", "1.1", "1.1", "1.1", false)); - uuids.add(testVersionUpdate("1.1", "2.1", "2.1", "2.1", false)); - - uuids.add(testVersionUpdate("1.1", "1.0", "1.1", "1.2", true)); - uuids.add(testVersionUpdate("1.1", "1.1", "1.1", "1.2", true)); - uuids.add(testVersionUpdate("1.1", "1.1.5", "1.1", "1.2", true)); - uuids.add(testVersionUpdate("1.1", "1.2", "1.1", "1.2", true)); - uuids.add(testVersionUpdate("1.1", "2.1", "1.1", "2.1", true)); - - System.out.println("-----------------------------"); - for (String uuid : uuids) { - listExisting(uuid); - } - - } - - /* - public void testVersionUpdate2() throws Exception { - ExplorationApplication ea; - - MetaDataFactory<MetaData> mdeFactory = MetaDataFactory - .getFactory(MetaData.class); - - ea = elementGenerator.generateRandomEA(); - MetaData mde1 = saveEa(ea, true); - - Component component = ea.getComponents().iterator().next(); - Code code = new Code(); - code.setCode("regreg"); - code.setLanguage("regreg"); - component.getCodes().add(code); - - MetaData mde2 = saveEa(ea, false); - - InputStream stream1 = storageService.retrieveElementXML(null, mde1 - .getUuid(), mde1.getVersion().toString()); - InputStream stream2 = storageService.retrieveElementXML(null, mde2 - .getUuid(), mde2.getVersion().toString()); - - assertFalse(mdeFactory.computeHash(stream1).equals( - mdeFactory.computeHash(stream2))); - assertEquals(mde1.getVersion(), mde2.getVersion().incVersion(1)); - } - */ - -} Modified: trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceMassInsert.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceMassInsert.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceMassInsert.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -24,7 +24,6 @@ import java.util.Map; import java.util.Properties; import java.util.Random; -import java.util.Set; import javax.naming.Context; import javax.naming.InitialContext; @@ -40,8 +39,8 @@ import fr.cemagref.simexplorer.is.entities.data.Library; import fr.cemagref.simexplorer.is.factories.BaseEntityFactory; import fr.cemagref.simexplorer.is.factories.XmlConstants; -import fr.cemagref.simexplorer.is.storage.ElementGenerator.RandomStream; import fr.cemagref.simexplorer.is.storage.ElementGenerator; +import fr.cemagref.simexplorer.is.storage.ElementGenerator.RandomStream; /** * The Class StorageServiceMassInsert. @@ -104,15 +103,15 @@ List<Attachment> attachmentsKeys = new ArrayList<Attachment>(); attachmentsKeys.addAll(ea.getMetaData().getAttachments()); - Set<Component> components = ea.getComponents(); + List<Component> components = ea.getComponents(); for (Component component : components) { attachmentsKeys.addAll(component.getMetaData().getAttachments()); - Set<Library> libraries = component.getLibraries(); + List<Library> libraries = component.getLibraries(); for (Library library : libraries) { attachmentsKeys.addAll(library.getMetaData().getAttachments()); } } - Set<ExplorationData> explorations = ea.getExplorations(); + List<ExplorationData> explorations = ea.getExplorations(); for (ExplorationData explorationData : explorations) { attachmentsKeys.addAll(explorationData.getMetaData().getAttachments()); } Copied: trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceVersions.java (from rev 1064, trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceLocalVersions.java) =================================================================== --- trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceVersions.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/StorageServiceVersions.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -0,0 +1,250 @@ +/* +* ##% Copyright (C) 2008 Code Lutin, Gabriel Landais +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* ##% */ +package fr.cemagref.simexplorer.is.service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Random; +import java.util.Set; + +import javax.naming.Context; +import javax.naming.InitialContext; + +import junit.framework.TestCase; + +import com.healthmarketscience.rmiio.SerializableInputStream; + +import fr.cemagref.simexplorer.is.entities.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.Code; +import fr.cemagref.simexplorer.is.entities.data.Component; +import fr.cemagref.simexplorer.is.entities.data.ExplorationApplication; +import fr.cemagref.simexplorer.is.entities.data.ExplorationData; +import fr.cemagref.simexplorer.is.entities.data.Library; +import fr.cemagref.simexplorer.is.entities.metadata.MetaData; +import fr.cemagref.simexplorer.is.entities.metadata.Version; +import fr.cemagref.simexplorer.is.exceptions.SimExplorerException; +import fr.cemagref.simexplorer.is.factories.BaseEntityFactory; +import fr.cemagref.simexplorer.is.factories.MetaDataFactory; +import fr.cemagref.simexplorer.is.factories.XmlConstants; +import fr.cemagref.simexplorer.is.storage.ElementGenerator; +import fr.cemagref.simexplorer.is.storage.ElementGenerator.RandomStream; + +public class StorageServiceVersions extends TestCase { + + /** The storage service. */ + private StorageService storageService; + + /** The element generator. */ + private ElementGenerator elementGenerator; + + private String token; + + /** The r. */ + private Random r = new Random(); + + private Map<Attachment, ElementGenerator.RandomStream> attachments; + + /* (non-Javadoc) + * @see junit.framework.TestCase#setUp() + */ + @Override + protected void setUp() throws Exception { + super.setUp(); + elementGenerator = new ElementGenerator(); + + //storageService = new StorageServiceClient(); + + + Properties properties = (Properties) System.getProperties().clone(); + properties.put("java.naming.provider.url", "jnp://localhost:1099"); + properties.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); + properties.put("java.naming.factory.url.pkgs", "org.jnp.interfaces"); + + Context context = new InitialContext(properties); + storageService = (StorageService) context.lookup("StorageService"); + + } + + private MetaData saveEa(ExplorationApplication ea, boolean computeAttachments) throws Exception { + + if (computeAttachments) { + attachments = new HashMap<Attachment, ElementGenerator.RandomStream>(); + + List<Attachment> attachmentsKeys = new ArrayList<Attachment>(); + + attachmentsKeys.addAll(ea.getMetaData().getAttachments()); + List<Component> components = ea.getComponents(); + for (Component component : components) { + attachmentsKeys.addAll(component.getMetaData().getAttachments()); + List<Library> libraries = component.getLibraries(); + for (Library library : libraries) { + attachmentsKeys.addAll(library.getMetaData().getAttachments()); + } + } + List<ExplorationData> explorations = ea.getExplorations(); + for (ExplorationData explorationData : explorations) { + attachmentsKeys.addAll(explorationData.getMetaData().getAttachments()); + } + + for (Attachment attachment : attachmentsKeys) { + RandomStream randomStream = elementGenerator.generateTextStream(); + attachment.setDataHash(randomStream.getMd5()); + attachments.put(attachment, randomStream); + } + } + + SerializableInputStream xmlStream = new SerializableInputStream(BaseEntityFactory.getFactory( + ExplorationApplication.class).saveElement(XmlConstants.VALUE_METADATA_TYPE_EA, ea)); + + Map<Attachment, SerializableInputStream> realAttachments = new HashMap<Attachment, SerializableInputStream>(); + for (Map.Entry<Attachment, ElementGenerator.RandomStream> element : attachments.entrySet()) { + realAttachments.put(element.getKey(), new SerializableInputStream(element.getValue().getStream())); + } + + return storageService.saveElement(token, xmlStream, realAttachments); + } + + private void listExisting(String uuid) throws SimExplorerException { + if (uuid != null) { + Version[] versions = storageService.getVersions(token, uuid); + System.out.println("Versions of uuid " + uuid + ":"); + for (int i = 0; i < versions.length; i++) { + System.out.println(versions[i]); + } + } + } + + private String testVersionUpdate(String firstVersion, String secondVersion, String assertFirst, + String assertSecond, boolean different) throws Exception { + System.out.println("-----------------------------"); + + ExplorationApplication ea; + + MetaDataFactory<MetaData> mdeFactory = MetaDataFactory.getFactory(MetaData.class); + + ea = elementGenerator.generateRandomEA(); + + StringBuffer task = new StringBuffer(); + task.append(firstVersion).append("A + ").append(secondVersion); + if (different) { + task.append("B"); + } else { + task.append("A"); + } + task.append(" = ").append(assertFirst).append("A"); + if (different) { + task.append(" + ").append(assertSecond).append("B"); + } + System.out.println(task.toString()); + + System.out.println("UUID : " + ea.getMetaData().getUuid()); + System.out.println("Name : " + ea.getMetaData().getName()); + + ea.getMetaData().setVersion(firstVersion); + + System.out.println("Saving " + firstVersion + "A"); + MetaData mde1 = saveEa(ea, true); + listExisting(ea.getMetaData().getUuid()); + + ea.getMetaData().setVersion(secondVersion); + + if (different) { + Component component = ea.getComponents().iterator().next(); + Code code = new Code(); + code.setCode("regreg"); + code.setLanguage("regreg"); + component.getCodes().add(code); + } + + System.out.print("Saving " + secondVersion); + if (different) { + System.out.println("B"); + } else { + System.out.println("A"); + } + MetaData mde2 = saveEa(ea, false); + listExisting(ea.getMetaData().getUuid()); + + System.out.println("A : " + mde1.getHash()); + if (different) { + System.out.println("B : " + mde2.getHash()); + } + + return ea.getMetaData().getUuid(); + // assertEquals(mde1.getVersion().toString(), assertFirst); + // assertEquals(mde2.getVersion().toString(), assertSecond); + } + + public void testVersionUpdate() throws Exception { + + String password = "password"; + token = storageService.loginUser("superadmin", + AuthenticationServiceHelper.computeHash(password.toCharArray())); + + List<String> uuids = new ArrayList<String>(); + + uuids.add(testVersionUpdate("1.1", "1.0", "1.1", "1.1", false)); + uuids.add(testVersionUpdate("1.1", "1.1", "1.1", "1.1", false)); + uuids.add(testVersionUpdate("1.1", "2.1", "2.1", "2.1", false)); + + uuids.add(testVersionUpdate("1.1", "1.0", "1.1", "1.2", true)); + uuids.add(testVersionUpdate("1.1", "1.1", "1.1", "1.2", true)); + uuids.add(testVersionUpdate("1.1", "1.1.5", "1.1", "1.2", true)); + uuids.add(testVersionUpdate("1.1", "1.2", "1.1", "1.2", true)); + uuids.add(testVersionUpdate("1.1", "2.1", "1.1", "2.1", true)); + + System.out.println("-----------------------------"); + for (String uuid : uuids) { + listExisting(uuid); + } + + } + + /* + public void testVersionUpdate2() throws Exception { + ExplorationApplication ea; + + MetaDataFactory<MetaData> mdeFactory = MetaDataFactory + .getFactory(MetaData.class); + + ea = elementGenerator.generateRandomEA(); + MetaData mde1 = saveEa(ea, true); + + Component component = ea.getComponents().iterator().next(); + Code code = new Code(); + code.setCode("regreg"); + code.setLanguage("regreg"); + component.getCodes().add(code); + + MetaData mde2 = saveEa(ea, false); + + InputStream stream1 = storageService.retrieveElementXML(null, mde1 + .getUuid(), mde1.getVersion().toString()); + InputStream stream2 = storageService.retrieveElementXML(null, mde2 + .getUuid(), mde2.getVersion().toString()); + + assertFalse(mdeFactory.computeHash(stream1).equals( + mdeFactory.computeHash(stream2))); + assertEquals(mde1.getVersion(), mde2.getVersion().incVersion(1)); + } + */ + +} Modified: trunk/simexplorer-is/simexplorer-is-storage/pom.xml =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/pom.xml 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/pom.xml 2008-02-18 17:07:42 UTC (rev 1077) @@ -60,7 +60,7 @@ <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> - <version>2.2.0</version> + <version>2.3.0</version> </dependency> <dependency> <groupId>commons-logging</groupId> Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/Component.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/Component.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/Component.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -33,23 +33,23 @@ private static final long serialVersionUID = -1759921918565071510L; /** The constants. */ - Set<Constant> constants; + List<Constant> constants; /** The structures. */ - Set<Structure> structures; + List<Structure> structures; /** The codes. */ - Set<Code> codes; + List<Code> codes; /** The libraries. */ - Set<Library> libraries; + List<Library> libraries; /** * Gets the constants. * * @return the constants */ - public Set<Constant> getConstants() { + public List<Constant> getConstants() { return constants; } @@ -59,7 +59,7 @@ * @param constants * the new constants */ - public void setConstants(Set<Constant> constants) { + public void setConstants(List<Constant> constants) { this.constants = constants; } @@ -68,7 +68,7 @@ * * @return the structures */ - public Set<Structure> getStructures() { + public List<Structure> getStructures() { return structures; } @@ -78,7 +78,7 @@ * @param structures * the new structures */ - public void setStructures(Set<Structure> structures) { + public void setStructures(List<Structure> structures) { this.structures = structures; } @@ -87,7 +87,7 @@ * * @return the codes */ - public Set<Code> getCodes() { + public List<Code> getCodes() { return codes; } @@ -97,7 +97,7 @@ * @param codes * the new codes */ - public void setCodes(Set<Code> codes) { + public void setCodes(List<Code> codes) { this.codes = codes; } @@ -106,7 +106,7 @@ * * @return the libraries */ - public Set<Library> getLibraries() { + public List<Library> getLibraries() { return libraries; } @@ -116,7 +116,7 @@ * @param libraries * the new libraries */ - public void setLibraries(Set<Library> libraries) { + public void setLibraries(List<Library> libraries) { this.libraries = libraries; } Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationApplication.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationApplication.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationApplication.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -34,17 +34,17 @@ private static final long serialVersionUID = 122049347724394193L; /** The explorations. */ - private Set<ExplorationData> explorations; + private List<ExplorationData> explorations; /** The components. */ - private Set<Component> components; + private List<Component> components; /** * Gets the explorations. * * @return the explorations */ - public Set<ExplorationData> getExplorations() { + public List<ExplorationData> getExplorations() { return explorations; } @@ -54,7 +54,7 @@ * @param explorations * the new explorations */ - public void setExplorations(Set<ExplorationData> explorations) { + public void setExplorations(List<ExplorationData> explorations) { this.explorations = explorations; } @@ -63,7 +63,7 @@ * * @return the components */ - public Set<Component> getComponents() { + public List<Component> getComponents() { return components; } @@ -73,7 +73,7 @@ * @param components * the new components */ - public void setComponents(Set<Component> components) { + public void setComponents(List<Component> components) { this.components = components; } Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationData.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationData.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/entities/data/ExplorationData.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -32,7 +32,7 @@ private static final long serialVersionUID = -6439801837608358754L; /** The values map. TODO le champs doit s'appeller constantValues */ - private Set<ConstantValue> constantValues; + private List<ConstantValue> constantValues; /** The result. */ private Result result; @@ -112,7 +112,7 @@ * * @return the values map */ - public Set<ConstantValue> getConstantValues() { + public List<ConstantValue> getConstantValues() { return constantValues; } @@ -122,7 +122,7 @@ * @param constantValues * the new values map */ - public void setConstantValues(Set<ConstantValue> constantValues) { + public void setConstantValues(List<ConstantValue> constantValues) { this.constantValues = constantValues; } Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/factories/BaseEntityFactory.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/factories/BaseEntityFactory.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/factories/BaseEntityFactory.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -20,10 +20,10 @@ import java.io.InputStream; import java.io.PipedInputStream; import java.io.PipedOutputStream; +import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; +import java.util.List; import java.util.Map; -import java.util.Set; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -242,9 +242,9 @@ * * @throws SimExplorerException the exception */ - public <T extends DataEntity> Set<T> loadCollection(String tagSetName, String tagName, Class<T> clazz, + public <T extends DataEntity> List<T> loadCollection(String tagSetName, String tagName, Class<T> clazz, Element xmlElement, DataEntity parentData) throws SimExplorerException { - Set<T> entities = new HashSet<T>(); + List<T> entities = new ArrayList<T>(); // Retrieve XML node containing the collection Element xmlCollection = getXMLElementByTagName(xmlElement, tagSetName); @@ -253,7 +253,7 @@ BaseEntityFactory<T> elementFactory = getFactory(clazz); // Retrieve all XML elements - Set<Element> list = getXMLElementsByTagName(xmlCollection, tagName); + List<Element> list = getXMLElementsByTagName(xmlCollection, tagName); for (Element element : list) { // Convert the XML node to entity T entity = elementFactory.loadElement(element); @@ -279,7 +279,7 @@ * * @throws SimExplorerException the exception */ - public <T extends DataEntity> void saveCollection(Set<T> entities, String tagSetName, String tagName, + public <T extends DataEntity> void saveCollection(List<T> entities, String tagSetName, String tagName, Class<T> clazz, Document document, Element xmlElement) throws SimExplorerException { if (entities != null && entities.size() > 0) { Element xmlCollection = document.createElement(tagSetName); @@ -374,7 +374,7 @@ * @return First child element with tagName */ public Element getXMLElementByTagName(Element xmlElement, String tagName) { - Set<Element> elements = getXMLElementsByTagName(xmlElement, tagName); + List<Element> elements = getXMLElementsByTagName(xmlElement, tagName); if (elements.size() > 0) { return elements.iterator().next(); } @@ -389,8 +389,8 @@ * * @return Children with tagName */ - public Set<Element> getXMLElementsByTagName(Element xmlElement, String tagName) { - Set<Element> elements = new HashSet<Element>(); + public List<Element> getXMLElementsByTagName(Element xmlElement, String tagName) { + List<Element> elements = new ArrayList<Element>(); NodeList nodes = xmlElement.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/factories/MetaDataFactory.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/factories/MetaDataFactory.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/factories/MetaDataFactory.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -119,7 +119,7 @@ Element descriptorsElement = getXMLElementByTagName(xmlElement, KEY_METADATA_DESCRIPTORS); if (descriptorsElement != null) { - Set<Element> descriptorElements = getXMLElementsByTagName(descriptorsElement, KEY_METADATA_DESCRIPTOR); + List<Element> descriptorElements = getXMLElementsByTagName(descriptorsElement, KEY_METADATA_DESCRIPTOR); for (Element descriptorElement : descriptorElements) { String name = getXMLProperty(descriptorElement, KEY_METADATA_DESCRIPTOR_NAME); String value = getXMLProperty(descriptorElement, KEY_METADATA_DESCRIPTOR_VALUE); @@ -132,7 +132,7 @@ Element attachmentsElement = getXMLElementByTagName(xmlElement, KEY_METADATA_ATTACHMENTS); if (attachmentsElement != null) { - Set<Element> attachmentElements = getXMLElementsByTagName(attachmentsElement, KEY_METADATA_ATTACHMENT); + List<Element> attachmentElements = getXMLElementsByTagName(attachmentsElement, KEY_METADATA_ATTACHMENT); for (Element attachmentElement : attachmentElements) { Attachment attachment = new Attachment(); Modified: trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/ElementGenerator.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/ElementGenerator.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/ElementGenerator.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -19,19 +19,18 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; -import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Random; -import java.util.Set; import java.util.UUID; import org.apache.commons.lang.RandomStringUtils; import org.codelutin.util.MD5; import fr.cemagref.simexplorer.is.entities.attachment.Attachment; -import fr.cemagref.simexplorer.is.factories.ContentTypeFactory; import fr.cemagref.simexplorer.is.entities.data.Code; import fr.cemagref.simexplorer.is.entities.data.Component; import fr.cemagref.simexplorer.is.entities.data.Constant; @@ -46,6 +45,7 @@ import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.factories.BaseEntityFactory; +import fr.cemagref.simexplorer.is.factories.ContentTypeFactory; /** * The Class ElementGenerator. @@ -102,6 +102,8 @@ /** The cs. */ private static int cs; + + private static int counter = 0; /** The randomstrings. */ private static String[] randomstrings; @@ -166,8 +168,8 @@ private void update(LoggableElement element) throws Exception { MetaData metaData = new MetaData(); metaData.setUuid(UUID.randomUUID().toString()); - metaData.setName(longString()); metaData.setType(element.getClass().getSimpleName()); + metaData.setName(metaData.getType() + "-" + counter++); StringBuffer sb = new StringBuffer(""); @@ -213,8 +215,8 @@ * * @throws Exception the exception */ - public <T extends DataEntity> Set<T> generateArray(Class<T> clazz) throws Exception { - Set<T> elements = new HashSet<T>(); + public <T extends DataEntity> List<T> generateArray(Class<T> clazz) throws Exception { + List<T> elements = new ArrayList<T>(); int i = 3 + r.nextInt(2); for (int j = 0; j < i; j++) { T element = BaseEntityFactory.<T> getFactory(clazz).createInstance(); @@ -236,12 +238,12 @@ public ExplorationApplication generateRandomEA() throws Exception { ExplorationApplication ea = new ExplorationApplication(); update(ea); - Set<ExplorationData> datas = generateArray(ExplorationData.class); + List<ExplorationData> datas = generateArray(ExplorationData.class); for (ExplorationData object : datas) { processExplorationData(object); } ea.setExplorations(datas); - Set<Component> components = generateArray(Component.class); + List<Component> components = generateArray(Component.class); for (Component object : components) { processComponent(object); } @@ -257,21 +259,21 @@ * @throws Exception the exception */ private void processComponent(Component component) throws Exception { - Set<Constant> constants = generateArray(Constant.class); + List<Constant> constants = generateArray(Constant.class); for (Constant constant : constants) { processConstant(constant); } component.setConstants(constants); - component.setStructures(new HashSet<Structure>()); + component.setStructures(new ArrayList<Structure>()); - Set<Code> codes = generateArray(Code.class); + List<Code> codes = generateArray(Code.class); for (Code code : codes) { processCode(code); } component.setCodes(codes); - Set<Library> libraries = generateArray(Library.class); + List<Library> libraries = generateArray(Library.class); for (Library library : libraries) { processLibrary(library); } @@ -338,7 +340,7 @@ explorationData.setResult(result); // explorationData.getMetaData().getAttachments().add(generateAttachment()); - Set<ConstantValue> constantValues = generateArray(ConstantValue.class); + List<ConstantValue> constantValues = generateArray(ConstantValue.class); for (ConstantValue constantValue : constantValues) { processConstantValue(constantValue); } 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-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/Database.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -131,7 +131,7 @@ * @return the elements used by * @throws SimExplorerException TODO */ - public abstract Set<MetaData> getElementsUsedBy(MetaData mde) throws SimExplorerException; + public abstract List<MetaData> getElementsUsedBy(MetaData mde) throws SimExplorerException; /** * Gets the elements using mde. @@ -141,7 +141,7 @@ * @return the elements using * @throws SimExplorerException TODO */ - public abstract Set<MetaData> getElementsUsing(MetaData mde) throws SimExplorerException; + public abstract List<MetaData> getElementsUsing(MetaData mde) throws SimExplorerException; /** * Retrieve all elements by id Empty list if no element with this id. @@ -153,7 +153,7 @@ * * @throws SimExplorerException the sim explorer storage exception */ - public abstract Set<MetaData> findElementsById(String uuid, boolean onlyLatest) throws SimExplorerException; + public abstract List<MetaData> findElementsById(String uuid, boolean onlyLatest) throws SimExplorerException; /** * Retrieve elements with specific properties<br> @@ -165,7 +165,7 @@ * * @throws SimExplorerException the sim explorer storage exception */ - public Set<MetaData> findElementsByProperties(Map<String, String> properties) throws SimExplorerException { + public List<MetaData> findElementsByProperties(Map<String, String> properties) throws SimExplorerException { return findElementsByProperties(properties, 0, -1, 0); } @@ -182,7 +182,7 @@ * * @throws SimExplorerException the sim explorer storage exception */ - public abstract Set<MetaData> findElementsByProperties(Map<String, String> properties, int start, int count, + public abstract List<MetaData> findElementsByProperties(Map<String, String> properties, int start, int count, int dateOrder) throws SimExplorerException; /** @@ -227,7 +227,7 @@ * * @throws SimExplorerException the sim explorer storage exception */ - public Set<MetaData> findElementsByType(String type, boolean onlyLatest, int start, int count, int dateOrder) + public List<MetaData> findElementsByType(String type, boolean onlyLatest, int start, int count, int dateOrder) throws SimExplorerException { return findElementsByProperties(getPropertiesByType(type, onlyLatest), start, count, dateOrder); } @@ -260,7 +260,7 @@ * * @throws SimExplorerException the sim explorer storage exception */ - public abstract Set<MetaData> findElementsByContentSearch(String queryText, boolean onlyLatest, int start, + public abstract List<MetaData> findElementsByContentSearch(String queryText, boolean onlyLatest, int start, int count, int dateOrder) throws SimExplorerException; /** 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-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabase.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -49,6 +49,7 @@ import org.apache.lucene.search.Query; import org.apache.lucene.search.Searcher; import org.apache.lucene.search.Sort; +import org.apache.lucene.search.SortField; import org.apache.lucene.search.TermQuery; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; @@ -56,11 +57,11 @@ import org.apache.lucene.store.NoLockFactory; import fr.cemagref.simexplorer.is.entities.attachment.Attachment; -import fr.cemagref.simexplorer.is.factories.ContentTypeFactory; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.exceptions.SimExplorerException; import fr.cemagref.simexplorer.is.exceptions.SimExplorerTechnicalException; +import fr.cemagref.simexplorer.is.factories.ContentTypeFactory; import fr.cemagref.simexplorer.is.storage.database.Database; import fr.cemagref.simexplorer.is.storage.util.Config; import fr.cemagref.simexplorer.is.storage.util.KeyValue; @@ -385,7 +386,7 @@ * @see fr.cemagref.simexplorer.is.storage.database.Database#findElementsById(java.lang.String, boolean) */ @Override - public Set<MetaData> findElementsById(String uuid, boolean onlyLatest) throws SimExplorerException { + public List<MetaData> findElementsById(String uuid, boolean onlyLatest) throws SimExplorerException { // Create hash map with id Map<String, String> properties = new HashMap<String, String>(); properties.put(KEY_UUID, uuid); @@ -393,7 +394,7 @@ properties.put(KEY_LATEST, "1"); } - Set<MetaData> result = null; + List<MetaData> result = null; try { // Get current searcher instance @@ -444,9 +445,9 @@ * @see fr.cemagref.simexplorer.is.storage.database.Database#findElementsByProperties(java.util.Map, int, int, int) */ @Override - public Set<MetaData> findElementsByProperties(Map<String, String> properties, int start, int count, int dateOrder) + public List<MetaData> findElementsByProperties(Map<String, String> properties, int start, int count, int dateOrder) throws SimExplorerException { - Set<MetaData> result = null; + List<MetaData> result = null; try { // Get current searcher instance @@ -510,12 +511,20 @@ */ private Sort getSortDate(int dateOrder) { Sort sort = null; - if (dateOrder == SORT_DATE_DESCENDING) { - sort = new Sort(SORT_DATE_FIELD, true); + if (dateOrder != SORT_DATE_NONE) { + SortField[] fields = new SortField[3]; + fields[1] = SortField.FIELD_SCORE; + fields[2] = SortField.FIELD_DOC; + + if (dateOrder == SORT_DATE_DESCENDING) { + fields[0] = new SortField(SORT_DATE_FIELD, SortField.LONG, true); + } else { + fields[0] = new SortField(SORT_DATE_FIELD, SortField.LONG, false); + } + sort = new Sort(fields); + } else { + sort = Sort.INDEXORDER; } - if (dateOrder == SORT_DATE_ASCENDING) { - sort = new Sort(SORT_DATE_FIELD); - } return sort; } @@ -523,7 +532,7 @@ * @see fr.cemagref.simexplorer.is.storage.database.Database#findElementsByContentSearch(java.lang.String, boolean, int, int, int) */ @Override - public Set<MetaData> findElementsByContentSearch(String queryText, boolean onlyLatest, int start, int count, + public List<MetaData> findElementsByContentSearch(String queryText, boolean onlyLatest, int start, int count, int dateOrder) throws SimExplorerException { Query query; try { @@ -532,7 +541,7 @@ throw new SimExplorerTechnicalException(e); } - Set<MetaData> result = null; + List<MetaData> result = null; Hits hits; try { @@ -624,7 +633,16 @@ query.add(new TermQuery(new Term(kv.getKey(), kv.getValue())), BooleanClause.Occur.MUST); } + //Hits hits = searcher.search(query, Sort.INDEXORDER);//getSortDate(dateOrder)); Hits hits = searcher.search(query, getSortDate(dateOrder)); + + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < hits.length(); i++) { + sb.append(i).append(" : ").append(hits.id(i)).append(" = "); + sb.append(hits.score(i)).append("\n"); + } + log.info(sb.toString()); + return hits; } @@ -639,8 +657,8 @@ * * @throws SimExplorerException the exception */ - private Set<MetaData> convertHitsToElements(Hits hits, int start, int count) throws SimExplorerException { - Set<MetaData> elements = new HashSet<MetaData>(); + private List<MetaData> convertHitsToElements(Hits hits, int start, int count) throws SimExplorerException { + List<MetaData> elements = new ArrayList<MetaData>(); try { if (hits != null) { // For documents in range @@ -881,9 +899,9 @@ * @return the associated elements * @throws SimExplorerException */ - protected Set<MetaData> getAssociatedElements(MetaData mde, String fromField, String toField) + protected List<MetaData> getAssociatedElements(MetaData mde, String fromField, String toField) throws SimExplorerException { - Set<MetaData> result = new HashSet<MetaData>(); + List<MetaData> result = new ArrayList<MetaData>(); try { Query query; Hits hits; @@ -933,7 +951,7 @@ * @see fr.cemagref.simexplorer.is.storage.database.Database#getElementsUsedBy(fr.cemagref.simexplorer.is.entities.metadata.MetaData) */ @Override - public Set<MetaData> getElementsUsedBy(MetaData mde) throws SimExplorerException { + public List<MetaData> getElementsUsedBy(MetaData mde) throws SimExplorerException { return getAssociatedElements(mde, KEY_UUID_VERSION_CHILD, KEY_UUID_VERSION_PARENT); } @@ -941,7 +959,7 @@ * @see fr.cemagref.simexplorer.is.storage.database.Database#getElementsUsing(fr.cemagref.simexplorer.is.entities.metadata.MetaData) */ @Override - public Set<MetaData> getElementsUsing(MetaData mde) throws SimExplorerException { + public List<MetaData> getElementsUsing(MetaData mde) throws SimExplorerException { return getAssociatedElements(mde, KEY_UUID_VERSION_PARENT, KEY_UUID_VERSION_CHILD); } @@ -960,7 +978,7 @@ throw new SimExplorerTechnicalException(e); } - Set<MetaData> elementsUsedByFrom = getElementsUsing(fromElement); + List<MetaData> elementsUsedByFrom = getElementsUsing(fromElement); for (MetaData elementUsed : elementsUsedByFrom) { saveElementHierarchy(toElement, elementUsed); 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-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -137,7 +137,7 @@ * * @throws SimExplorerException the sim explorer storage exception */ - public abstract Set<MetaData> getElementVersions(String token, String uuid) throws SimExplorerException; + public abstract List<MetaData> getElementVersions(String token, String uuid) throws SimExplorerException; /** * Retrieve an element in a specific version. 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-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -157,7 +157,7 @@ */ public MetaData getMetadata(String token, String uuid) throws SimExplorerException { MetaData mde = null; - Set<MetaData> set = database.findElementsById(uuid, true); + List<MetaData> set = database.findElementsById(uuid, true); if (!set.isEmpty()) { mde = set.iterator().next(); } @@ -185,7 +185,7 @@ @Override public MetaData[] getMetadatasUsedBy(String token, String uuid, Version version) throws SimExplorerException { MetaData mde = database.getElement(uuid, version); - Set<MetaData> elements = database.getElementsUsedBy(mde); + List<MetaData> elements = database.getElementsUsedBy(mde); return elements.toArray(new MetaData[elements.size()]); } @@ -195,7 +195,7 @@ @Override public MetaData[] getMetadatasUsing(String token, String uuid, Version version) throws SimExplorerException { MetaData mde = database.getElement(uuid, version); - Set<MetaData> elements = database.getElementsUsing(mde); + List<MetaData> elements = database.getElementsUsing(mde); return elements.toArray(new MetaData[elements.size()]); } @@ -219,7 +219,7 @@ */ public MetaData[] findFullText(String token, String query, boolean onlyLatest, int indexStart, int count, int dateOrder) throws SimExplorerException { - Set<MetaData> elements = database.findElementsByContentSearch(query, onlyLatest, indexStart, count, dateOrder); + List<MetaData> elements = database.findElementsByContentSearch(query, onlyLatest, indexStart, count, dateOrder); MetaData[] result = elements.toArray(new MetaData[elements.size()]); return result; } @@ -229,7 +229,7 @@ */ public MetaData[] findElementsByType(String token, String type, boolean onlyLatest, int start, int count, int dateOrder) throws SimExplorerException { - Set<MetaData> elements = database.findElementsByType(type, onlyLatest, start, count, dateOrder); + List<MetaData> elements = database.findElementsByType(type, onlyLatest, start, count, dateOrder); MetaData[] result = elements.toArray(new MetaData[elements.size()]); return result; } @@ -325,7 +325,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getElementVersions(java.lang.String, java.lang.String) */ - public Set<MetaData> getElementVersions(String token, String uuid) throws SimExplorerException { + public List<MetaData> getElementVersions(String token, String uuid) throws SimExplorerException { return database.findElementsById(uuid, false); } 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-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseLoadMassTestCase.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -214,7 +214,7 @@ int start = count / 2; int length = Math.min(200, Math.min(count, Math.max(1, count / 4))); - Set<MetaData> metaDatas = database.findElementsByContentSearch(key, + List<MetaData> metaDatas = database.findElementsByContentSearch(key, false, start, length, 1); System.out.println(key + " (" + start + " " + length + ") : " 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-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseTestCase.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -151,7 +151,7 @@ } database.commit(); - Set<MetaData> elements = database.findElementsById(mes[0].getUuid(), + List<MetaData> elements = database.findElementsById(mes[0].getUuid(), false); assertEquals(elements.size(), mes.length); } 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-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabaseThread.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -19,12 +19,12 @@ import java.io.Reader; import java.util.ArrayList; +import java.util.List; import java.util.Random; -import java.util.Set; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; +import fr.cemagref.simexplorer.is.storage.MetaDataGenerator; import fr.cemagref.simexplorer.is.storage.database.Database; -import fr.cemagref.simexplorer.is.storage.MetaDataGenerator; /** * The Class LuceneDatabaseThread. @@ -94,7 +94,7 @@ * the exception */ private void searchElements(String id) throws Exception { - Set<MetaData> mde = database.findElementsById(id, true); + List<MetaData> mde = database.findElementsById(id, true); if (mde.isEmpty()) { System.err.println(idThreadLucene + " - " + id); } Modified: trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneSimpleTest.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneSimpleTest.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneSimpleTest.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -17,6 +17,9 @@ * ##% */ package fr.cemagref.simexplorer.is.storage.database.lucene; +import java.io.File; +import java.util.Random; + import junit.framework.TestCase; import org.apache.lucene.analysis.Analyzer; @@ -25,15 +28,16 @@ import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.Term; +import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.Searcher; +import org.apache.lucene.search.Sort; +import org.apache.lucene.search.SortField; import org.apache.lucene.search.TermQuery; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; -import java.io.File; - /** * The Class LuceneSimpleTest. */ @@ -52,6 +56,8 @@ /** The index dir. */ String indexDir = "/tmp/indextest/"; + Random r = new Random(); + /* (non-Javadoc) * @see junit.framework.TestCase#tearDown() */ @@ -69,12 +75,25 @@ } /** + * Creates the document. + * + * @return the document + */ + private Document createDocument(String a) { + Document doc = new Document(); + + doc.add(new Field("field1", "abcd", Field.Store.YES, Field.Index.UN_TOKENIZED)); + doc.add(new Field("field2", Integer.toString(r.nextInt()), Field.Store.YES, Field.Index.UN_TOKENIZED)); + + return doc; + } + + /** * Test lucene simple. * - * @throws Exception - * the exception + * @throws Exception the exception */ - public void testLuceneSimple() throws Exception { + private void testLuceneSimple() throws Exception { IndexWriter writer; Searcher searcher; @@ -92,26 +111,35 @@ Directory dir = FSDirectory.getDirectory(indexDir); writer = new IndexWriter(dir, true, analyser, true); + for (int i = 0; i < 40; i++) { + writer.addDocument(createDocument(Integer.toString(i))); + } + + writer.flush(); + writer.close(); searcher = new IndexSearcher(indexDir); - Document doc = new Document(); + query = new TermQuery(new Term("field1", "abcd")); - doc.add(new Field("field1", "abcd", Field.Store.YES, - Field.Index.UN_TOKENIZED)); - doc.add(new Field("field2", "dcba", Field.Store.YES, - Field.Index.UN_TOKENIZED)); + for (int i = 0; i < 20; i++) { + System.out.println("---------------"); + + Sort sort = new Sort(new SortField("field2", SortField.INT)); + //Sort sort = Sort.INDEXORDER; + Hits hits = searcher.search(query, sort); + + StringBuffer sb = new StringBuffer(); + for (int k = 0; k < hits.length(); k++) { + sb.append(k).append(" : ").append(hits.id(k)).append(" = "); + sb.append(hits.score(k)).append("\n"); + } + System.out.println(sb.toString()); + +// for (int j = 0; j < hits.length(); j++) { +// System.out.println(hits.doc(j).get("field2")); +// } + } - writer.addDocument(doc); - - query = new TermQuery(new Term("field1", "abcd")); - - System.out.println(searcher.search(query).length()); - writer.flush(); - System.out.println(searcher.search(query).length()); - writer.close(); - System.out.println(searcher.search(query).length()); - searcher = new IndexSearcher(indexDir); - System.out.println(searcher.search(query).length()); } } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockDatabase.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockDatabase.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/service/MockDatabase.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -150,7 +150,7 @@ LoggableElement loggableElement = loggableElements[0]; loggableElement.getMetaData().setLatest(false); String name =loggableElement.getMetaData().getName(); - Set<? extends LoggableElement> sons = elementGenerator.generateArray(loggableElement.getClass()); + List<? extends LoggableElement> sons = elementGenerator.generateArray(loggableElement.getClass()); int nbSons = 1 + sons.size(); Version[] versions = versionGenerator.generateVersions(nbSons + 1); loggableElement.getMetaData().setVersion(versions[0].toString()); Modified: trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDelete.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDelete.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDelete.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -17,7 +17,9 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.web.pages; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; import org.apache.tapestry.ComponentResources; @@ -58,7 +60,7 @@ /** The all used by list. */ @Persist - private Set<MetaData> allUsedByList; + private List<MetaData> allUsedByList; /** The _element. */ @SetterGetter @@ -83,7 +85,7 @@ usedBy = RemoteStorageService.getStorageService().getMetadatasUsedBy(getToken(), getMetadata().getUuid(), getMetadata().getVersion().toString()); if (usedBy.length == 0) { - allUsedByList = new HashSet<MetaData>(); + allUsedByList = new ArrayList<MetaData>(); Version[] versions = RemoteStorageService.getStorageService().getVersions(getToken(), getMetadata().getUuid()); for (int i = 0; i < versions.length; i++) { @@ -203,7 +205,7 @@ * * @return the all used by list */ - public Set<MetaData> getAllUsedByList() { + public List<MetaData> getAllUsedByList() { return allUsedByList; } Modified: trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -210,7 +210,7 @@ * @return the list< tree node> */ private List<TreeNode> generateValues(ExplorationData explorationData) { - Set<ConstantValue> values = explorationData.getConstantValues(); + List<ConstantValue> values = explorationData.getConstantValues(); List<TreeNode> res = new ArrayList<TreeNode>(); for (ConstantValue value : values) { TreeNode node = new TreeNode(); @@ -252,7 +252,7 @@ */ private List<TreeNode> generateComponents( ExplorationApplication explorationApplication) { - Set<Component> components = explorationApplication.getComponents(); + List<Component> components = explorationApplication.getComponents(); List<TreeNode> res = new ArrayList<TreeNode>(); for (Component component : components) { @@ -339,7 +339,7 @@ * @return the list< tree node> */ private List<TreeNode> generateLibraries(Component component) { - Set<Library> libraries = component.getLibraries(); + List<Library> libraries = component.getLibraries(); List<TreeNode> res = new ArrayList<TreeNode>(); for (Library library : libraries) { @@ -376,7 +376,7 @@ * * @return the list< tree node> */ - private List<TreeNode> generateCodes(Set<Code> codes) { + private List<TreeNode> generateCodes(List<Code> codes) { List<TreeNode> res = new ArrayList<TreeNode>(); for (Code code : codes) { TreeNode node = new TreeNode(); @@ -398,7 +398,7 @@ * @return the list< tree node> */ @SuppressWarnings("unused") - private List<TreeNode> generateStructures(Set<Structure> structures) { + private List<TreeNode> generateStructures(List<Structure> structures) { List<TreeNode> res = new ArrayList<TreeNode>(); for (Structure structure : structures) { TreeNode node = new TreeNode(); @@ -418,7 +418,7 @@ * * @return the list< tree node> */ - private List<TreeNode> generateConstants(Set<Constant> constants) { + private List<TreeNode> generateConstants(List<Constant> constants) { List<TreeNode> res = new ArrayList<TreeNode>(); for (Constant constant : constants) { TreeNode node = new TreeNode(); Modified: trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDownload.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDownload.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDownload.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -246,7 +246,7 @@ * @return the list< tree node> */ private List<TreeNode> generateComponents(ExplorationApplication explorationApplication) { - Set<Component> components = explorationApplication.getComponents(); + List<Component> components = explorationApplication.getComponents(); List<TreeNode> res = new ArrayList<TreeNode>(); for (Component component : components) { @@ -292,7 +292,7 @@ * * @return the list< tree node> */ - private List<TreeNode> generateLibraries(Set<Library> libraries) { + private List<TreeNode> generateLibraries(List<Library> libraries) { List<TreeNode> res = new ArrayList<TreeNode>(); for (Library library : libraries) { TreeNode node = generateLibrary(library); Modified: trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Install.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Install.java 2008-02-18 17:04:10 UTC (rev 1076) +++ trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Install.java 2008-02-18 17:07:42 UTC (rev 1077) @@ -91,15 +91,15 @@ List<Attachment> attachmentsKeys = new ArrayList<Attachment>(); attachmentsKeys.addAll(ea.getMetaData().getAttachments()); - Set<Component> components = ea.getComponents(); + List<Component> components = ea.getComponents(); for (Component component : components) { attachmentsKeys.addAll(component.getMetaData().getAttachments()); - Set<Library> libraries = component.getLibraries(); + List<Library> libraries = component.getLibraries(); for (Library library : libraries) { attachmentsKeys.addAll(library.getMetaData().getAttachments()); } } - Set<ExplorationData> explorations = ea.getExplorations(); + List<ExplorationData> explorations = ea.getExplorations(); for (ExplorationData explorationData : explorations) { attachmentsKeys.addAll(explorationData.getMetaData().getAttachments()); }