Author: glandais Date: 2007-12-10 15:21:40 +0000 (Mon, 10 Dec 2007) New Revision: 62 Modified: trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/ElementGenerator.java trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/LuceneDatabaseTestCase.java Log: Tests database metadata Modified: trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/ElementGenerator.java =================================================================== --- trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/ElementGenerator.java 2007-12-10 15:21:14 UTC (rev 61) +++ trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/ElementGenerator.java 2007-12-10 15:21:40 UTC (rev 62) @@ -1,56 +1,58 @@ package fr.cemagref.simexplorer.is.storage.test; import java.util.Date; +import java.util.HashMap; import java.util.HashSet; +import java.util.Map; import java.util.Random; import java.util.Set; import java.util.UUID; -import fr.cemagref.simexplorer.is.storage.entities.Code; -import fr.cemagref.simexplorer.is.storage.entities.Component; -import fr.cemagref.simexplorer.is.storage.entities.Constant; -import fr.cemagref.simexplorer.is.storage.entities.ConstantValue; -import fr.cemagref.simexplorer.is.storage.entities.Descriptor; -import fr.cemagref.simexplorer.is.storage.entities.Entity; -import fr.cemagref.simexplorer.is.storage.entities.ExplorationApplication; -import fr.cemagref.simexplorer.is.storage.entities.ExplorationData; -import fr.cemagref.simexplorer.is.storage.entities.Library; -import fr.cemagref.simexplorer.is.storage.entities.LoggableElement; -import fr.cemagref.simexplorer.is.storage.entities.Result; -import fr.cemagref.simexplorer.is.storage.entities.Structure; -import fr.cemagref.simexplorer.is.storage.factories.EntityFactory; +import fr.cemagref.simexplorer.is.storage.entities.data.Code; +import fr.cemagref.simexplorer.is.storage.entities.data.Component; +import fr.cemagref.simexplorer.is.storage.entities.data.Constant; +import fr.cemagref.simexplorer.is.storage.entities.data.ConstantValue; +import fr.cemagref.simexplorer.is.storage.entities.data.DataEntity; +import fr.cemagref.simexplorer.is.storage.entities.data.ExplorationApplication; +import fr.cemagref.simexplorer.is.storage.entities.data.ExplorationData; +import fr.cemagref.simexplorer.is.storage.entities.data.Library; +import fr.cemagref.simexplorer.is.storage.entities.data.LoggableElement; +import fr.cemagref.simexplorer.is.storage.entities.data.Result; +import fr.cemagref.simexplorer.is.storage.entities.data.Structure; +import fr.cemagref.simexplorer.is.storage.entities.metadata.MetaDataEntity; +import fr.cemagref.simexplorer.is.storage.factories.DataEntityFactory; public class ElementGenerator { private Random r = new Random(); private void update(LoggableElement element) throws Exception { - element.setUuid(UUID.randomUUID().toString()); - element.setName(UUID.randomUUID().toString()); - element.setType(element.getClass().getSimpleName()); - element.setDescription("test"); - element.setVersion(Integer.toString(r.nextInt(100))); - element.setCreationDate(new Date(r.nextLong())); - element.setHash(UUID.randomUUID().toString()); + MetaDataEntity metaData = new MetaDataEntity(); + metaData.setUuid(UUID.randomUUID().toString()); + metaData.setName(UUID.randomUUID().toString()); + metaData.setType(element.getClass().getSimpleName()); + metaData.setDescription("test"); + metaData.setVersion(Integer.toString(r.nextInt(100))); + metaData.setCreationDate(new Date(r.nextLong())); + metaData.setHash(UUID.randomUUID().toString()); - Set<Descriptor> descriptors = generateArray(Descriptor.class); - for (Object object : descriptors) { - processDescriptor((Descriptor) object); + Map<String, String> descriptors = new HashMap<String, String>(); + int i = 5 + r.nextInt(10); + for (int j = 0; j < i; j++) { + descriptors.put(UUID.randomUUID().toString(), UUID.randomUUID() + .toString()); } - element.setDescriptors(descriptors); - } + metaData.setDescriptors(descriptors); - private void processDescriptor(Descriptor object) { - object.setName(UUID.randomUUID().toString()); - object.setValue(UUID.randomUUID().toString()); + element.setMetaData(metaData); } - private <T extends Entity> Set<T> generateArray(Class<T> clazz) + private <T extends DataEntity> Set<T> generateArray(Class<T> clazz) throws Exception { Set<T> elements = new HashSet<T>(); int i = 1 + r.nextInt(2); for (int j = 0; j < i; j++) { - T element = EntityFactory.getFactory(clazz).createInstance(); + T element = DataEntityFactory.getFactory(clazz).createInstance(); if (element instanceof LoggableElement) { update((LoggableElement) element); } Modified: trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/LuceneDatabaseTestCase.java =================================================================== --- trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/LuceneDatabaseTestCase.java 2007-12-10 15:21:14 UTC (rev 61) +++ trunk/simexplorer-si-storage/src/test/fr/cemagref/simexplorer/is/storage/test/LuceneDatabaseTestCase.java 2007-12-10 15:21:40 UTC (rev 62) @@ -1,28 +1,33 @@ package fr.cemagref.simexplorer.is.storage.test; +import java.io.Reader; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Random; import java.util.Set; import java.util.UUID; import junit.framework.TestCase; - -import fr.cemagref.simexplorer.is.storage.database.DatabaseConstants; import fr.cemagref.simexplorer.is.storage.database.lucene.LuceneDatabase; -import fr.cemagref.simexplorer.is.storage.entities.ExplorationData; -import fr.cemagref.simexplorer.is.storage.entities.LoggableElement; -import fr.cemagref.simexplorer.is.storage.entities.Version; +import fr.cemagref.simexplorer.is.storage.entities.metadata.MetaDataEntity; +import fr.cemagref.simexplorer.is.storage.entities.metadata.Version; public class LuceneDatabaseTestCase extends TestCase { private LuceneDatabase database; - private ElementGenerator elementGenerator; + // private ElementGenerator elementGenerator; + private Random r = new Random(); protected void setUp() throws Exception { super.setUp(); database = new LuceneDatabase(); database.open(); - elementGenerator = new ElementGenerator(); + // elementGenerator = new ElementGenerator(); } protected void tearDown() throws Exception { @@ -30,224 +35,130 @@ database.close(); } - public final void testPushFindElement() throws Exception { + private MetaDataEntity generateMetaDataEntity(String uuid, Version version, + MetaDataEntity parentVersion, MetaDataEntity parentData) { + MetaDataEntity me = generateMetaDataEntity(uuid, version, parentVersion); + me.setParentData(parentData); + return me; + } - /* - * database.pushElement(elementGenerator.generateRandomEA()); - * - * Map<String, String> properties = new HashMap<String, String>(); - * properties.put(DatabaseConstants.KEY_DESCRIPTION, "test"); Set<LoggableElement> - * elements = database .findElementsByProperties(properties); for - * (LoggableElement loggableElement : elements) { - * System.out.println(EntityFactory.getFactory( - * loggableElement.getClass()).getElementXML(loggableElement)); } - */ + private MetaDataEntity generateMetaDataEntity(String uuid, Version version, + MetaDataEntity parentVersion) { + MetaDataEntity me = generateMetaDataEntity(uuid, version); + me.setParentVersion(parentVersion); + return me; + } - String description1 = UUID.randomUUID().toString(); - String uuid1 = UUID.randomUUID().toString(); - ExplorationData explorationData1 = new ExplorationData(); - explorationData1.setUuid(uuid1); - explorationData1.setVersion("5.12"); - explorationData1.setDescription(description1); - database.insertElement(explorationData1); + private MetaDataEntity generateMetaDataEntity(String uuid, Version version) { + MetaDataEntity me = new MetaDataEntity(); - LoggableElement element = database.getElement(uuid1, new Version( - "5.12")); - assertNotNull(element); - assertEquals(description1, element.getDescription()); + me.setUuid(uuid); + me.setName(uuid); + me.setType("LuceneDatabaseTestCase"); + me.setDescription(uuid + " " + version.toString()); + me.setVersion(version.toString()); + me.setCreationDate(new Date()); + me.setHash(UUID.randomUUID().toString()); - String description2 = UUID.randomUUID().toString(); - ExplorationData explorationData2 = new ExplorationData(); - explorationData2.setUuid(uuid1); - explorationData2.setVersion("5.12"); - explorationData2.setDescription(description2); - database.insertElement(explorationData2); + Map<String, String> descriptors = new HashMap<String, String>(); + descriptors.put("overallId", uuid); + int i = 5 + r.nextInt(10); + for (int j = 0; j < i; j++) { + descriptors.put(UUID.randomUUID().toString(), UUID.randomUUID() + .toString()); + } + me.setDescriptors(descriptors); + me.setParentData(null); + me.setParentVersion(null); - assertEquals(description2, database.getElement(uuid1, - new Version("5.12")).getDescription()); + return me; + } - String description3 = UUID.randomUUID().toString(); - ExplorationData explorationData3 = new ExplorationData(); - explorationData3.setUuid(uuid1); - explorationData3.setVersion("5.13"); - explorationData3.setDescription(description3); - database.insertElement(explorationData3); - - assertEquals(description3, database.getElement(uuid1, - new Version("5.13")).getDescription()); + private MetaDataEntity generateMetaDataEntity() { + return generateMetaDataEntity(UUID.randomUUID().toString(), + new Version("1.0")); } - public final void testGetElementLatestVersion() throws Exception { - String description1 = UUID.randomUUID().toString(); - String uuid1 = UUID.randomUUID().toString(); - ExplorationData explorationData1 = new ExplorationData(); - explorationData1.setUuid(uuid1); - explorationData1.setVersion("5.12"); - explorationData1.setDescription(description1); - database.insertElement(explorationData1); + private MetaDataEntity[] generateVersionnedMetaDataEntity() { + String uuid = UUID.randomUUID().toString(); - String description2 = UUID.randomUUID().toString(); - ExplorationData explorationData2 = new ExplorationData(); - explorationData2.setUuid(uuid1); - explorationData2.setVersion("5.13"); - explorationData2.setDescription(description2); - database.insertElement(explorationData2); + MetaDataEntity[] mes = new MetaDataEntity[4]; + mes[0] = generateMetaDataEntity(uuid, new Version("1.0")); + mes[1] = generateMetaDataEntity(uuid, new Version("1.1"), mes[0]); + mes[2] = generateMetaDataEntity(uuid, new Version("1.2"), mes[1]); + mes[3] = generateMetaDataEntity(uuid, new Version("2.0"), mes[2]); - assertEquals(description2, database.getElementLatestVersion(uuid1) - .getDescription()); - - String description3 = UUID.randomUUID().toString(); - ExplorationData explorationData3 = new ExplorationData(); - explorationData3.setUuid(uuid1); - explorationData3.setVersion("6.0"); - explorationData3.setDescription(description3); - database.insertElement(explorationData3); - - assertEquals(description3, database.getElementLatestVersion(uuid1) - .getDescription()); + return mes; } - public final void testFindElementsById() throws Exception { - String description1 = UUID.randomUUID().toString(); - String uuid1 = UUID.randomUUID().toString(); - ExplorationData explorationData1 = new ExplorationData(); - explorationData1.setUuid(uuid1); - explorationData1.setVersion("5.12"); - explorationData1.setDescription(description1); - database.insertElement(explorationData1); - - String description2 = UUID.randomUUID().toString(); - ExplorationData explorationData2 = new ExplorationData(); - explorationData2.setUuid(uuid1); - explorationData2.setVersion("5.13"); - explorationData2.setDescription(description2); - database.insertElement(explorationData2); - - String description3 = UUID.randomUUID().toString(); - ExplorationData explorationData3 = new ExplorationData(); - explorationData3.setUuid(uuid1); - explorationData3.setVersion("6.0"); - explorationData3.setDescription(description3); - database.insertElement(explorationData3); - - Set<LoggableElement> elements = database.findElementsById(uuid1); - assertEquals(3, elements.size()); - + public void testInsertElementGetElement() throws Exception { + MetaDataEntity me = generateMetaDataEntity(); + database.insertElement(me); + MetaDataEntity me2 = database.getElement(me.getUuid(), me.getVersion()); + assertEquals(me.getDescription(), me2.getDescription()); } - public final void testFindElementsByPropertiesMapOfStringString() - throws Exception { + public void testIndexAddFindElementsByContentSearch() throws Exception { + MetaDataEntity me = generateMetaDataEntity(); + database.insertElement(me); - String description1 = UUID.randomUUID().toString(); - String uuid1 = UUID.randomUUID().toString(); - ExplorationData explorationData1 = new ExplorationData(); - explorationData1.setUuid(uuid1); - explorationData1.setVersion("5.12"); - explorationData1.setDescription(description1); - database.insertElement(explorationData1); + String keyphrase = Long.toHexString(r.nextLong()); - ExplorationData explorationData2 = new ExplorationData(); - explorationData2.setUuid(uuid1); - explorationData2.setVersion("5.13"); - explorationData2.setDescription(description1); - database.insertElement(explorationData2); + StringReader reader = new StringReader("ogijeriog ergijergioj " + + keyphrase + " egiojergij ergijerogij"); - String description3 = UUID.randomUUID().toString(); - ExplorationData explorationData3 = new ExplorationData(); - explorationData3.setUuid(uuid1); - explorationData3.setVersion("6.0"); - explorationData3.setDescription(description3); - database.insertElement(explorationData3); + List<Reader> readers = new ArrayList<Reader>(); + readers.add(reader); + database.indexAdd(me, readers); - // TODO add some other classes in db + Set<MetaDataEntity> mes = database + .findElementsByContentSearch(keyphrase); - Map<String, String> properties = new HashMap<String, String>(); - properties.put(DatabaseConstants.KEY_UUID, uuid1); - properties.put(DatabaseConstants.KEY_DESCRIPTION, description1); + assertEquals(1, mes.size()); + } - Set<LoggableElement> elements = database - .findElementsByProperties(properties); - assertEquals(2, elements.size()); + public void testGetVersions() throws Exception { + MetaDataEntity[] mes = generateVersionnedMetaDataEntity(); + for (int i = 0; i < mes.length; i++) { + database.insertElement(mes[i]); + } + List<Version> versions = database.getVersions(mes[0].getUuid()); + assertEquals(mes.length, versions.size()); + Collections.sort(versions); + assertEquals("1.0", versions.get(0).toString()); + assertEquals("1.1", versions.get(1).toString()); + assertEquals("1.2", versions.get(2).toString()); + assertEquals("2.0", versions.get(3).toString()); + } + public void testFindElementsById() throws Exception { + MetaDataEntity[] mes = generateVersionnedMetaDataEntity(); + for (int i = 0; i < mes.length; i++) { + database.insertElement(mes[i]); + } + Set<MetaDataEntity> elements = database.findElementsById(mes[0] + .getUuid()); + assertEquals(elements.size(), mes.length); } - public final void testFindElementsByPropertiesMapOfStringStringClass() - throws Exception { + public void testFindElementsByProperties() { + fail("Not yet implemented"); + } - String description1 = UUID.randomUUID().toString(); - String uuid1 = UUID.randomUUID().toString(); - ExplorationData explorationData1 = new ExplorationData(); - explorationData1.setUuid(uuid1); - explorationData1.setVersion("5.12"); - explorationData1.setDescription(description1); - database.insertElement(explorationData1); + public void testDeleteElements() { + fail("Not yet implemented"); + } - ExplorationData explorationData2 = new ExplorationData(); - explorationData2.setUuid(uuid1); - explorationData2.setVersion("5.13"); - explorationData2.setDescription(description1); - database.insertElement(explorationData2); - - String description3 = UUID.randomUUID().toString(); - ExplorationData explorationData3 = new ExplorationData(); - explorationData3.setUuid(uuid1); - explorationData3.setVersion("6.0"); - explorationData3.setDescription(description3); - database.insertElement(explorationData3); - - Map<String, String> properties = new HashMap<String, String>(); - properties.put(DatabaseConstants.KEY_UUID, uuid1); - properties.put(DatabaseConstants.KEY_DESCRIPTION, description1); - - Set<LoggableElement> elements = database.findElementsByProperties( - properties, ExplorationData.class); - assertEquals(2, elements.size()); - + public void testDeleteElementStringVersion() { + fail("Not yet implemented"); } - public final void testDeleteElement() throws Exception { - - String description1 = UUID.randomUUID().toString(); - String uuid1 = UUID.randomUUID().toString(); - ExplorationData explorationData1 = new ExplorationData(); - explorationData1.setUuid(uuid1); - explorationData1.setVersion("5.12"); - explorationData1.setDescription(description1); - database.insertElement(explorationData1); - - database.deleteElement(explorationData1); - assertNull(database.getElement(uuid1, new Version("5.12"))); - + public void testGetElementLatestVersion() { + fail("Not yet implemented"); } - public final void testDeleteElements() throws Exception { - - String description1 = UUID.randomUUID().toString(); - String uuid1 = UUID.randomUUID().toString(); - ExplorationData explorationData1 = new ExplorationData(); - explorationData1.setUuid(uuid1); - explorationData1.setVersion("5.12"); - explorationData1.setDescription(description1); - database.insertElement(explorationData1); - - String description2 = UUID.randomUUID().toString(); - ExplorationData explorationData2 = new ExplorationData(); - explorationData2.setUuid(uuid1); - explorationData2.setVersion("5.13"); - explorationData2.setDescription(description2); - database.insertElement(explorationData2); - - String description3 = UUID.randomUUID().toString(); - ExplorationData explorationData3 = new ExplorationData(); - explorationData3.setUuid(uuid1); - explorationData3.setVersion("6.0"); - explorationData3.setDescription(description3); - database.insertElement(explorationData3); - - database.deleteElements(uuid1); - - assertEquals(0, database.findElementsById(uuid1).size()); - + public void testDeleteElementMetaDataEntity() { + fail("Not yet implemented"); } }