minor
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / jaxb / JaxbExport.java
index c62335e97158ae0b9a13b10ef281718a981e5c31..b6c87d605bada082e068afa5db6f588309d0dd17 100644 (file)
@@ -12,30 +12,29 @@ package eu.etaxonomy.cdm.io.jaxb;
 import java.io.FileOutputStream;\r
 import java.io.OutputStreamWriter;\r
 import java.io.PrintWriter;\r
-import java.util.HashSet;\r
+import java.util.ArrayList;\r
 import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.springframework.stereotype.Component;\r
 import org.springframework.transaction.TransactionStatus;\r
 \r
-import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
-import eu.etaxonomy.cdm.io.common.ICdmIO;\r
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
+import eu.etaxonomy.cdm.io.common.CdmExportBase;\r
+import eu.etaxonomy.cdm.io.common.ICdmExport;\r
 import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
-import eu.etaxonomy.cdm.io.common.MapWrapper;\r
 import eu.etaxonomy.cdm.model.agent.AgentBase;\r
-import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
-import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
+import eu.etaxonomy.cdm.model.common.User;\r
+import eu.etaxonomy.cdm.model.description.FeatureNode;\r
+import eu.etaxonomy.cdm.model.description.FeatureTree;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.model.taxon.Synonym;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
 \r
 /**\r
  * @author a.babadshanjan\r
@@ -43,7 +42,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
  * @version 1.0\r
  */\r
 @Component\r
