From 9d2ee19f4eca1392a5252b91951fb76a9bd9bb1b Mon Sep 17 00:00:00 2001 From: "a.babadshanjan" Date: Thu, 9 Oct 2008 14:16:36 +0000 Subject: [PATCH] Fixed duplication of defined terms during unmarshalling. --- .gitattributes | 3 - .../eu/etaxonomy/cdm/io/jaxb/CdmExporter.java | 23 +- .../cdm/jaxb/CdmDocumentBuilderTest.java | 77 ----- .../cdm/jaxb/CdmSchemaGeneratorTest.java | 50 ---- .../eu/etaxonomy/cdm/jaxb/DataSetTest.java | 274 ------------------ .../test/integration/TestCdmDbComparator.java | 2 +- 6 files changed, 13 insertions(+), 416 deletions(-) delete mode 100644 cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/CdmDocumentBuilderTest.java delete mode 100644 cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/CdmSchemaGeneratorTest.java delete mode 100644 cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/DataSetTest.java diff --git a/.gitattributes b/.gitattributes index 3ecc4b8057..ddfae9cb9a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -159,9 +159,6 @@ cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/unitsPortal/UnitsGatheringArea.java cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/unitsPortal/UnitsGatheringEvent.java -text cdmlib-io/src/main/resources/log4j.properties -text cdmlib-io/src/site/site.xml -text -cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/CdmDocumentBuilderTest.java -text -cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/CdmSchemaGeneratorTest.java -text -cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/DataSetTest.java -text cdmlib-io/src/test/java/eu/etaxonomy/cdm/test/integration/TestCdmDbComparator.java -text cdmlib-model/LICENSE.TXT -text cdmlib-model/README.TXT -text diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/CdmExporter.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/CdmExporter.java index 45d2d6beeb..3f17871867 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/CdmExporter.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/CdmExporter.java @@ -225,7 +225,8 @@ public class CdmExporter { List homotypicalGroups = new ArrayList(); CdmApplicationController appCtr = - expImpConfig.getSourceAppController(expImpConfig.getCdmSource(), true); + //expImpConfig.getSourceAppController(expImpConfig.getCdmSource(), true); + expImpConfig.getDestinationAppController(expImpConfig.getCdmDestination(), true); TransactionStatus txStatus = appCtr.startTransaction(); // If data of a certain type, such as terms, are not saved here explicitly, @@ -233,17 +234,17 @@ public class CdmExporter { // For example, if taxa are saved all other data referenced by those taxa, such as synonyms, // are automatically saved as well. - if (expImpConfig.isDoTerms() == true) { - if ((terms = dataSet.getTerms()).size() > 0) { - logger.info("Terms: " + terms.size()); - appCtr.getTermService().saveTermsAll(terms); - } - } - -// if ((terms = dataSet.getTerms()) != null) { -// logger.info("Terms: " + terms.size()); -// appCtr.getTermService().saveTermsAll(terms); +// if (expImpConfig.isDoTerms() == true) { +// if ((terms = dataSet.getTerms()).size() > 0) { +// logger.info("Terms: " + terms.size()); +// appCtr.getTermService().saveTermsAll(terms); +// } // } + + if ((terms = dataSet.getTerms()) != null) { + logger.info("Terms: " + terms.size()); + appCtr.getTermService().saveTermsAll(terms); + } if (expImpConfig.isDoTermVocabularies() == true) { if ((termVocabularies = dataSet.getTermVocabularies()).size() > 0) { diff --git a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/CdmDocumentBuilderTest.java b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/CdmDocumentBuilderTest.java deleted file mode 100644 index 11b6333abf..0000000000 --- a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/CdmDocumentBuilderTest.java +++ /dev/null @@ -1,77 +0,0 @@ -package eu.etaxonomy.cdm.io.jaxb; - -import java.io.File; -import java.io.FileWriter; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.nio.charset.Charset; - -import junit.framework.Assert; - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; - -import eu.etaxonomy.cdm.io.jaxb.CdmDocumentBuilder; -import eu.etaxonomy.cdm.io.jaxb.DataSet; - -public class CdmDocumentBuilderTest { - - private DataSet dataSet; - private DataSetTest dataSetTest; - private CdmDocumentBuilder cdmDocumentBuilder; - private String userHome = System.getProperty("user.home"); - private String marshOut = new String( userHome + File.separator + "cdm_marshalled.xml"); - private String unmarshOut = new String( userHome + File.separator + "cdm_roundtrip.xml"); - - @Before - public void onSetUp() throws Exception { - cdmDocumentBuilder = new CdmDocumentBuilder(); - dataSetTest = new DataSetTest(); - dataSetTest.onSetUp(); - dataSet = dataSetTest.buildDataSet(false); - } - -/* ******************** TESTS ***********************************************************/ - -// @Ignore //for uuid - @Test - public void testCdmDocumentBuilderInit() { - Assert.assertNotNull(cdmDocumentBuilder); - } - - @Ignore - @Test - public void marshalDataSet2Stdout() throws Exception { - Writer writer = new OutputStreamWriter(System.out, Charset.forName("UTF-8")); - cdmDocumentBuilder.marshal(dataSet, writer); - } - -// can only be used with JAXB 2.1 -// @Test -// public void marshalDataSet2File() throws Exception { -// cdmDocumentBuilder.writeFile(dataSet, new File(filename)); -// } - - -// @Test -// public void marshalDataSet2FileWriter() throws Exception { -// cdmDocumentBuilder.write(dataSet, new FileWriter(filename)); -// } - -// @Ignore //for uuid - @Test - public void testMarshal() throws Exception { - cdmDocumentBuilder.marshal(dataSet, new FileWriter(marshOut)); - } - - -// @Ignore //for debugging with ValidationEventHandler - @Test - public void testUnmarshal() throws Exception { - DataSet newDataSet = new DataSet(); - newDataSet = cdmDocumentBuilder.unmarshal(newDataSet, new File(marshOut)); - cdmDocumentBuilder.marshal(newDataSet, new FileWriter(unmarshOut)); - } - -} diff --git a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/CdmSchemaGeneratorTest.java b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/CdmSchemaGeneratorTest.java deleted file mode 100644 index 81433b4929..0000000000 --- a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/CdmSchemaGeneratorTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package eu.etaxonomy.cdm.io.jaxb; - -import java.io.IOException; - -import javax.xml.bind.JAXBException; - -import junit.framework.Assert; - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.xml.sax.SAXException; - -import eu.etaxonomy.cdm.io.jaxb.CdmSchemaGenerator; - -public class CdmSchemaGeneratorTest { - - private CdmSchemaGenerator cdmSchemaGenerator; - - @Before - public void onSetUp() throws Exception { - cdmSchemaGenerator = new CdmSchemaGenerator(); - } - -/* ******************** TESTS ***********************************************************/ - - @Ignore //for uuid - @Test - public void testCdmSchemaGeneratorInit() { - Assert.assertNotNull(cdmSchemaGenerator); - } - - @Ignore //for uuid - @Test - // buffers the schema files - public void testCreateOutput() throws JAXBException, IOException, SAXException { - - cdmSchemaGenerator.createOutput("http://etaxonomy.eu/cdm/model/1.0", "mySchema.xsd"); - } - - @Ignore - // Gives an IllegalArgumentException: argument contains null. - // Problem is in schema7.xsd. - @Test - // writes the schema files - public void testWriteSchema() throws JAXBException, IOException, SAXException { - - cdmSchemaGenerator.writeSchema(); - } -} diff --git a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/DataSetTest.java b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/DataSetTest.java deleted file mode 100644 index 3cf0b7c9e6..0000000000 --- a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/jaxb/DataSetTest.java +++ /dev/null @@ -1,274 +0,0 @@ -package eu.etaxonomy.cdm.io.jaxb; - -import java.util.ArrayList; -import java.util.GregorianCalendar; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import junit.framework.Assert; - -import org.junit.Before; -import org.junit.Test; - -import eu.etaxonomy.cdm.io.jaxb.DataSet; -import eu.etaxonomy.cdm.model.agent.Agent; -import eu.etaxonomy.cdm.model.agent.Institution; -import eu.etaxonomy.cdm.model.agent.InstitutionalMembership; -import eu.etaxonomy.cdm.model.agent.Person; -import eu.etaxonomy.cdm.model.common.AnnotatableEntity; -import eu.etaxonomy.cdm.model.common.DefinedTermBase; -import eu.etaxonomy.cdm.model.common.Keyword; -import eu.etaxonomy.cdm.model.common.Language; -import eu.etaxonomy.cdm.model.common.RelationshipBase; -import eu.etaxonomy.cdm.model.common.Representation; -import eu.etaxonomy.cdm.model.common.TermBase; -import eu.etaxonomy.cdm.model.common.TermVocabulary; -import eu.etaxonomy.cdm.model.common.TimePeriod; -import eu.etaxonomy.cdm.model.common.VersionableEntity; -import eu.etaxonomy.cdm.model.name.BotanicalName; -import eu.etaxonomy.cdm.model.name.Rank; -import eu.etaxonomy.cdm.model.name.TaxonNameBase; -import eu.etaxonomy.cdm.model.reference.Book; -import eu.etaxonomy.cdm.model.reference.Database; -import eu.etaxonomy.cdm.model.reference.ReferenceBase; -import eu.etaxonomy.cdm.model.reference.StrictReferenceBase; -import eu.etaxonomy.cdm.model.taxon.Synonym; -import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType; -import eu.etaxonomy.cdm.model.taxon.Taxon; -import eu.etaxonomy.cdm.model.taxon.TaxonRelationship; - -public class DataSetTest { - - private DataSet dataSet; - private List agents; - private List agentData; - //private List terms; - private List terms; - private List> termVocabularies; - private List references; - private List taxonomicNames; - private List taxa; - private List synonyms; - private List homotypicalGroups; - private Set taxonRelationships; - private Set relationshipBases; - - @Before - public void onSetUp() throws Exception { - dataSet = new DataSet(); - } - - @Test - public void testCdmDocumentBuilderInit() { - Assert.assertNotNull(dataSet); - } - - /** - * This method constructs a small sample taxonomic tree to test JAXB marshaling. - * The sample tree contains four taxa. The root taxon has two children taxa, and - * there is one "free" taxon without a parent and children. - */ - public void buildData(boolean persistentContext) { - - agents = new ArrayList(); - agentData = new ArrayList(); - //terms = new ArrayList(); - terms = new ArrayList(); - termVocabularies = new ArrayList>(); - references = new ArrayList(); - taxonomicNames = new ArrayList(); - taxa = new ArrayList(); - synonyms = new ArrayList(); - taxonRelationships = new HashSet(); - - StrictReferenceBase citRef, sec; - BotanicalName name1, name2, nameRoot, nameFree, synName11, synName12, synName2, synNameFree; - Taxon child1, child2, rootT, freeT; - Synonym syn11, syn12, syn2, synFree; - Rank rankSpecies, rankSubspecies, rankGenus; - - // agents - // - persons, institutions - - Person linne = new Person("Carl", "Linné", "L."); - GregorianCalendar birth = new GregorianCalendar(1707, 4, 23); - GregorianCalendar death = new GregorianCalendar(1778, 0, 10); - TimePeriod period = new TimePeriod(birth, death); - linne.setLifespan(period); - - Language lang = Language.ENGLISH(); - TermVocabulary termvoc = new TermVocabulary(); - lang.setVocabulary(termvoc); - Keyword keyword = Keyword.NewInstance("plantarum", lang.getLabel(), ""); - Representation rep = keyword.getRepresentation(lang); - rep.setLanguage(lang); - - linne.addKeyword(keyword); - - Institution institute = Institution.NewInstance(); - - agents.add(linne); - agents.add(institute); - - // agent data - // - contacts, addresses, memberships - - //Contact contact1 = new Contact(); - //contact1.setEmail("someone@somewhere.org"); - InstitutionalMembership membership - = new InstitutionalMembership(institute, linne, period, "Biodiversity", "Head"); - //agentData.add(contact1); - - agentData.add(membership); - - // terms - // - ranks, keywords - - if (persistentContext == true) { - - rankSpecies = Rank.SPECIES(); - rankSubspecies = Rank.SUBSPECIES(); - rankGenus = Rank.GENUS(); - - } else { - rankSpecies = new Rank (); - rankSubspecies = new Rank(); - rankGenus = new Rank(); - } - -// Do something like this? If yes, FIXME: Stack overflow. -// try { -// rankSpecies = Rank.getRankByName("Species"); -// rankSubspecies = Rank.getRankByName("Subspecies"); -// rankGenus = Rank.getRankByName("Genus"); -// -// } catch (UnknownCdmTypeException ex) { -// ex.printStackTrace(); -// } - - terms.add(rankSpecies); - terms.add(rankSubspecies); - terms.add(rankGenus); - terms.add(lang); - - terms.add(keyword); - - termVocabularies.add(termvoc); - - // taxonomic names - - nameRoot = BotanicalName.NewInstance(rankGenus,"Calendula",null,null,null,linne,null,"p.100", null); - - name1 = BotanicalName.NewInstance(rankSpecies,"Calendula",null,"arvensis",null,linne,null,"p.1", null); - synName11 = BotanicalName.NewInstance(rankSpecies,"Caltha",null,"arvensis",null,linne,null,"p.11", null); - synName12 = BotanicalName.NewInstance(rankSpecies,"Calendula",null,"sancta",null,linne,null,"p.12", null); - - name2 = BotanicalName.NewInstance(rankSpecies,"Calendula",null,"lanzae",null,linne,null,"p.2", null); - synName2 = BotanicalName.NewInstance(rankSpecies,"Calendula",null,"echinata",null,linne,null,"p.2", null); - - nameFree = BotanicalName.NewInstance(rankSpecies,"Cichorium",null,"intybus",null,linne,null,"p.200", null); - synNameFree = BotanicalName.NewInstance(rankSpecies,"Cichorium",null,"balearicum",null,linne,null,"p.2", null); - - taxonomicNames.add(nameRoot); - taxonomicNames.add(name1); - taxonomicNames.add(synName11); - taxonomicNames.add(synName12); - taxonomicNames.add(name2); - taxonomicNames.add(synName2); - taxonomicNames.add(nameFree); - taxonomicNames.add(synNameFree); - - // references - - sec = Book.NewInstance(); - sec.setAuthorTeam(linne); - sec.setTitleCache("Plant Speciation"); - references.add(sec); - - citRef = Database.NewInstance(); - citRef.setAuthorTeam(linne); - citRef.setTitleCache("BioCASE"); - references.add(citRef); - - // taxa - - rootT = Taxon.NewInstance(nameRoot, sec); - freeT = Taxon.NewInstance(nameFree, sec); - child1 = Taxon.NewInstance(name1, sec); - child2 = Taxon.NewInstance(name2, sec); - - // synonyms - - synFree = Synonym.NewInstance(synNameFree, sec); - syn11 = Synonym.NewInstance(synName11, sec); - syn12 = Synonym.NewInstance(synName12, sec); - syn2 = Synonym.NewInstance(synName2, sec); - - child1.addSynonym(syn11, SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF()); - child1.addSynonym(syn12, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); - child2.addSynonym(syn2, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); - freeT.addSynonym(synFree, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); - - synonyms.add(synFree); - synonyms.add(syn11); - synonyms.add(syn12); - synonyms.add(syn2); - - // relationships - - - // taxonomic children - - rootT.addTaxonomicChild(child1, sec, "p.998"); - rootT.addTaxonomicChild(child2, sec, "p.987"); - - taxa.add(rootT); - taxa.add(freeT); - taxa.add(child1); - taxa.add(child2); - -// List taxa; -// Object obj = (Object)taxa; -// Collection taxonBases = (Collection)obj; - -// Set taxonRelationships; - taxonRelationships = rootT.getTaxonRelations(); - Object obj = taxonRelationships; - relationshipBases = (Set)obj; - - } - - public DataSet buildDataSet(boolean persistentContext) { - - buildData(persistentContext); - - dataSet.setAgents(agents); - dataSet.setAgentData(agentData); - dataSet.setTerms(terms); - dataSet.setTermVocabularies(termVocabularies); - dataSet.setReferences(references); - dataSet.setTaxonomicNames(taxonomicNames); - dataSet.setTaxa(taxa); - dataSet.setSynonyms(synonyms); - dataSet.setRelationships(relationshipBases); - - return dataSet; - } - - public DataSet buildDataSet(DataSet dataSet, boolean persistentContext) { - - buildData(persistentContext); - - dataSet.setAgents(agents); - dataSet.setAgentData(agentData); - dataSet.setTerms(terms); - dataSet.setTermVocabularies(termVocabularies); - dataSet.setReferences(references); - dataSet.setTaxonomicNames(taxonomicNames); - dataSet.setTaxa(taxa); - dataSet.setSynonyms(synonyms); - - return dataSet; - } -} diff --git a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/test/integration/TestCdmDbComparator.java b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/test/integration/TestCdmDbComparator.java index 0c9f51a32f..1ffb8aa59f 100644 --- a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/test/integration/TestCdmDbComparator.java +++ b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/test/integration/TestCdmDbComparator.java @@ -72,7 +72,7 @@ import eu.etaxonomy.cdm.persistence.dao.media.IMediaDao; */ public class TestCdmDbComparator { - private static final String sourceDbOne = "cdm_test_anahit"; + private static final String sourceDbOne = "cdm_test_jaxb"; private static final String sourceDbTwo = "cdm_test_jaxb2"; private static final ICdmDataSource sourceOne = TestCdmDbComparator.CDM_DB_(sourceDbOne); -- 2.34.1