-public class JaxbExport extends CdmIoBase<JaxbExportState> implements ICdmIO<JaxbExportState> {\r
+public class JaxbExport extends CdmExportBase<JaxbExportConfigurator, JaxbExportState> implements ICdmExport<JaxbExportConfigurator, JaxbExportState> {\r
 \r
        private static final Logger logger = Logger.getLogger(JaxbExport.class);\r
        private CdmDocumentBuilder cdmDocumentBuilder = null;\r
@@ -71,10 +70,10 @@ public class JaxbExport extends CdmIoBase<JaxbExportState> implements ICdmIO<Jax
        protected boolean doInvoke(JaxbExportState state) {\r
                \r
                JaxbExportConfigurator jaxbExpConfig = (JaxbExportConfigurator)state.getConfig();\r
-               String dbname = jaxbExpConfig.getSource().getName();\r
+//             String dbname = jaxbExpConfig.getSource().getName();\r
        String fileName = jaxbExpConfig.getDestination();\r
-               logger.info("Serializing DB " + dbname + " to file " + fileName);\r
-               logger.debug("DbSchemaValidation = " + jaxbExpConfig.getDbSchemaValidation());\r
+//             logger.info("Serializing DB " + dbname + " to file " + fileName);\r
+//             logger.debug("DbSchemaValidation = " + jaxbExpConfig.getDbSchemaValidation());\r
 \r
                TransactionStatus txStatus = startTransaction(true);\r
                DataSet dataSet = new DataSet();\r
@@ -96,8 +95,15 @@ public class JaxbExport extends CdmIoBase<JaxbExportState> implements ICdmIO<Jax
                try {\r
                        cdmDocumentBuilder = new CdmDocumentBuilder();\r
                        PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(fileName), "UTF8"), true);\r
+                       \r
+                       /*SAXResult result = new SAXResult();\r
+                       ContentHandler handler = new DefaultHandler();\r
+                       \r
+                       result.setHandler(handler);*/\r
+                       \r
+                       //cdmDocumentBuilder.marshal(dataSet, result);\r
                        cdmDocumentBuilder.marshal(dataSet, writer);\r
-\r
+                       \r
                        // TODO: Split into one file per data set member to see whether performance improves?\r
 \r
                        logger.info("XML file written");\r
@@ -125,67 +131,89 @@ public class JaxbExport extends CdmIoBase<JaxbExportState> implements ICdmIO<Jax
                int referenceBaseRows = numberOfRows;\r
                int taxonNameBaseRows = numberOfRows;\r
                int taxonBaseRows = numberOfRows;\r
+               int taxonNodeRows = numberOfRows;\r
                int relationshipRows = numberOfRows;\r
                int occurrencesRows = numberOfRows;\r
                int mediaRows = numberOfRows;\r
                int featureDataRows = numberOfRows;\r
+               int taxonomicTreeDataRows = numberOfRows;\r
                int languageDataRows = numberOfRows;\r
                int termVocabularyRows = numberOfRows;\r
                int homotypicalGroupRows = numberOfRows;\r
+               int UserRows= numberOfRows;\r
 \r
+               if (jaxbExpConfig.isDoUsers() == true) {\r
+                       \r
+                       if (UserRows == 0) { UserRows = MAX_ROWS; }\r
+                       logger.info("# User");\r
+                       List<User> users = getUserService().list(null, UserRows, 0, null, null);\r
+               \r
+                       \r
+                       for (User user: users){\r
+                               dataSet.addUser( (User)HibernateProxyHelper.deproxy(user));\r
+                       }\r
+                       \r
+               }\r
                if (jaxbExpConfig.isDoTermVocabularies() == true) {\r
                        if (termVocabularyRows == 0) { termVocabularyRows = MAX_ROWS; }\r
                        logger.info("# TermVocabulary");\r
-                       dataSet.setTermVocabularies(getTermService().getAllTermVocabularies(MAX_ROWS, 0));;\r
+                       dataSet.setTermVocabularies((List)getVocabularyService().list(null,termVocabularyRows, 0, null, null));\r
                }\r
+               \r
+               \r
 \r
 //             if (jaxbExpConfig.isDoLanguageData() == true) {\r
 //                     if (languageDataRows == 0) { languageDataRows = MAX_ROWS; }\r
 //                     logger.info("# Representation, Language String");\r
 //                     dataSet.setLanguageData(getTermService().getAllRepresentations(MAX_ROWS, 0));\r
-//                     dataSet.addLanguageData(getTermService().getAllLanguageStrings(MAX_ROWS, 0));\r
+               //TODO!!!       \r
+               dataSet.setLanguageStrings(getTermService().getAllLanguageStrings(MAX_ROWS, 0));\r
 //             }\r
 \r
                if (jaxbExpConfig.isDoTerms() == true) {\r
                        if (definedTermBaseRows == 0) { definedTermBaseRows = getTermService().count(DefinedTermBase.class); }\r
                        logger.info("# DefinedTermBase: " + definedTermBaseRows);\r
-                       dataSet.setTerms(getTermService().getAllDefinedTerms(definedTermBaseRows, 0));\r
+                       dataSet.setTerms(getTermService().list(null,definedTermBaseRows, 0,null,null));\r
                }\r
-\r
+               \r
                if (jaxbExpConfig.isDoAuthors() == true) {\r
                        if (agentRows == 0) { agentRows = getAgentService().count(AgentBase.class); }\r
                        logger.info("# Agents: " + agentRows);\r
                        //logger.info("    # Team: " + appCtr.getAgentService().count(Team.class));\r
-                       dataSet.setAgents(getAgentService().getAllAgents(agentRows, 0));\r
+                       dataSet.setAgents(getAgentService().list(null,agentRows, 0,null,null));\r
                }\r
+               \r
+               \r
 \r
                if (jaxbExpConfig.getDoReferences() != IImportConfigurator.DO_REFERENCES.NONE) {\r
                        if (referenceBaseRows == 0) { referenceBaseRows = getReferenceService().count(ReferenceBase.class); }\r
                        logger.info("# ReferenceBase: " + referenceBaseRows);\r
-                       dataSet.setReferences(getReferenceService().getAllReferences(referenceBaseRows, 0));\r
+                       dataSet.setReferences(getReferenceService().list(null,referenceBaseRows, 0,null,null));\r
+               }\r
+               \r
+               if (jaxbExpConfig.isDoHomotypicalGroups() == true) {\r
+                       if (homotypicalGroupRows == 0) { homotypicalGroupRows = MAX_ROWS; }\r
+                       logger.info("# Homotypical Groups");\r
+                       dataSet.setHomotypicalGroups(getNameService().getAllHomotypicalGroups(homotypicalGroupRows, 0));\r
                }\r
 \r
                if (jaxbExpConfig.isDoTaxonNames() == true) {\r
                        if (taxonNameBaseRows == 0) { taxonNameBaseRows = getNameService().count(TaxonNameBase.class); }\r
                        logger.info("# TaxonNameBase: " + taxonNameBaseRows);\r
                        //logger.info("    # Taxon: " + getNameService().count(BotanicalName.class));\r
-                       dataSet.setTaxonomicNames(getNameService().getAllNames(taxonNameBaseRows, 0));\r
+                       dataSet.setTaxonomicNames(getNameService().list(null,taxonNameBaseRows, 0,null,null));\r
                }\r
 \r
-               if (jaxbExpConfig.isDoHomotypicalGroups() == true) {\r
-                       if (homotypicalGroupRows == 0) { homotypicalGroupRows = MAX_ROWS; }\r
-                       logger.info("# Homotypical Groups");\r
-                       dataSet.setHomotypicalGroups(getNameService().getAllHomotypicalGroups(homotypicalGroupRows, 0));\r
-               }\r
+               \r
 \r
                if (jaxbExpConfig.isDoTaxa() == true) {\r
                        if (taxonBaseRows == 0) { taxonBaseRows = getTaxonService().count(TaxonBase.class); }\r
                        logger.info("# TaxonBase: " + taxonBaseRows);\r
 //                     dataSet.setTaxa(new ArrayList<Taxon>());\r
 //                     dataSet.setSynonyms(new ArrayList<Synonym>());\r
-                       List<TaxonBase> tb = getTaxonService().getAllTaxonBases(taxonBaseRows, 0);\r
+                       List<TaxonBase> tb = getTaxonService().list(null,taxonBaseRows, 0,null,null);\r
                        for (TaxonBase taxonBase : tb) {\r
-                               dataSet.addTaxonBase(taxonBase);\r
+                               dataSet.addTaxonBase((TaxonBase)HibernateProxyHelper.deproxy(taxonBase));\r
                        }\r
                }\r
 \r
@@ -204,22 +232,29 @@ public class JaxbExport extends CdmIoBase<JaxbExportState> implements ICdmIO<Jax
 //                     Set<RelationshipBase> relationSet = new HashSet<RelationshipBase>(relationList);\r
 //                     dataSet.setRelationships(relationSet);\r
 //             }\r
-\r
+               if (jaxbExpConfig.isDoOccurrence() == true) {\r
+                       if (occurrencesRows == 0) { occurrencesRows = getOccurrenceService().count(SpecimenOrObservationBase.class); }\r
+                       logger.info("# SpecimenOrObservationBase: " + occurrencesRows);\r
+                       List<SpecimenOrObservationBase> occurrenceList = getOccurrenceService().list(null,occurrencesRows, 0,null,null);\r
+                       /*List<SpecimenOrObservationBase> noProxyList = new ArrayList<SpecimenOrObservationBase>();\r
+                       for (SpecimenOrObservationBase specimen : occurrenceList){\r
+                               specimen = (SpecimenOrObservationBase)HibernateProxyHelper.deproxy(specimen);\r
+                               noProxyList.add(specimen);\r
+                       }*/\r
+                       dataSet.setOccurrences(occurrenceList);\r
+               }\r
+               \r
                if (jaxbExpConfig.isDoTypeDesignations() == true) {\r
                        logger.info("# TypeDesignations");\r
                        dataSet.addTypeDesignations(getNameService().getAllTypeDesignations(MAX_ROWS, 0));\r
                }\r
 \r
-               if (jaxbExpConfig.isDoOccurrence() == true) {\r
-                       if (occurrencesRows == 0) { occurrencesRows = getOccurrenceService().count(SpecimenOrObservationBase.class); }\r
-                       logger.info("# SpecimenOrObservationBase: " + occurrencesRows);\r
-                       dataSet.setOccurrences(getOccurrenceService().getAllSpecimenOrObservationBases(occurrencesRows, 0));\r
-               }\r
+               \r
 \r
                if (jaxbExpConfig.isDoMedia() == true) {\r
                        if (mediaRows == 0) { mediaRows = MAX_ROWS; }\r
                        logger.info("# Media");\r
-                       dataSet.setMedia(getMediaService().getAllMedia(mediaRows, 0));\r
+                       dataSet.setMedia(getMediaService().list(null,mediaRows, 0,null,null));\r
 //                     dataSet.addMedia(getMediaService().getAllMediaRepresentations(mediaRows, 0));\r
 //                     dataSet.addMedia(getMediaService().getAllMediaRepresentationParts(mediaRows, 0));\r
                }\r
@@ -227,8 +262,42 @@ public class JaxbExport extends CdmIoBase<JaxbExportState> implements ICdmIO<Jax
                if (jaxbExpConfig.isDoFeatureData() == true) {\r
                        if (featureDataRows == 0) { featureDataRows = MAX_ROWS; }\r
                        logger.info("# Feature Tree, Feature Node");\r
-                       dataSet.setFeatureTrees(getDescriptionService().getFeatureTreesAll(null));\r
+                       List<FeatureTree> featureTrees = new ArrayList<FeatureTree>();\r
+                       featureTrees= getFeatureTreeService().list(null,featureDataRows, 0, null, null);\r
+                       List<FeatureTree> taxTreesdeproxy = new ArrayList<FeatureTree>();\r
+                       for (FeatureTree featureTree : featureTrees){\r
+                               HibernateProxyHelper.deproxy(featureTree);\r
+                               taxTreesdeproxy.add(featureTree);\r
+                       }\r
+                       \r
+                       dataSet.setFeatureTrees(getFeatureTreeService().list(null,null,null,null,null));\r
+               }\r
+               if (jaxbExpConfig.isDoTaxonomicTreeData() == true) {\r
+                       if (taxonomicTreeDataRows == 0) { taxonomicTreeDataRows = MAX_ROWS; }\r
+                       logger.info("# Taxonomic Tree");\r
+                       \r
+                       \r
+                       List<TaxonomicTree> taxTrees = new ArrayList<TaxonomicTree>();\r
+                       taxTrees= getTaxonTreeService().list(null,taxonomicTreeDataRows, 0, null, null);\r
+                       \r
+                       List<TaxonomicTree> taxTreesdeproxy = new ArrayList<TaxonomicTree>();\r
+                       for (TaxonomicTree taxTree : taxTrees){\r
+                               HibernateProxyHelper.deproxy(taxTree);\r
+                               taxTreesdeproxy.add(taxTree);\r
+                       }\r
+                       List<TaxonNode> taxNodes = new ArrayList<TaxonNode>();\r
+                       taxNodes= getTaxonTreeService().getAllNodes();\r
+                       List<TaxonNode> taxNodesdeproxy = new ArrayList<TaxonNode>();\r
+                       for (TaxonNode taxNode : taxNodes){\r
+                               HibernateProxyHelper.deproxy(taxNode);\r
+                               taxNodesdeproxy.add(taxNode);\r
+                       }\r
+                       \r
+                       dataSet.setTaxonNodes(taxNodesdeproxy);\r
+                       dataSet.setTaxonomicTrees(taxTreesdeproxy );\r
                }\r
+               //TODO: FIXME!!!!!\r
+               dataSet.setLanguageStrings(null);\r
        }\r
 \r
 \r