cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/abcd206/SpecimenIoBase.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/abcd206/UnitsGatheringArea.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/abcd206/UnitsGatheringEvent.java -text
-cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelAuthorExport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelAuthorImport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelCommonNamesImport.java -text
-cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelExportBase.java -text
-cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelExportConfigurator.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelFactsImport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelImportBase.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelImportConfigurator.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/CdmBooleanMapper.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/CdmOneToManyMapper.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/CdmStringMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelAuthorExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelAuthorTeamExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportBase.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportConfigurator.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportMapping.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelExportState.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelFactExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelNameRelationExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelNomStatusExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelReferenceExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelTaxonExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelTaxonNameExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/BerlinModelTaxonRelationExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/DbExportState.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/IoState.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/CreatedAndNotesMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/DbBooleanMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/DbClobMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/DbDateMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/DbExportMapperBase.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/DbNullMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/DbObjectMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/DbSingleAttributeExportMapperBase.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/DbStringMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/FactCategoryMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/IDbExportMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/IdMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/IndexCounter.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/MethodMapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/out/mapper/RefDetailMapper.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmApplicationAwareDefaultExport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmApplicationAwareDefaultImport.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmAttributeMapperBase.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ImportWrapper.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/IoConfiguratorBase.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/MapWrapper.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/MultipleAttributeMapperBase.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/Source.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/SourceConnectionException.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/common/ExcelImportConfiguratorBase.java -text
+++ /dev/null
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-package eu.etaxonomy.cdm.io.berlinModel;\r
-\r
-import java.sql.ResultSet;\r
-import java.sql.SQLException;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.springframework.stereotype.Component;\r
-\r
-import eu.etaxonomy.cdm.io.common.ICdmIO;\r
-import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
-import eu.etaxonomy.cdm.io.common.ImportHelper;\r
-import eu.etaxonomy.cdm.io.common.MapWrapper;\r
-import eu.etaxonomy.cdm.io.common.Source;\r
-import eu.etaxonomy.cdm.model.agent.AgentBase;\r
-import eu.etaxonomy.cdm.model.agent.Person;\r
-import eu.etaxonomy.cdm.model.agent.Team;\r
-import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
-import eu.etaxonomy.cdm.model.common.CdmBase;\r
-\r
-\r
-/**\r
- * @author a.mueller\r
- * @created 20.03.2008\r
- * @version 1.0\r
- */\r
-@Component\r
-public class BerlinModelAuthorExport extends BerlinModelExportBase {\r
- private static final Logger logger = Logger.getLogger(BerlinModelAuthorExport.class);\r
-\r
- private static int modCount = 1000;\r
-\r
- public BerlinModelAuthorExport(){\r
- super();\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
- */\r
- @Override\r
- protected boolean doCheck(IExportConfigurator config){\r
- boolean result = true;\r
- logger.warn("Checking for Authors not yet implemented");\r
- //result &= checkArticlesWithoutJournal(bmiConfig);\r
- //result &= checkPartOfJournal(bmiConfig);\r
- \r
- return result;\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)\r
- */\r
- @Override\r
- protected boolean doInvoke(IExportConfigurator config, \r
- Map<String, MapWrapper<? extends CdmBase>> stores){ \r
-\r
- MapWrapper<AgentBase> teamMap = (MapWrapper<AgentBase>)stores.get(ICdmIO.AUTHOR_STORE);\r
- \r
- BerlinModelImportConfigurator bmiConfig = (BerlinModelImportConfigurator)config;\r
- Source source = bmiConfig.getSource();\r
- String dbAttrName;\r
- String cdmAttrName;\r
-\r
- logger.info("start makeAuthors ...");\r
- boolean success = true ;\r
- \r
- String sql = "";\r
- \r
- //TODO get all persons ; getAllTeams\r
- List<? extends AgentBase> persons = getAgentService().getAllAgents(0, 10);\r
- sql = "INSERT INTO author (authorID, authorCache, ...) VALUES "; \r
- for (AgentBase agent : persons){\r
- if (agent instanceof Person){\r
- Person person = (Person)agent;\r
- sql += person.getFirstname() + ", " + ", " + person.getLastname() + ", " + person.getFirstname() + ", "; \r
- }\r
- }\r
- \r
- //TODO get all persons ; getAllTeams\r
- List<? extends AgentBase> teams = getAgentService().getAllAgents(0, 10);\r
- sql = "INSERT INTO AuthorTeam (AuthorTeamId, AuthorTeamCache, FullAuthorTeamCache) VALUES "; \r
- for (AgentBase agent : teams){\r
- if (agent instanceof Team){\r
- Team team = (Team)agent;\r
- sql += team.getSources()/*TODO*/ + ", " + ", " + team.getTitleCache() + ", " + team.getTeamMembers() + ", "; \r
- }\r
- }\r
- \r
-//****************** FROM IMPORT ************/ \r
- //get data from database\r
- String strQuery = \r
- " SELECT * " +\r
- " FROM AuthorTeam " ;\r
- ResultSet rs = source.getResultSet(strQuery) ;\r
- String namespace = "AuthorTeam";\r
- \r
- int i = 0;\r
- //for each reference\r
- try{\r
- while (rs.next()){\r
- \r
- if ((i++ % modCount ) == 0 && i!= 1 ){ logger.info("Authors handled: " + (i-1));}\r
- \r
- //create Agent element\r
- int teamId = rs.getInt("AuthorTeamId");\r
- \r
- TeamOrPersonBase team = new Team();\r
- \r
- dbAttrName = "AuthorTeamCache";\r
- cdmAttrName = "nomenclaturalTitle";\r
- success &= ImportHelper.addStringValue(rs, team, dbAttrName, cdmAttrName);\r
-\r
- dbAttrName = "AuthorTeamCache";\r
- cdmAttrName = "titleCache";\r
- success &= ImportHelper.addStringValue(rs, team, dbAttrName, cdmAttrName);\r
-\r
- //TODO\r
- //FullAuthorTeamCache\r
- //preliminaryFlag\r
- //title cache or nomenclaturalTitle?\r
-\r
- //created, notes\r
- // doIdCreatedUpdatedNotes(config, team, rs, teamId, namespace);\r
-\r
- teamMap.put(teamId, team);\r
- } //while rs.hasNext()\r
- } catch (SQLException e) {\r
- logger.error("SQLException:" + e);\r
- return false;\r
- }\r
-\r
- \r
- logger.info(i + " authors handled");\r
- getAgentService().saveAgentAll(teamMap.objects());\r
-\r
- logger.info("end make authors ...");\r
- return success;\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
- */\r
- protected boolean isIgnore(IExportConfigurator config){\r
- return ! ((BerlinModelExportConfigurator)config).isDoAuthors();\r
- }\r
-\r
-}\r
+++ /dev/null
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-\r
-package eu.etaxonomy.cdm.io.berlinModel;\r
-\r
-import java.sql.ResultSet;\r
-import java.sql.ResultSetMetaData;\r
-import java.sql.SQLException;\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import org.apache.log4j.Logger;\r
-\r
-import eu.etaxonomy.cdm.common.CdmUtils;\r
-import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
-import eu.etaxonomy.cdm.io.common.ICdmIO;\r
-import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
-import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
-import eu.etaxonomy.cdm.io.common.ImportHelper;\r
-import eu.etaxonomy.cdm.io.common.Source;\r
-import eu.etaxonomy.cdm.model.common.Annotation;\r
-import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
-import eu.etaxonomy.cdm.model.common.Language;\r
-\r
-/**\r
- * @author a.mueller\r
- * @created 20.03.2008\r
- * @version 1.0\r
- */\r
-public abstract class BerlinModelExportBase extends CdmIoBase<IExportConfigurator> implements ICdmIO<IExportConfigurator> {\r
- private static final Logger logger = Logger.getLogger(BerlinModelExportBase.class);\r
- \r
- public BerlinModelExportBase() {\r
- super();\r
- }\r
- \r
- \r
-// protected boolean doIdCreatedUpdatedNotes(IImportConfigurator bmiConfig, IdentifiableEntity identifiableEntity, ResultSet rs, long id, String namespace)\r
-// throws SQLException{\r
-// \r
-// Object createdWhen = rs.getObject("Created_When");\r
-// Object createdWho = rs.getObject("Created_Who");\r
-// Object updatedWhen = null;\r
-// Object updatedWho = null;\r
-// try {\r
-// updatedWhen = rs.getObject("Updated_When");\r
-// updatedWho = rs.getObject("Updated_who");\r
-// } catch (SQLException e) {\r
-// //Table "Name" has no updated when/who\r
-// }\r
-// Object notes = rs.getObject("notes");\r
-//\r
-// boolean success = true;\r
-// \r
-// //id\r
-// ImportHelper.setOriginalSource(identifiableEntity, bmiConfig.getSourceReference(), id, namespace);\r
-//\r
-// \r
-// //Created When, Who, Updated When Who\r
-// String createdAnnotationString = "Berlin Model record was created By: " + String.valueOf(createdWho) + " (" + String.valueOf(createdWhen) + ") ";\r
-// if (updatedWhen != null && updatedWho != null){\r
-// createdAnnotationString += " and updated By: " + String.valueOf(updatedWho) + " (" + String.valueOf(updatedWhen) + ")";\r
-// }\r
-// Annotation annotation = Annotation.NewInstance(createdAnnotationString, Language.ENGLISH());\r
-// annotation.setCommentator(bmiConfig.getCommentator());\r
-// identifiableEntity.addAnnotation(annotation);\r
-// \r
-// //notes\r
-// if (notes != null){\r
-// String notesString = String.valueOf(notes);\r
-// if (notesString.length() > 254 ){\r
-// notesString = notesString.substring(0, 250) + "...";\r
-// }\r
-// Annotation notesAnnotation = Annotation.NewInstance(notesString, null);\r
-// //notes.setCommentator(bmiConfig.getCommentator());\r
-// identifiableEntity.addAnnotation(notesAnnotation);\r
-// }\r
-// return success;\r
-// }\r
- \r
- \r
- \r
- protected boolean checkSqlServerColumnExists(Source source, String tableName, String columnName){\r
- String strQuery = "SELECT Count(t.id) as n " +\r
- " FROM sysobjects AS t " +\r
- " INNER JOIN syscolumns AS c ON t.id = c.id " +\r
- " WHERE (t.xtype = 'U') AND " + \r
- " (t.name = '" + tableName + "') AND " + \r
- " (c.name = '" + columnName + "')";\r
- ResultSet rs = source.getResultSet(strQuery) ; \r
- int n;\r
- try {\r
- rs.next();\r
- n = rs.getInt("n");\r
- return n>0;\r
- } catch (SQLException e) {\r
- e.printStackTrace();\r
- return false;\r
- }\r
- \r
- }\r
- \r
- \r
-}\r
import java.sql.SQLException;\r
\r
import org.apache.log4j.Logger;\r
-import org.springframework.stereotype.Component;\r
\r
import eu.etaxonomy.cdm.common.ResultWrapper;\r
+import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
+import eu.etaxonomy.cdm.model.common.RelationshipTermBase;\r
import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
import eu.etaxonomy.cdm.model.description.PresenceTerm;\r
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;\r
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
+import eu.etaxonomy.cdm.model.reference.Article;\r
+import eu.etaxonomy.cdm.model.reference.Book;\r
+import eu.etaxonomy.cdm.model.reference.CdDvd;\r
+import eu.etaxonomy.cdm.model.reference.Database;\r
+import eu.etaxonomy.cdm.model.reference.Generic;\r
+import eu.etaxonomy.cdm.model.reference.Journal;\r
+import eu.etaxonomy.cdm.model.reference.Patent;\r
+import eu.etaxonomy.cdm.model.reference.PersonalCommunication;\r
+import eu.etaxonomy.cdm.model.reference.PrintSeries;\r
+import eu.etaxonomy.cdm.model.reference.Proceedings;\r
+import eu.etaxonomy.cdm.model.reference.Report;\r
+import eu.etaxonomy.cdm.model.reference.SectionBase;\r
+import eu.etaxonomy.cdm.model.reference.StrictReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.Thesis;\r
+import eu.etaxonomy.cdm.model.reference.WebPage;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
\r
}\r
}\r
\r
- //TypeDesignation\r
+ //OccStatus\r
public static PresenceAbsenceTermBase<?> occStatus2PresenceAbsence (int occStatusId) throws UnknownCdmTypeException{\r
switch (occStatusId){\r
case 0: return null;\r
}\r
\r
\r
- //TypeDesignation\r
+ //FactCategory\r
public static Feature factCategory2Feature (int factCategoryId) throws UnknownCdmTypeException{\r
switch (factCategoryId){\r
case 0: return null;\r
return Rank.UNKNOWN_RANK();\r
} \r
}\r
+ \r
+ \r
+ public static Integer rank2RankId (Rank rank){\r
+ if (rank.equals(null)){return null;}\r
+ else if (rank.equals(Rank.KINGDOM())){ return 1;}\r
+ else if (rank.equals(Rank.SUBKINGDOM())){ return 3;}\r
+ else if (rank.equals(Rank.PHYLUM())){ return 5;}\r
+ else if (rank.equals(Rank.SUBPHYLUM())){ return 7;}\r
+ else if (rank.equals(Rank.DIVISION())){ return 8;}\r
+ else if (rank.equals(Rank.SUBDIVISION())){ return 9;}\r
+ \r
+ else if (rank.equals(Rank.CLASS())){ return 10;}\r
+ else if (rank.equals(Rank.SUBCLASS())){ return 13;}\r
+ else if (rank.equals(Rank.SUPERORDER())){ return 16;}\r
+ else if (rank.equals(Rank.ORDER())){ return 18;}\r
+ else if (rank.equals(Rank.SUBORDER())){ return 19;}\r
+ else if (rank.equals(Rank.FAMILY())){ return 20;}\r
+ else if (rank.equals(Rank.SUBFAMILY())){ return 25;}\r
+ else if (rank.equals(Rank.TRIBE())){ return 30;}\r
+ else if (rank.equals(Rank.SUBTRIBE())){ return 35;}\r
+ else if (rank.equals(Rank.GENUS())){ return 40;}\r
+ else if (rank.equals(Rank.SUBGENUS())){ return 42;}\r
+ else if (rank.equals(Rank.SECTION())){ return 45;}\r
+ else if (rank.equals(Rank.SUBSECTION())){ return 47;}\r
+ else if (rank.equals(Rank.SERIES())){ return 50;}\r
+ else if (rank.equals(Rank.SUBSERIES())){ return 52;}\r
+ else if (rank.equals(Rank.SPECIESAGGREGATE())){ return 58;}\r
+ //TODO\r
+ // else if (rank.equals(Rank.XXX())){ return 59;}\r
+ else if (rank.equals(Rank.SPECIES())){ return 60;}\r
+ else if (rank.equals(Rank.SUBSPECIES())){ return 65;}\r
+ else if (rank.equals(Rank.CONVAR())){ return 68;}\r
+ else if (rank.equals(Rank.VARIETY())){ return 70;}\r
+ else if (rank.equals(Rank.SUBVARIETY())){ return 73;}\r
+ else if (rank.equals(Rank.FORM())){ return 80;}\r
+ else if (rank.equals(Rank.SUBFORM())){ return 82;}\r
+ else if (rank.equals(Rank.SPECIALFORM())){ return 84;}\r
+ else if (rank.equals(Rank.INFRAGENERICTAXON())){ return 98;}\r
+ else if (rank.equals(Rank.INFRASPECIFICTAXON())){ return 99;}\r
+ \r
+ else if (rank.equals(Rank.SUPERCLASS())){ return 750;}\r
+ else if (rank.equals(Rank.INFRACLASS())){ return 780;}\r
+ else if (rank.equals(Rank.INFRAORDER())){ return 820;}\r
+ else if (rank.equals(Rank.SUPERFAMILY())){ return 830;}\r
+ \r
+ else {\r
+ //TODO Exception\r
+ logger.warn("Rank not yet supported in Berlin Model: "+ rank.getLabel());\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ public static Integer textData2FactCategoryFk (Feature feature){\r
+ if (feature.equals(Feature.DESCRIPTION())){\r
+ return 1;\r
+ }else if (feature.equals(Feature.ECOLOGY())){\r
+ return 4;\r
+ }else if (feature.equals(Feature.PHENOLOGY())){\r
+ return 5;\r
+ }else if (feature.equals(Feature.COMMON_NAME())){\r
+ return 12;\r
+ }else if (feature.equals(Feature.OCCURRENCE())){\r
+ return 13;\r
+ }else if (feature.equals(Feature.CITATION())){\r
+ return 99;\r
+ }else{\r
+ logger.warn("Unknown Feature. Used DESCRIPTION instead");\r
+ return 4;\r
+ }\r
+ }\r
+ \r
+ \r
+ public static Integer taxonBase2statusFk (TaxonBase<?> taxonBase){\r
+ if (taxonBase.isInstanceOf(Taxon.class)){\r
+ return T_STATUS_ACCEPTED;\r
+ }else if (taxonBase.isInstanceOf(Synonym.class)){\r
+ return T_STATUS_SYNONYM;\r
+ }else{\r
+ logger.warn("Unknown ");\r
+ return T_STATUS_UNRESOLVED;\r
+ }\r
+ //TODO \r
+// public static int T_STATUS_PARTIAL_SYN = 3;\r
+// public static int T_STATUS_PRO_PARTE_SYN = 4;\r
+// public static int T_STATUS_UNRESOLVED = 5;\r
+// public static int T_STATUS_ORPHANED = 6;\r
+ }\r
+ \r
+ public static Integer ref2refCategoryId (StrictReferenceBase<?> ref){\r
+ if (ref == null){\r
+ return null;\r
+ }\r
+ else if (ref instanceof Article){ return REF_ARTICLE;}\r
+ else if (ref instanceof SectionBase){ return REF_PART_OF_OTHER_TITLE;}\r
+ else if (ref instanceof Book){ return REF_BOOK;}\r
+ else if (ref instanceof Database){ return REF_DATABASE;}\r
+// else if (ref instanceof SectionBas){ return REF_INFORMAL;}\r
+// else if (ref instanceof SectionBas){ return REF_NOT_APPLICABLE;}\r
+ else if (ref instanceof WebPage){ return REF_WEBSITE;}\r
+ else if (ref instanceof CdDvd){ return REF_CD;}\r
+ else if (ref instanceof Journal){ return REF_JOURNAL;}\r
+ else if (ref instanceof Generic){ return REF_UNKNOWN;}\r
+ else if (ref instanceof PrintSeries){ \r
+ logger.warn("Print Series is not a standard Berlin Model category");\r
+ return REF_PRINT_SERIES;\r
+ }\r
+ else if (ref instanceof Proceedings){ \r
+ logger.warn("Proceedings is not a standard Berlin Model category");\r
+ return REF_CONFERENCE_PROCEEDINGS;\r
+ }\r
+// else if (ref instanceof ){ return REF_JOURNAL_VOLUME;}\r
+ else if (ref instanceof Patent){ return REF_NOT_APPLICABLE;}\r
+ else if (ref instanceof PersonalCommunication){ return REF_INFORMAL;}\r
+ else if (ref instanceof Report){ return REF_NOT_APPLICABLE;}\r
+ else if (ref instanceof Thesis){ return REF_NOT_APPLICABLE;}\r
+ else if (ref instanceof Report){ return REF_NOT_APPLICABLE;}\r
\r
+ else {\r
+ //TODO Exception\r
+ logger.warn("Reference type not yet supported in Berlin Model: "+ ref.getClass().getSimpleName());\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ \r
+ public static Integer taxRelation2relPtQualifierFk (RelationshipBase<?,?,?> rel){\r
+ if (rel == null){\r
+ return null;\r
+ }\r
+// else if (rel instanceof SynonymRelationship){ \r
+// return ;\r
+// }else if (rel instanceof TaxonRelationship){\r
+ RelationshipTermBase<?> type = rel.getType();\r
+ if (type.equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())) {return TAX_REL_IS_INCLUDED_IN;\r
+ }else if (type.equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())) {return TAX_REL_IS_MISAPPLIED_NAME_OF;\r
+ }else if (type.equals(SynonymRelationshipType.SYNONYM_OF())) {return TAX_REL_IS_SYNONYM_OF;\r
+ }else if (type.equals(SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF())) {return TAX_REL_IS_HOMOTYPIC_SYNONYM_OF;\r
+ }else if (type.equals(SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF())) {return TAX_REL_IS_HETEROTYPIC_SYNONYM_OF;\r
+ }else if (type.equals(TaxonRelationshipType.CONGRUENT_TO())) {return 11;\r
+// public static int TAX_REL_IS_PROPARTE_SYN_OF = 4;\r
+// public static int TAX_REL_IS_PARTIAL_SYN_OF = 5;\r
+// public static int TAX_REL_IS_PROPARTE_HOMOTYPIC_SYNONYM_OF = 101;\r
+// public static int TAX_REL_IS_PROPARTE_HETEROTYPIC_SYNONYM_OF = 102;\r
+// public static int TAX_REL_IS_PARTIAL_HOMOTYPIC_SYNONYM_OF = 103;\r
+// public static int TAX_REL_IS_PARTIAL_HETEROTYPIC_SYNONYM_OF = 104;\r
+ \r
+ }else {\r
+ //TODO Exception\r
+ logger.warn("Relationship type not yet supported by Berlin Model export: "+ rel.getType());\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ public static Integer nomStatus2nomStatusFk (NomenclaturalStatus status){\r
+ if (status == null){\r
+ return null;\r
+ }\r
+ if (status.equals(NomenclaturalStatusType.INVALID())) {return NAME_ST_NOM_INVAL;\r
+ }else if (status.equals(NomenclaturalStatusType.ILLEGITIMATE())) {return NAME_ST_NOM_ILLEG;\r
+ }else if (status.equals(NomenclaturalStatusType.NUDUM())) {return NAME_ST_NOM_NUD;\r
+ }else if (status.equals(NomenclaturalStatusType.REJECTED())) {return NAME_ST_NOM_REJ;\r
+ }else if (status.equals(NomenclaturalStatusType.REJECTED_PROP())) {return NAME_ST_NOM_REJ_PROP;\r
+ }else if (status.equals(NomenclaturalStatusType.UTIQUE_REJECTED())) {return NAME_ST_NOM_UTIQUE_REJ;\r
+ }else if (status.equals(NomenclaturalStatusType.UTIQUE_REJECTED_PROP())) {return NAME_ST_NOM_UTIQUE_REJ_PROP;\r
+ }else if (status.equals(NomenclaturalStatusType.CONSERVED())) {return NAME_ST_NOM_CONS;\r
+ \r
+ }else if (status.equals(NomenclaturalStatusType.CONSERVED_PROP())) {return NAME_ST_NOM_CONS_PROP;\r
+ }else if (status.equals(NomenclaturalStatusType.ORTHOGRAPHY_CONSERVED())) {return NAME_ST_ORTH_CONS;\r
+ }else if (status.equals(NomenclaturalStatusType.ORTHOGRAPHY_CONSERVED_PROP())) {return NAME_ST_ORTH_CONS_PROP;\r
+ }else if (status.equals(NomenclaturalStatusType.SUPERFLUOUS())) {return NAME_ST_NOM_SUPERFL;\r
+ }else if (status.equals(NomenclaturalStatusType.AMBIGUOUS())) {return NAME_ST_NOM_AMBIG;\r
+ }else if (status.equals(NomenclaturalStatusType.PROVISIONAL())) {return NAME_ST_NOM_PROVIS;\r
+ }else if (status.equals(NomenclaturalStatusType.DOUBTFUL())) {return NAME_ST_NOM_DUB;\r
+ }else if (status.equals(NomenclaturalStatusType.NOVUM())) {return NAME_ST_NOM_NOV;\r
+ \r
+ }else if (status.equals(NomenclaturalStatusType.CONFUSUM())) {return NAME_ST_NOM_CONFUS;\r
+ }else if (status.equals(NomenclaturalStatusType.ALTERNATIVE())) {return NAME_ST_NOM_ALTERN;\r
+ }else if (status.equals(NomenclaturalStatusType.COMBINATION_INVALID())) {return NAME_ST_COMB_INVAL;\r
+ //TODO\r
+ }else {\r
+ //TODO Exception\r
+ logger.warn("NomStatus type not yet supported by Berlin Model export: "+ status);\r
+ return null;\r
+ }\r
+ }\r
+\r
+ \r
+ \r
+ public static Integer nameRel2RelNameQualifierFk (RelationshipBase<?,?,?> rel){\r
+ if (rel == null){\r
+ return null;\r
+ }\r
+ RelationshipTermBase<?> type = rel.getType();\r
+ if (type.equals(NameRelationshipType.BASIONYM())) {return NAME_REL_IS_BASIONYM_FOR;\r
+ }else if (type.equals(NameRelationshipType.LATER_HOMONYM())) {return NAME_REL_IS_LATER_HOMONYM_OF;\r
+ }else if (type.equals(NameRelationshipType.REPLACED_SYNONYM())) {return NAME_REL_IS_REPLACED_SYNONYM_FOR;\r
+ //TODO\r
+ }else if (type.equals(NameRelationshipType.VALIDATED_BY_NAME())) {return NAME_REL_IS_VALIDATION_OF;\r
+ }else if (type.equals(NameRelationshipType.LATER_VALIDATED_BY_NAME())) {return NAME_REL_IS_LATER_VALIDATION_OF;\r
+ }else if (type.equals(NameRelationshipType.CONSERVED_AGAINST())) {return NAME_REL_IS_CONSERVED_AGAINST;\r
+ \r
+ \r
+ }else if (type.equals(NameRelationshipType.TREATED_AS_LATER_HOMONYM())) {return NAME_REL_IS_TREATED_AS_LATER_HOMONYM_OF;\r
+ }else if (type.equals(NameRelationshipType.ORTHOGRAPHIC_VARIANT())) {return NAME_REL_IS_ORTHOGRAPHIC_VARIANT_OF;\r
+// }else if (type.equals(NameRelationshipType.())) {return NAME_REL_IS_ORTHOGRAPHIC_VARIANT_OF;\r
+ }else {\r
+ //TODO Exception\r
+ logger.warn("Relationship type not yet supported by Berlin Model export: "+ rel.getType());\r
+ return null;\r
+ }\r
+ \r
+ //NameRelationShip\r
+\r
+// }else if (type.equals(NameRelationshipType.())) {return NAME_REL_IS_REJECTED_IN_FAVOUR_OF;\r
+\r
+// public static int NAME_REL_IS_FIRST_PARENT_OF = 9;\r
+// public static int NAME_REL_IS_SECOND_PARENT_OF = 10;\r
+// public static int NAME_REL_IS_FEMALE_PARENT_OF = 11;\r
+// public static int NAME_REL_IS_MALE_PARENT_OF = 12;\r
+//\r
+// public static int NAME_REL_IS_REJECTED_IN_FAVOUR_OF = 14;\r
+// }else if (type.equals(NameRelationshipType.)) {return NAME_REL_IS_REJECTED_TYPE_OF;\r
+// \r
+// public static int NAME_REL_HAS_SAME_TYPE_AS = 18;\r
+// public static int NAME_REL_IS_LECTOTYPE_OF = 61;\r
+// public static int NAME_REL_TYPE_NOT_DESIGNATED = 62;\r
+\r
+ // }else if (type.equals(NameRelationshipType.LATER_VALIDATED_BY_NAME())) {return NAME_REL_IS_TYPE_OF;\r
+ \r
+ \r
+ }\r
+ \r
+\r
+ \r
\r
}\r
\r
import eu.etaxonomy.cdm.io.common.CdmAttributeMapperBase;\r
import eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase;\r
-import eu.etaxonomy.cdm.io.common.IXmlMapper;\r
+import eu.etaxonomy.cdm.io.common.MultipleAttributeMapperBase;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
\r
/**\r
* @created 20.03.2008\r
* @version 1.0\r
*/\r
-public class CdmOneToManyMapper<ONE extends CdmBase, MANY extends CdmBase, SINGLE_MAPPER extends CdmSingleAttributeMapperBase> extends CdmAttributeMapperBase {\r
+public class CdmOneToManyMapper<ONE extends CdmBase, MANY extends CdmBase, SINGLE_MAPPER extends CdmSingleAttributeMapperBase> extends MultipleAttributeMapperBase<SINGLE_MAPPER> {\r
@SuppressWarnings("unused")\r
private static Logger logger = Logger.getLogger(CdmOneToManyMapper.class);\r
\r
- private List<SINGLE_MAPPER> singleMappers = new ArrayList<SINGLE_MAPPER>();\r
private Class<MANY> manyClass;\r
private Class<ONE> oneClass;\r
private String singleAttributeName;\r
this.singleAttributeName = singleAttributeName;\r
}\r
\r
- @Override\r
- public Set<String> getSourceAttributes(){\r
- Set<String> result = new HashSet<String>();\r
- result.addAll(getSourceAttributeList());\r
- return result;\r
- }\r
+// @Override\r
+// public Set<String> getSourceAttributes(){\r
+// Set<String> result = new HashSet<String>();\r
+// result.addAll(getSourceAttributeList());\r
+// return result;\r
+// }\r
\r
@Override\r
public List<String> getSourceAttributeList(){\r
return result;\r
}\r
\r
- @Override\r
- public Set<String> getDestinationAttributes(){\r
- Set<String> result = new HashSet<String>();\r
- result.addAll(getDestinationAttributeList());\r
- return result;\r
- }\r
+// @Override\r
+// public Set<String> getDestinationAttributes(){\r
+// Set<String> result = new HashSet<String>();\r
+// result.addAll(getDestinationAttributeList());\r
+// return result;\r
+// }\r
\r
@Override\r
public List<String> getDestinationAttributeList(){\r
* @param dbValue\r
* @param cdmValue\r
*/\r
- public CdmStringMapper(String dbAttributString, String cdmAttributeString) {\r
- super(dbAttributString, cdmAttributeString);\r
+ public CdmStringMapper(String dbAttributeString, String cdmAttributeString) {\r
+ super(dbAttributeString, cdmAttributeString);\r
}\r
\r
- public Class getTypeClass(){\r
+ public Class<String> getTypeClass(){\r
return String.class;\r
}\r
-\r
+ \r
}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.SQLException;\r
+import java.util.List;\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.berlinModel.out.mapper.CreatedAndNotesMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbStringMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IdMapper;\r
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 20.03.2008\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class BerlinModelAuthorExport extends BerlinModelExportBase {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelAuthorExport.class);\r
+\r
+ private static int modCount = 1000;\r
+ private static final String dbTableName = "Author";\r
+ private static final String pluralString = "Authors";\r
+ private static final Class<? extends CdmBase> standardMethodParameter = Person.class;\r
+ public BerlinModelAuthorExport(){\r
+ super();\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IExportConfigurator config){\r
+ boolean result = true;\r
+ logger.warn("Checking for "+pluralString+" not yet implemented");\r
+ //result &= checkArticlesWithoutJournal(bmiConfig);\r
+ //result &= checkPartOfJournal(bmiConfig);\r
+ \r
+ return result;\r
+ }\r
+ \r
+ private BerlinModelExportMapping getMapping(){\r
+ String tableName = dbTableName;\r
+ BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);\r
+ mapping.addMapper(IdMapper.NewInstance("AuthorId"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("nomenclaturalTitle", "Abbrev"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("firstName", "FirstName"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("lastName", "LastName"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("lifespan", "Dates"));\r
+\r
+//TODO \r
+// mapping.addMapper(DbStringMapper.NewInstance("", "NomStandard"));\r
+// mapping.addMapper(DbStringMapper.NewInstance("", "Kürzel"));\r
+// mapping.addMapper(DbStringMapper.NewInstance("", "DraftKürz"));\r
+// mapping.addMapper(DbStringMapper.NewInstance("", "Initials"));\r
+\r
+ mapping.addMapper(CreatedAndNotesMapper.NewInstance());\r
+ \r
+ return mapping;\r
+ }\r
+ \r
+ \r
+ protected boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ //MapWrapper<AgentBase> teamMap = (MapWrapper<AgentBase>)stores.get(ICdmIO.AUTHOR_STORE);\r
+ //MapWrapper<AgentBase> teamMap = (MapWrapper<AgentBase>)stores.get(ICdmIO.AUTHOR_STORE);\r
+ \r
+ try{\r
+ BerlinModelExportConfigurator bmeConfig = (BerlinModelExportConfigurator)state.getConfig();\r
+ \r
+ logger.info("start make "+pluralString+" ...");\r
+ boolean success = true ;\r
+ doDelete(bmeConfig);\r
+ \r
+ TransactionStatus txStatus = startTransaction(true);\r
+ Class<Team> clazz = Team.class;\r
+ List<? extends AgentBase> persons = getAgentService().list(clazz, 100000000, 0);\r
+ \r
+ BerlinModelExportMapping mapping = getMapping();\r
+ mapping.initialize(state);\r
+ \r
+ logger.info("save "+pluralString+" ...");\r
+ int count = 0;\r
+ for (AgentBase<?> agent : persons){\r
+ doCount(count++, modCount, pluralString);\r
+ if (agent instanceof Person){\r
+ success &= mapping.invoke(agent);\r
+ }\r
+ }\r
+ \r
+ commitTransaction(txStatus);\r
+ logger.info("end make "+pluralString+" ...");\r
+ return success;\r
+ }catch(SQLException e){\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage());\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ protected boolean doDelete(BerlinModelExportConfigurator config){\r
+ String sql;\r
+ Source destination = config.getDestination();\r
+ return true;\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IExportConfigurator config){\r
+ return ! ((BerlinModelExportConfigurator)config).isDoAuthors();\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()\r
+ */\r
+ @Override\r
+ public Class<? extends CdmBase> getStandardMethodParameter() {\r
+ return standardMethodParameter;\r
+ }\r
+\r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.SQLException;\r
+import java.util.List;\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.berlinModel.out.mapper.CreatedAndNotesMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbBooleanMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IdMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;\r
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 20.03.2008\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class BerlinModelAuthorTeamExport extends BerlinModelExportBase {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelAuthorTeamExport.class);\r
+\r
+ private static int modCount = 1000;\r
+ private static final String dbTableName = "AuthorTeam";\r
+ private static final String pluralString = "AuthorTeams";\r
+ private static final Class<? extends CdmBase> standardMethodParameter = Team.class;\r
+ public BerlinModelAuthorTeamExport(){\r
+ super();\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IExportConfigurator config){\r
+ boolean result = true;\r
+ logger.warn("Checking for "+pluralString+" not yet implemented");\r
+ //result &= checkArticlesWithoutJournal(bmiConfig);\r
+ //result &= checkPartOfJournal(bmiConfig);\r
+ \r
+ return result;\r
+ }\r
+ \r
+ private BerlinModelExportMapping getMapping(){\r
+ String tableName = dbTableName;\r
+ BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);\r
+ mapping.addMapper(IdMapper.NewInstance("AuthorTeamId"));\r
+ mapping.addMapper(MethodMapper.NewInstance("AuthorTeamCache", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("FullAuthorTeamCache", this));\r
+ //mapping.addMapper(new DbStringMapper("infraGenericEpithet", "GenusSubDivisionEpi"));\r
+ mapping.addMapper(DbBooleanMapper.NewFalseInstance("isProtectedTitleCache", "PreliminaryFlag"));\r
+ mapping.addMapper(CreatedAndNotesMapper.NewInstance());\r
+ \r
+\r
+// Team n = null;\r
+ //n.isProtectedTitleCache()\r
+ return mapping;\r
+ }\r
+ \r
+ \r
+ protected boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ //MapWrapper<AgentBase> teamMap = (MapWrapper<AgentBase>)stores.get(ICdmIO.AUTHOR_STORE);\r
+ //MapWrapper<AgentBase> teamMap = (MapWrapper<AgentBase>)stores.get(ICdmIO.AUTHOR_STORE);\r
+ \r
+ try{\r
+ BerlinModelExportConfigurator bmeConfig = (BerlinModelExportConfigurator)state.getConfig();\r
+ \r
+ logger.info("start make "+pluralString+" ...");\r
+ boolean success = true ;\r
+ doDelete(bmeConfig);\r
+ \r
+ TransactionStatus txStatus = startTransaction(true);\r
+ Class<Team> clazz = Team.class;\r
+ List<? extends AgentBase> persons = getAgentService().list(clazz, 100000000, 0);\r
+ \r
+ BerlinModelExportMapping mapping = getMapping();\r
+ mapping.initialize(state);\r
+ \r
+// for (AgentBase agent : persons){\r
+// if (agent instanceof Person){\r
+// success &= mapping.invoke(agent);\r
+// }\r
+// }\r
+ logger.info("save "+pluralString+" ...");\r
+ int count = 0;\r
+ for (AgentBase<?> agent : persons){\r
+ doCount(count++, modCount, pluralString);\r
+ if (agent instanceof Team){\r
+ success &= mapping.invoke(agent);\r
+ }\r
+ }\r
+ \r
+ commitTransaction(txStatus);\r
+ \r
+ logger.info("end make "+pluralString+" ...");\r
+ return success;\r
+ }catch(SQLException e){\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage());\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ protected boolean doDelete(BerlinModelExportConfigurator config){\r
+ String sql;\r
+ Source destination = config.getDestination();\r
+ //RelPTaxon\r
+ sql = "DELETE FROM RelPTaxon";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //Fact\r
+ sql = "DELETE FROM Fact";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //PTaxon\r
+ sql = "DELETE FROM PTaxon";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ \r
+ //NameHistory\r
+ sql = "DELETE FROM NameHistory";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //RelName\r
+ sql = "DELETE FROM RelName";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //NomStatusRel\r
+ sql = "DELETE FROM NomStatusRel";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //Name\r
+ sql = "DELETE FROM Name";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //RefDetail\r
+ sql = "DELETE FROM RefDetail";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //Reference\r
+ sql = "DELETE FROM Reference";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //AuthorTeamSequence\r
+ sql = "DELETE FROM AuthorTeamSequence";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //AuthorTeam\r
+ sql = "DELETE FROM AuthorTeam";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ return true;\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static String getAuthorTeamCache(Team team){\r
+ if (team.isProtectedTitleCache()){\r
+ return team.getTitleCache();\r
+ }else{\r
+ return null;\r
+ }\r
+ }\r
+\r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static String getFullAuthorTeamCache(Team team){\r
+ if (team.isProtectedTitleCache()){\r
+ return team.getNomenclaturalTitle();\r
+ }else{\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IExportConfigurator config){\r
+ return ! ((BerlinModelExportConfigurator)config).isDoAuthors();\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()\r
+ */\r
+ @Override\r
+ public Class<? extends CdmBase> getStandardMethodParameter() {\r
+ return standardMethodParameter;\r
+ }\r
+\r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.util.Map;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
+import eu.etaxonomy.cdm.io.common.ICdmIO;\r
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.MapWrapper;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 20.03.2008\r
+ * @version 1.0\r
+ */\r
+public abstract class BerlinModelExportBase extends CdmIoBase<IExportConfigurator> implements ICdmIO<IExportConfigurator> {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelExportBase.class);\r
+ \r
+ public BerlinModelExportBase() {\r
+ super();\r
+ }\r
+ \r
+ protected abstract boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state);\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)\r
+ */\r
+ @Override\r
+ protected boolean doInvoke(IExportConfigurator config, \r
+ Map<String, MapWrapper<? extends CdmBase>> stores){ \r
+ BerlinModelExportState<BerlinModelExportConfigurator> state = ((BerlinModelExportConfigurator)config).getState();\r
+ state.setConfig((BerlinModelExportConfigurator)config);\r
+ return doInvoke(state);\r
+ }\r
+ \r
+ protected boolean checkSqlServerColumnExists(Source source, String tableName, String columnName){\r
+ String strQuery = "SELECT Count(t.id) as n " +\r
+ " FROM sysobjects AS t " +\r
+ " INNER JOIN syscolumns AS c ON t.id = c.id " +\r
+ " WHERE (t.xtype = 'U') AND " + \r
+ " (t.name = '" + tableName + "') AND " + \r
+ " (c.name = '" + columnName + "')";\r
+ ResultSet rs = source.getResultSet(strQuery) ; \r
+ int n;\r
+ try {\r
+ rs.next();\r
+ n = rs.getInt("n");\r
+ return n>0;\r
+ } catch (SQLException e) {\r
+ e.printStackTrace();\r
+ return false;\r
+ }\r
+ \r
+ }\r
+ \r
+ public abstract Class<? extends CdmBase> getStandardMethodParameter();\r
+ \r
+ protected void doCount(int count, int modCount, String pluralString){\r
+ if ((count % modCount ) == 0 && count!= 0 ){ logger.info(pluralString + " handled: " + (count));}\r
+ }\r
+ \r
+}\r
* See LICENSE.TXT at the top of this package for the full license terms.\r
*/\r
\r
-package eu.etaxonomy.cdm.io.berlinModel;\r
-\r
-import java.io.File;\r
-import java.net.MalformedURLException;\r
-import java.net.URL;\r
-import java.util.HashSet;\r
-import java.util.Set;\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
\r
import org.apache.log4j.Logger;\r
\r
import eu.etaxonomy.cdm.database.ICdmDataSource;\r
import eu.etaxonomy.cdm.io.common.ExportConfiguratorBase;\r
import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
-import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
-import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
import eu.etaxonomy.cdm.io.common.Source;\r
-import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
import eu.etaxonomy.cdm.model.reference.Database;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.model.taxon.Synonym;\r
\r
/**\r
* @author a.mueller\r
* @created 20.03.2008\r
* @version 1.0\r
*/\r
-public class BerlinModelExportConfigurator extends ExportConfiguratorBase implements IExportConfigurator{\r
+public class BerlinModelExportConfigurator extends ExportConfiguratorBase<Source> implements IExportConfigurator{\r
@SuppressWarnings("unused")\r
private static Logger logger = Logger.getLogger(BerlinModelExportConfigurator.class);\r
\r
private boolean doAuthors;\r
+ private boolean doTaxonNames;\r
+ private BerlinModelExportState<BerlinModelExportConfigurator> state;\r
+ \r
+ public enum IdType{\r
+ CDM_ID,\r
+ ORIGINAL_SOURCE_ID,\r
+ MAX_ID\r
+ }\r
+ \r
+ private IdType idType = IdType.CDM_ID;\r
\r
public static BerlinModelExportConfigurator NewInstance(Source berlinModelDestination, ICdmDataSource source){\r
return new BerlinModelExportConfigurator(berlinModelDestination, source);\r
\r
protected void makeIoClassList(){\r
ioClassList = new Class[]{\r
- BerlinModelAuthorExport.class\r
-// , BerlinModelReferenceImport.class\r
-// , BerlinModelTaxonNameImport.class\r
+ BerlinModelAuthorTeamExport.class\r
+ , BerlinModelReferenceExport.class\r
+ , BerlinModelTaxonNameExport.class\r
// , BerlinModelTaxonNameRelationImport.class\r
// , BerlinModelNameStatusImport.class\r
// , BerlinModelNameFactsImport.class\r
// , BerlinModelTypesImport.class\r
-// , BerlinModelTaxonImport.class\r
-// , BerlinModelTaxonRelationImport.class\r
-// , BerlinModelFactsImport.class\r
+ , BerlinModelTaxonExport.class\r
+ , BerlinModelTaxonRelationExport.class\r
+ , BerlinModelFactExport.class\r
// , BerlinModelOccurrenceImport.class\r
};\r
\r
// setNomenclaturalCode(NomenclaturalCode.ICBN); //default for Berlin Model\r
setSource(cdmSource);\r
setDestination(berlinModelDestination);\r
+ setState(new BerlinModelExportState<BerlinModelExportConfigurator>());\r
}\r
\r
\r
* @see eu.etaxonomy.cdm.io.common.IIoConfigurator#getDestinationNameString()\r
*/\r
public String getDestinationNameString() {\r
- logger.warn("Not yet implemented");\r
- return null;\r
+ if (getSource() != null){\r
+ return getSource().getDatabase();\r
+ }else{\r
+ return null;\r
+ }\r
}\r
\r
public boolean isDoAuthors(){\r
this.doAuthors = doAuthors;\r
}\r
\r
+ /**\r
+ * @return the doTaxonNames\r
+ */\r
+ public boolean isDoTaxonNames() {\r
+ return doTaxonNames;\r
+ }\r
+\r
+ /**\r
+ * @param doTaxonNames the doTaxonNames to set\r
+ */\r
+ public void setDoTaxonNames(boolean doTaxonNames) {\r
+ this.doTaxonNames = doTaxonNames;\r
+ }\r
+\r
+ /**\r
+ * @return the idType\r
+ */\r
+ public IdType getIdType() {\r
+ return idType;\r
+ }\r
+\r
+ /**\r
+ * @param idType the idType to set\r
+ */\r
+ public void setIdType(IdType idType) {\r
+ this.idType = idType;\r
+ }\r
+\r
+ /**\r
+ * @return the state\r
+ */\r
+ public BerlinModelExportState<BerlinModelExportConfigurator> getState() {\r
+ return state;\r
+ }\r
+\r
+ /**\r
+ * @param state the state to set\r
+ */\r
+ public void setState(BerlinModelExportState<BerlinModelExportConfigurator> state) {\r
+ this.state = state;\r
+ }\r
+ \r
+ \r
+\r
\r
}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.PreparedStatement;\r
+import java.sql.SQLException;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IDbExportMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IndexCounter;\r
+import eu.etaxonomy.cdm.io.common.CdmAttributeMapperBase;\r
+import eu.etaxonomy.cdm.io.common.CdmIoMapping;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class BerlinModelExportMapping extends CdmIoMapping {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelExportMapping.class);\r
+ \r
+ private PreparedStatement preparedeStatement;\r
+ private String berlinModelTableName;\r
+ \r
+ public BerlinModelExportMapping(String tableName){\r
+ this.berlinModelTableName = tableName;\r
+ }\r
+ \r
+ public boolean initialize(BerlinModelExportState<?> state) throws SQLException{\r
+ BerlinModelExportConfigurator bmeConfig = (BerlinModelExportConfigurator)state.getConfig();\r
+ Source db = bmeConfig.getDestination();\r
+ \r
+ String preparedStatement = preparedStatement();\r
+ logger.debug(preparedStatement);\r
+ try {\r
+ preparedeStatement = db.getConnection().prepareStatement(preparedStatement);\r
+ IndexCounter index = new IndexCounter(1);\r
+ for (CdmAttributeMapperBase mapper : this.mapperList){\r
+ if (mapper instanceof IDbExportMapper){\r
+ IDbExportMapper<DbExportState<?>> dbMapper = (IDbExportMapper)mapper;\r
+ dbMapper.initialize(preparedeStatement, index, state, berlinModelTableName);\r
+ }else{\r
+ logger.warn("mapper is not of type " + IDbExportMapper.class.getSimpleName());\r
+ }\r
+ }\r
+ return true;\r
+ } catch (SQLException e) {\r
+ logger.warn("SQL Exception");\r
+ throw e;\r
+ }\r
+ }\r
+ \r
+ public boolean invoke(CdmBase cdmBase) throws SQLException{\r
+ try {\r
+ boolean result = true;\r
+ for (CdmAttributeMapperBase mapper : this.mapperList){\r
+ if (mapper instanceof IDbExportMapper){\r
+ IDbExportMapper<DbExportState<?>> dbMapper = (IDbExportMapper)mapper;\r
+ try {\r
+ result &= dbMapper.invoke(cdmBase);\r
+ } catch (Exception e) {\r
+ result = false;\r
+ logger.error("Error occurred in mapping.invoke");\r
+ e.printStackTrace();\r
+ continue;\r
+ }\r
+ }else{\r
+ logger.warn("mapper is not of type " + IDbExportMapper.class.getSimpleName());\r
+ }\r
+ }\r
+ int count = preparedeStatement.executeUpdate();\r
+ if (logger.isDebugEnabled())logger.debug("Number of rows affected: " + count);\r
+ return result;\r
+ } catch(SQLException e){\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage() + ": " + cdmBase.toString());\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ \r
+ \r
+ private String preparedStatement(){\r
+ String sqlInsert = "INSERT INTO " + getBerlinModelTableName() + " (";\r
+ String sqlValues = ") VALUES(";\r
+ String sqlEnd = ")";\r
+ String attributes = "";\r
+ String values = "";\r
+ for (String attribute : this.getDestinationAttributeList()){\r
+ attributes += "," + attribute;\r
+ values += ",?";\r
+ }\r
+ attributes = attributes.substring(1); //delete first ','\r
+ values = values.substring(1); //delete first ','\r
+ String result = sqlInsert + attributes + sqlValues + values + sqlEnd;\r
+ return result;\r
+ }\r
+\r
+ /**\r
+ * @return the berlinModelTableName\r
+ */\r
+ public String getBerlinModelTableName() {\r
+ return berlinModelTableName;\r
+ }\r
+\r
+ /**\r
+ * @param berlinModelTableName the berlinModelTableName to set\r
+ */\r
+ public void setBerlinModelTableName(String berlinModelTableName) {\r
+ this.berlinModelTableName = berlinModelTableName;\r
+ }\r
+ \r
+ \r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 11.05.2009\r
+ * @version 1.0\r
+ */\r
+public class BerlinModelExportState<CONFIG extends BerlinModelExportConfigurator> extends DbExportState<CONFIG>{\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(BerlinModelExportState.class);\r
+ \r
+ private Integer nextRefDetailId = null;\r
+ private Integer nextFactCategoryId = null;\r
+ \r
+ /**\r
+ * @return the nextRefDetailId\r
+ */\r
+ public Integer getNextRefDetailId() {\r
+ if (nextRefDetailId == null){\r
+ //TODO\r
+ nextRefDetailId = 1;\r
+ }\r
+ return nextRefDetailId++;\r
+ }\r
+ \r
+ /**\r
+ * @return the nextRefDetailId\r
+ */\r
+ public Integer getNextFactCategoryId() {\r
+ if (nextFactCategoryId == null){\r
+ //TODO\r
+ nextFactCategoryId = 30;\r
+ }\r
+ return nextFactCategoryId++;\r
+ }\r
+\r
+\r
+ /**\r
+ * @param nextRefDetailId the nextRefDetailId to set\r
+ */\r
+ public void setNextFactCategoryId(Integer nextFactCategoryId) {\r
+ this.nextFactCategoryId = nextFactCategoryId;\r
+ }\r
+\r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.SQLException;\r
+import java.util.List;\r
+import java.util.Map;\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.common.CdmUtils;\r
+import eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.CreatedAndNotesMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbObjectMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IdMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.RefDetailMapper;\r
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 20.03.2008\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class BerlinModelFactExport extends BerlinModelExportBase {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelFactExport.class);\r
+\r
+ private static int modCount = 2500;\r
+ private static final String dbTableName = "Fact";\r
+ private static final String pluralString = "Facts";\r
+ private static final Class<? extends CdmBase> standardMethodParameter = TextData.class;\r
+\r
+ public BerlinModelFactExport(){\r
+ super();\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IExportConfigurator config){\r
+ boolean result = true;\r
+ logger.warn("Checking for " + pluralString + " not yet implemented");\r
+ //result &= checkArticlesWithoutJournal(bmiConfig);\r
+ //result &= checkPartOfJournal(bmiConfig);\r
+ \r
+ return result;\r
+ }\r
+ \r
+ private BerlinModelExportMapping getMapping(){\r
+ String tableName = dbTableName;\r
+ BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);\r
+ mapping.addMapper(IdMapper.NewInstance("FactId"));\r
+ \r
+ \r
+// mapping.addMapper(DbObjectMapper.NewInstance("name", "PTNameFk"));\r
+// mapping.addMapper(DbObjectMapper.NewInstance("sec", "PTRefFk"));\r
+ \r
+ mapping.addMapper(MethodMapper.NewInstance("PTNameFk", this.getClass(), "getPTNameFk", TextData.class, DbExportState.class));\r
+ mapping.addMapper(MethodMapper.NewInstance("PTRefFk", this.getClass(), "getPTRefFk", TextData.class, DbExportState.class));\r
+ \r
+ mapping.addMapper(MethodMapper.NewInstance("Fact", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("FactCategoryFk", this));\r
+ \r
+ mapping.addMapper(DbObjectMapper.NewInstance("citation", "FactRefFk"));\r
+ mapping.addMapper(RefDetailMapper.NewInstance("citationMicroReference","citation", "FactRefDetailFk"));\r
+\r
+ mapping.addMapper(DbObjectMapper.NewInstance("citation", "PTDesignationRefFk"));\r
+ mapping.addMapper(RefDetailMapper.NewInstance("citationMicroReference","citation", "PTDesignationRefDetailFk"));\r
+\r
+ mapping.addMapper(CreatedAndNotesMapper.NewInstance());\r
+\r
+ \r
+ \r
+ \r
+ //TODO\r
+// designationRef\r
+// doubtful\r
+// publish\r
+// TextData t = null;\r
+// t.get\r
+ return mapping;\r
+ }\r
+ \r
+ protected boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ try{\r
+ logger.info("start make " + pluralString + " ...");\r
+ boolean success = true ;\r
+ doDelete(state);\r
+ \r
+ TransactionStatus txStatus = startTransaction(true);\r
+ \r
+ List<DescriptionBase> list = getDescriptionService().list(1000000000, 0);\r
+ \r
+ BerlinModelExportMapping mapping = getMapping();\r
+ mapping.initialize(state);\r
+ \r
+ int count = 0;\r
+ for (DescriptionBase<?> desc : list){\r
+ for (DescriptionElementBase descEl : desc.getElements()){\r
+ doCount(count++, modCount, pluralString);\r
+ if (descEl.isInstanceOf(TextData.class)){\r
+ success &= mapping.invoke(descEl); \r
+ }else{\r
+ logger.warn (descEl.getClass().getSimpleName() + " not yet supported for Fact Export.");\r
+ }\r
+ }\r
+ }\r
+ commitTransaction(txStatus);\r
+ logger.info("end make " + pluralString + " ...");\r
+ \r
+ return success;\r
+ }catch(SQLException e){\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage());\r
+ return false;\r
+ }\r
+ }\r
+\r
+ \r
+\r
+ \r
+ protected boolean doDelete(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ BerlinModelExportConfigurator bmeConfig = state.getConfig();\r
+ \r
+ String sql;\r
+ Source destination = bmeConfig.getDestination();\r
+ //Fact\r
+ sql = "DELETE FROM Fact";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+\r
+ return true;\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IExportConfigurator config){\r
+ return ! ((BerlinModelExportConfigurator)config).isDoTaxonNames();\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static Integer getFactCategoryFk(TextData textData){\r
+ Feature feature = textData.getFeature();\r
+ Integer catFk = BerlinModelTransformer.textData2FactCategoryFk(feature);\r
+ catFk = 302;\r
+ if (catFk == null){\r
+ //catFk = findCategory(feature);\r
+ }\r
+ if (catFk == null){\r
+ //catFk = insertCategory(feature);\r
+ }\r
+ return catFk;\r
+ }\r
+ \r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static Integer getPTNameFk(TextData textData, DbExportState<?> state){\r
+ return getObjectFk(textData, state, true);\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static Integer getPTRefFk(TextData textData, DbExportState<?> state){\r
+ return getObjectFk(textData, state, false);\r
+ }\r
+\r
+ private static Integer getObjectFk(TextData textData, DbExportState<?> state, boolean isName){\r
+ DescriptionBase<?> desc = textData.getInDescription();\r
+ if (desc.isInstanceOf(TaxonDescription.class)){\r
+ TaxonDescription taxonDesc = (TaxonDescription)desc;\r
+ Taxon taxon = taxonDesc.getTaxon();\r
+ if (taxon != null){\r
+ CdmBase cdmBase = (isName) ? taxon.getName(): taxon.getSec();\r
+ return state.getDbId(cdmBase);\r
+ }\r
+ }\r
+ logger.warn("No taxon found for description: " + textData.toString());\r
+ return null;\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static String getFact(TextData textData){\r
+// Map<Language, LanguageString> map = textData.getMultilanguageText();\r
+ Language preferredLanguage = null;\r
+\r
+ String result = textData.getText(Language.DEFAULT());\r
+ if (result == null){\r
+ Map<Language, LanguageString> map = textData.getMultilanguageText();\r
+ for (Language language : map.keySet()){\r
+ String tmp = textData.getText(language);\r
+ if (! CdmUtils.Nz(tmp).trim().equals("")){\r
+ result = tmp;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()\r
+ */\r
+ @Override\r
+ public Class<? extends CdmBase> getStandardMethodParameter() {\r
+ return standardMethodParameter;\r
+ }\r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.SQLException;\r
+import java.util.List;\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.berlinModel.BerlinModelTransformer;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.CreatedAndNotesMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbObjectMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IdMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.RefDetailMapper;\r
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
+import eu.etaxonomy.cdm.model.name.HybridRelationship;\r
+import eu.etaxonomy.cdm.model.name.NameRelationship;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 20.03.2008\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class BerlinModelNameRelationExport extends BerlinModelExportBase {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelNameRelationExport.class);\r
+\r
+ private static int modCount = 1000;\r
+ private static final String dbTableName = "RelName";\r
+ private static final String pluralString = "NameRelationships";\r
+ private static final Class<? extends CdmBase> standardMethodParameter = NameRelationship.class;\r
+\r
+\r
+ public BerlinModelNameRelationExport(){\r
+ super();\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IExportConfigurator config){\r
+ boolean result = true;\r
+ logger.warn("Checking for " + pluralString + " not yet implemented");\r
+ //result &= checkArticlesWithoutJournal(bmiConfig);\r
+ //result &= checkPartOfJournal(bmiConfig);\r
+ \r
+ return result;\r
+ }\r
+ \r
+ private BerlinModelExportMapping getMapping(){\r
+ String tableName = dbTableName;\r
+ BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);\r
+ mapping.addMapper(IdMapper.NewInstance("RelNameId"));\r
+\r
+ mapping.addMapper(DbObjectMapper.NewInstance("fromName", "NameFk1"));\r
+ mapping.addMapper(DbObjectMapper.NewInstance("toName", "NameFk1"));\r
+\r
+ \r
+ mapping.addMapper(MethodMapper.NewInstance("RelNameQualifierFk", this));\r
+ \r
+ mapping.addMapper(DbObjectMapper.NewInstance("citation", "RefFk"));\r
+ mapping.addMapper(RefDetailMapper.NewInstance("citationMicroReference","citation", "RefDetailFk"));\r
+ mapping.addMapper(CreatedAndNotesMapper.NewInstance());\r
+ \r
+// NameRelationship r = null;\r
+// r.getFromName()\r
+ \r
+ return mapping;\r
+ }\r
+ \r
+ protected boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ try{\r
+ logger.info("start make " + pluralString + " ...");\r
+ boolean success = true ;\r
+ doDelete(state);\r
+ \r
+ TransactionStatus txStatus = startTransaction(true);\r
+ \r
+ List<RelationshipBase> list = getNameService().getAllRelationships(100000000, 0);\r
+ \r
+ BerlinModelExportMapping mapping = getMapping();\r
+ mapping.initialize(state);\r
+ \r
+ int count = 0;\r
+ for (RelationshipBase<?,?,?> rel : list){\r
+ if (rel.isInstanceOf(NameRelationship.class) || rel.isInstanceOf(HybridRelationship.class )){\r
+ doCount(count++, modCount, pluralString);\r
+ success &= mapping.invoke(rel);\r
+ }\r
+ }\r
+ commitTransaction(txStatus);\r
+ logger.info("end make " + pluralString + " ...");\r
+ return success;\r
+ }catch(SQLException e){\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage());\r
+ return false;\r
+ }\r
+ }\r
+\r
+ \r
+ protected boolean doDelete(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ BerlinModelExportConfigurator bmeConfig = state.getConfig();\r
+ \r
+ String sql;\r
+ Source destination = bmeConfig.getDestination();\r
+ //RelPTaxon\r
+ sql = "DELETE FROM RelPTaxon";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+\r
+ return true;\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IExportConfigurator config){\r
+ return ! ((BerlinModelExportConfigurator)config).isDoTaxonNames();\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static Integer getRelNameQualifierFk(RelationshipBase<?, ?, ?> rel){\r
+ return BerlinModelTransformer.nameRel2RelNameQualifierFk(rel);\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()\r
+ */\r
+ @Override\r
+ public Class<? extends CdmBase> getStandardMethodParameter() {\r
+ return standardMethodParameter;\r
+ }\r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.SQLException;\r
+import java.util.List;\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.berlinModel.BerlinModelTransformer;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.CreatedAndNotesMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbObjectMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IdMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.RefDetailMapper;\r
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
+import eu.etaxonomy.cdm.model.name.HybridRelationship;\r
+import eu.etaxonomy.cdm.model.name.NameRelationship;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 20.03.2008\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class BerlinModelNomStatusExport extends BerlinModelExportBase {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelNomStatusExport.class);\r
+\r
+ private static int modCount = 1000;\r
+ private static final String dbTableName = "NomStatusRel";\r
+ private static final String pluralString = "NomStatus";\r
+ private static final Class<? extends CdmBase> standardMethodParameter = NomenclaturalStatus.class;\r
+\r
+\r
+ public BerlinModelNomStatusExport(){\r
+ super();\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IExportConfigurator config){\r
+ boolean result = true;\r
+ logger.warn("Checking for " + pluralString + " not yet implemented");\r
+ //result &= checkArticlesWithoutJournal(bmiConfig);\r
+ //result &= checkPartOfJournal(bmiConfig);\r
+ \r
+ return result;\r
+ }\r
+ \r
+ private BerlinModelExportMapping getMapping(){\r
+ String tableName = dbTableName;\r
+ BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);\r
+// NameFk\r
+// NomStatusFk\r
+// NomStatusRefFk\r
+// NomStatusRefDetailFk\r
+// DoubtfulFlag\r
+ \r
+ mapping.addMapper(DbObjectMapper.NewInstance("fromName", "NameFk"));\r
+ mapping.addMapper(DbObjectMapper.NewInstance("toName", "NameFk1"));\r
+\r
+ \r
+ mapping.addMapper(MethodMapper.NewInstance("NomStatusFk", this));\r
+ \r
+ mapping.addMapper(DbObjectMapper.NewInstance("citation", "NomStatusRefFk"));\r
+ mapping.addMapper(RefDetailMapper.NewInstance("citationMicroReference","citation", "NomStatusRefDetailFk"));\r
+ \r
+ mapping.addMapper(CreatedAndNotesMapper.NewInstance());\r
+ \r
+ NomenclaturalStatus r = null;\r
+ \r
+ \r
+ return mapping;\r
+ }\r
+ \r
+ protected boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ try{\r
+ logger.info("start make " + pluralString + " ...");\r
+ boolean success = true ;\r
+ doDelete(state);\r
+ \r
+ TransactionStatus txStatus = startTransaction(true);\r
+ \r
+ List<RelationshipBase> list = getNameService().getAllRelationships(100000000, 0);\r
+ \r
+ BerlinModelExportMapping mapping = getMapping();\r
+ mapping.initialize(state);\r
+ \r
+ int count = 0;\r
+ for (RelationshipBase<?,?,?> rel : list){\r
+ if (rel.isInstanceOf(NameRelationship.class) || rel.isInstanceOf(HybridRelationship.class )){\r
+ doCount(count++, modCount, pluralString);\r
+ success &= mapping.invoke(rel);\r
+ }\r
+ }\r
+ commitTransaction(txStatus);\r
+ logger.info("end make " + pluralString + " ...");\r
+ return success;\r
+ }catch(SQLException e){\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage());\r
+ return false;\r
+ }\r
+ }\r
+\r
+ \r
+ protected boolean doDelete(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ BerlinModelExportConfigurator bmeConfig = state.getConfig();\r
+ \r
+ String sql;\r
+ Source destination = bmeConfig.getDestination();\r
+ //RelPTaxon\r
+ sql = "DELETE FROM RelPTaxon";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+\r
+ return true;\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IExportConfigurator config){\r
+ return ! ((BerlinModelExportConfigurator)config).isDoTaxonNames();\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static Integer getNomStatusFk(NomenclaturalStatus status){\r
+ return BerlinModelTransformer.nomStatus2nomStatusFk(status);\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()\r
+ */\r
+ @Override\r
+ public Class<? extends CdmBase> getStandardMethodParameter() {\r
+ return standardMethodParameter;\r
+ }\r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.Connection;\r
+import java.sql.PreparedStatement;\r
+import java.sql.SQLException;\r
+import java.util.List;\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.berlinModel.BerlinModelTransformer;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.CreatedAndNotesMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbBooleanMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbObjectMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbStringMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IdMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;\r
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.reference.Article;\r
+import eu.etaxonomy.cdm.model.reference.BookSection;\r
+import eu.etaxonomy.cdm.model.reference.InProceedings;\r
+import eu.etaxonomy.cdm.model.reference.PrintedUnitBase;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.StrictReferenceBase;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 20.03.2008\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class BerlinModelReferenceExport extends BerlinModelExportBase {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelReferenceExport.class);\r
+\r
+ private static int modCount = 1000;\r
+ private static final String dbTableName = "Reference";\r
+ private static final String pluralString = "references";\r
+ private static final Class<? extends CdmBase> standardMethodParameter = StrictReferenceBase.class;\r
+\r
+ public BerlinModelReferenceExport(){\r
+ super();\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IExportConfigurator config){\r
+ boolean result = true;\r
+ logger.warn("Checking for Authors not yet implemented");\r
+ //result &= checkArticlesWithoutJournal(bmiConfig);\r
+ //result &= checkPartOfJournal(bmiConfig);\r
+ \r
+ return result;\r
+ }\r
+ \r
+ private BerlinModelExportMapping getMapping(){\r
+ String tableName = dbTableName;\r
+ BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);\r
+ mapping.addMapper(IdMapper.NewInstance("RefId"));\r
+ mapping.addMapper(MethodMapper.NewInstance("RefCategoryFk", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("RefCache", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("NomRefCache", this));\r
+ mapping.addMapper(DbBooleanMapper.NewFalseInstance("isProtectedTitleCache","PreliminaryFlag"));\r
+\r
+ mapping.addMapper(DbObjectMapper.NewInstance("authorTeam", "NomAuthorTeamFk"));\r
+ mapping.addMapper(MethodMapper.NewInstance("RefAuthorString", this));\r
+ \r
+ mapping.addMapper(DbStringMapper.NewInstance("title", "Title"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("title", "NomTitleAbbrev"));\r
+ \r
+ mapping.addMapper(DbStringMapper.NewFacultativeInstance("edition", "Edition"));\r
+ mapping.addMapper(DbStringMapper.NewFacultativeInstance("volume", "Volume"));\r
+ mapping.addMapper(DbStringMapper.NewFacultativeInstance("series", "Series"));\r
+ mapping.addMapper(DbStringMapper.NewFacultativeInstance("pages", "PageString"));\r
+ mapping.addMapper(DbStringMapper.NewFacultativeInstance("isbn", "ISBN"));\r
+ mapping.addMapper(DbStringMapper.NewFacultativeInstance("issn", "ISSN"));\r
+ \r
+\r
+ \r
+ mapping.addMapper(CreatedAndNotesMapper.NewInstance());\r
+ \r
+// ,[Series] ??\r
+// ,[RefYear]\r
+// ,[DateString]\r
+// ,[URL]\r
+// ,[ExportDate]\r
+// ,[PublicationTown]\r
+// ,[Publisher]\r
+// ,[ThesisFlag]\r
+// ,[RefDepositedAt]\r
+// ,[InformalRefCategory]\r
+// ,[IsPaper]\r
+// ,[RefSourceFk]\r
+// ,[IdInSource]\r
+// ,[NomStandard]\r
+\r
+ \r
+ return mapping;\r
+ }\r
+ \r
+ protected boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ try{\r
+ logger.info("start make "+pluralString+" ...");\r
+ boolean success = true ;\r
+ //Prepare InRefStatement\r
+ String inRefSql = "UPDATE Reference SET InRefFk = ? WHERE RefId = ?"; \r
+ Connection con = state.getConfig().getDestination().getConnection();\r
+ PreparedStatement stmt = con.prepareStatement(inRefSql);\r
+\r
+ doDelete(state);\r
+ \r
+ TransactionStatus txStatus = startTransaction(true);\r
+ \r
+ List<ReferenceBase> list = getReferenceService().list(100000000, 0);\r
+ \r
+ BerlinModelExportMapping mapping = getMapping();\r
+ mapping.initialize(state);\r
+ \r
+ int count = 0;\r
+ for (ReferenceBase<?> ref : list){\r
+ doCount(count++, modCount, pluralString);\r
+ success &= mapping.invoke(ref);\r
+ }\r
+ logger.info("start make inRefences ...");\r
+ count = 0;\r
+ for (ReferenceBase<?> ref : list){\r
+ doCount(count++, modCount, "inReferences");\r
+ success &= invokeInRef(ref, state, stmt);\r
+ }\r
+ \r
+ commitTransaction(txStatus);\r
+ logger.info("end make "+pluralString+" ...");\r
+ \r
+ return success;\r
+ }catch(SQLException e){\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage());\r
+ return false;\r
+ }\r
+ }\r
+\r
+ protected boolean invokeInRef(ReferenceBase ref, BerlinModelExportState<BerlinModelExportConfigurator> state, PreparedStatement stmt) {\r
+ if (ref == null){\r
+ return true;\r
+ }else{\r
+ ReferenceBase<?> inRef = getInRef(ref);\r
+ if (inRef == null){\r
+ return true;\r
+ }else{\r
+ Integer inRefId = state.getDbId(inRef);\r
+ Integer refId = state.getDbId(ref);\r
+ try {\r
+ stmt.setInt(1, inRefId);\r
+ stmt.setInt(2, refId);\r
+ stmt.executeUpdate();\r
+ return true;\r
+ } catch (SQLException e) {\r
+ logger.error("SQLException during inRef invoke for reference " + ref.getTitleCache() + ": " + e.getMessage());\r
+ e.printStackTrace();\r
+ return false;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ private ReferenceBase<?> getInRef(ReferenceBase<?> ref){\r
+ ReferenceBase<?> inRef;\r
+ if (ref instanceof Article){\r
+ return ((Article)ref).getInJournal();\r
+ }else if (ref instanceof BookSection){\r
+ return ((BookSection)ref).getInBook();\r
+ }else if (ref instanceof InProceedings){\r
+ return ((InProceedings)ref).getInProceedings();\r
+ }else if (ref instanceof PrintedUnitBase){\r
+ return ((PrintedUnitBase)ref).getInSeries();\r
+ }else{\r
+ return null;\r
+ }\r
+ \r
+ }\r
+ \r
+ protected boolean doDelete(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ BerlinModelExportConfigurator bmeConfig = state.getConfig();\r
+ \r
+ String sql;\r
+ Source destination = bmeConfig.getDestination();\r
+\r
+ //RelReference\r
+ sql = "DELETE FROM RelReference";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //References\r
+ sql = "DELETE FROM Reference";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ return true;\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IExportConfigurator config){\r
+ return ! ((BerlinModelExportConfigurator)config).isDoTaxonNames();\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ private static Integer getRefCategoryFk(StrictReferenceBase<?> ref){\r
+ return BerlinModelTransformer.ref2refCategoryId(ref);\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ private static String getRefCache(StrictReferenceBase<?> ref){\r
+ if (ref.isProtectedTitleCache()){\r
+ return ref.getTitleCache();\r
+ }else{\r
+ return null;\r
+ }\r
+ }\r
+\r
+ //called by MethodMapper\r
+ private static String getNomRefCache(StrictReferenceBase<?> ref){\r
+ if (ref.isProtectedTitleCache()){\r
+ return ref.getTitleCache();\r
+ }else{\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ private static String getRefAuthorString(StrictReferenceBase<?> ref){\r
+ if (ref == null){\r
+ return null;\r
+ }else{\r
+ return (ref.getAuthorTeam() == null)? null: ref.getAuthorTeam().getTitleCache();\r
+ }\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ private static Boolean getPreliminaryFlag(StrictReferenceBase<?> ref){\r
+ if (ref.isProtectedTitleCache()){\r
+ return true;\r
+ }else{\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()\r
+ */\r
+ @Override\r
+ public Class<? extends CdmBase> getStandardMethodParameter() {\r
+ return standardMethodParameter;\r
+ }\r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.SQLException;\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hsqldb.Types;\r
+import org.springframework.stereotype.Component;\r
+import org.springframework.transaction.TransactionStatus;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.CreatedAndNotesMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbBooleanMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbNullMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbObjectMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;\r
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 20.03.2008\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class BerlinModelTaxonExport extends BerlinModelExportBase {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelTaxonExport.class);\r
+\r
+ private static int modCount = 1000;\r
+ private static final String dbTableName = "PTaxon";\r
+ private static final String pluralString = "Taxa";\r
+ private static final Class<? extends CdmBase> standardMethodParameter = TaxonBase.class;\r
+\r
+ public BerlinModelTaxonExport(){\r
+ super();\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IExportConfigurator config){\r
+ boolean result = true;\r
+ logger.warn("Checking for " + pluralString + " not yet implemented");\r
+ //result &= checkArticlesWithoutJournal(bmiConfig);\r
+ //result &= checkPartOfJournal(bmiConfig);\r
+ \r
+ return result;\r
+ }\r
+ \r
+ private BerlinModelExportMapping getMapping(){\r
+ String tableName = dbTableName;\r
+ BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);\r
+ mapping.addMapper(DbObjectMapper.NewInstance("name", "PTNameFk"));\r
+ mapping.addMapper(DbObjectMapper.NewInstance("sec", "PTRefFk"));\r
+ mapping.addMapper(DbNullMapper.NewInstance("Detail", Types.VARCHAR));\r
+ mapping.addMapper(MethodMapper.NewInstance("StatusFk", this));\r
+ mapping.addMapper(DbBooleanMapper.NewInstance("isDoubtful", "DoubtfulFlag"));\r
+ mapping.addMapper(CreatedAndNotesMapper.NewInstance());\r
+\r
+ //TODO\r
+// ,[RIdentifier]\r
+// ,[IdInSource]\r
+// ,ProParte etc.\r
+// ,[NamePhrase]\r
+// ,[UseNameCacheFlag]\r
+// ,[PublishFlag]\r
+// TaxonBase<?> n = null;\r
+// n.isDoubtful()\r
+ return mapping;\r
+ }\r
+ \r
+ protected boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ try{\r
+ logger.info("start make " + pluralString + " ...");\r
+ boolean success = true ;\r
+ doDelete(state);\r
+ \r
+ TransactionStatus txStatus = startTransaction(true);\r
+ \r
+ List<TaxonBase> list = getTaxonService().list(100000000, 0);\r
+ \r
+ BerlinModelExportMapping mapping = getMapping();\r
+ mapping.initialize(state);\r
+ \r
+ int count = 0;\r
+ for (TaxonBase<?> taxon : list){\r
+ doCount(count++, modCount, pluralString);\r
+ success &= mapping.invoke(taxon);\r
+ }\r
+ commitTransaction(txStatus);\r
+ logger.info("end make " + pluralString + " ...");\r
+ \r
+ return success;\r
+ }catch(SQLException e){\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage());\r
+ return false;\r
+ }\r
+ }\r
+\r
+ \r
+\r
+ \r
+ protected boolean doDelete(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ BerlinModelExportConfigurator bmeConfig = state.getConfig();\r
+ \r
+ String sql;\r
+ Source destination = bmeConfig.getDestination();\r
+ //RelPTaxon\r
+ sql = "DELETE FROM RelPTaxon";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //Fact\r
+ sql = "DELETE FROM Fact";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //PTaxon\r
+ sql = "DELETE FROM PTaxon";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+\r
+ return true;\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IExportConfigurator config){\r
+ return ! ((BerlinModelExportConfigurator)config).isDoTaxonNames();\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static Integer getStatusFk(TaxonBase<?> taxon){\r
+ return BerlinModelTransformer.taxonBase2statusFk(taxon);\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()\r
+ */\r
+ @Override\r
+ public Class<? extends CdmBase> getStandardMethodParameter() {\r
+ return standardMethodParameter;\r
+ }\r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.SQLException;\r
+import java.util.List;\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.berlinModel.BerlinModelTransformer;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.CreatedAndNotesMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbBooleanMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbObjectMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbStringMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IdMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.RefDetailMapper;\r
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.name.NonViralName;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 20.03.2008\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class BerlinModelTaxonNameExport extends BerlinModelExportBase {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelTaxonNameExport.class);\r
+\r
+ private static int modCount = 2500;\r
+ private static final String dbTableName = "Name";\r
+ private static final String pluralString = "TaxonNames";\r
+ private static final Class<? extends CdmBase> standardMethodParameter = NonViralName.class;\r
+\r
+ public BerlinModelTaxonNameExport(){\r
+ super();\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IExportConfigurator config){\r
+ boolean result = true;\r
+ logger.warn("Checking for " + pluralString + " not yet implemented");\r
+ //result &= checkArticlesWithoutJournal(bmiConfig);\r
+ //result &= checkPartOfJournal(bmiConfig);\r
+ \r
+ return result;\r
+ }\r
+ \r
+ private BerlinModelExportMapping getMapping(){\r
+ String tableName = dbTableName;\r
+ BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);\r
+ mapping.addMapper(IdMapper.NewInstance("NameId"));\r
+ mapping.addMapper(MethodMapper.NewInstance("RankFk", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("SupraGenericName", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("Genus", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("NameCache", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("FullNameCache", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("PreliminaryFlag", this));\r
+ mapping.addMapper(DbStringMapper.NewInstance("infraGenericEpithet", "GenusSubDivisionEpi"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("SpecificEpithet", "SpeciesEpi"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("infraSpecificEpithet", "InfraSpeciesEpi"));\r
+ mapping.addMapper(DbStringMapper.NewInstance("appendedPhrase", "UnnamedNamePhrase"));\r
+ mapping.addMapper(DbBooleanMapper.NewInstance("isHybridFormula", "HybridFormulaFlag", false, false));\r
+ mapping.addMapper(DbBooleanMapper.NewInstance("isMonomHybrid", "MonomHybFlag", false, false));\r
+ mapping.addMapper(DbBooleanMapper.NewInstance("isBinomHybrid", "BinomHybFlag", false, false));\r
+ mapping.addMapper(DbBooleanMapper.NewInstance("isTrinomHybrid", "TrinomHybFlag", false, false));\r
+ mapping.addMapper(DbStringMapper.NewFacultativeInstance("cultivarName", "CultivarName"));\r
+ \r
+ mapping.addMapper(DbObjectMapper.NewInstance("combinationAuthorTeam", "AuthorTeamFk"));\r
+ mapping.addMapper(DbObjectMapper.NewInstance("exCombinationAuthorTeam", "ExAuthorTeamFk"));\r
+ mapping.addMapper(DbObjectMapper.NewInstance("basionymAuthorTeam", "BasAuthorTeamFk"));\r
+ mapping.addMapper(DbObjectMapper.NewInstance("exBasionymAuthorTeam", "ExBasAuthorTeamFk"));\r
+ \r
+ mapping.addMapper(DbObjectMapper.NewInstance("nomenclaturalReference", "NomRefFk"));\r
+ mapping.addMapper(RefDetailMapper.NewInstance("nomenclaturalMicroReference","nomenclaturalReference", "NomRefDetailFk"));\r
+ \r
+ \r
+ mapping.addMapper(CreatedAndNotesMapper.NewInstance(false));\r
+ //TODO\r
+ //CultivarGroupName\r
+ //NameSourceRefFk\r
+ // ,[Source_ACC]\r
+ \r
+ //publicationYear\r
+ //originalPublicationYear\r
+ //breed\r
+ NonViralName<?> n = null;\r
+ //n.getNomenclaturalMicroReference()\r
+ return mapping;\r
+ }\r
+ \r
+ protected boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ try{\r
+ logger.info("start make "+pluralString+" ...");\r
+ boolean success = true ;\r
+ doDelete(state);\r
+ \r
+ TransactionStatus txStatus = startTransaction(true);\r
+ \r
+ List<TaxonNameBase> names = getNameService().list(100000000, 0);\r
+ \r
+ BerlinModelExportMapping mapping = getMapping();\r
+ mapping.initialize(state);\r
+ \r
+ int count = 0;\r
+ for (TaxonNameBase<?,?> name : names){\r
+ doCount(count++, modCount, pluralString);\r
+ success &= mapping.invoke(name);\r
+ //TODO rank = null or rank < genus and genusOrUninomial != null\r
+ }\r
+ commitTransaction(txStatus);\r
+ logger.info("end make " + pluralString+ " ...");\r
+ \r
+ return success;\r
+ }catch(SQLException e){\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage());\r
+ return false;\r
+ }\r
+ }\r
+\r
+ \r
+\r
+ \r
+ protected boolean doDelete(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ BerlinModelExportConfigurator bmeConfig = state.getConfig();\r
+ \r
+ String sql;\r
+ Source destination = bmeConfig.getDestination();\r
+ //RelPTaxon\r
+ sql = "DELETE FROM RelPTaxon";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //Fact\r
+ sql = "DELETE FROM Fact";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //PTaxon\r
+ sql = "DELETE FROM PTaxon";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ \r
+ //NameHistory\r
+ sql = "DELETE FROM NameHistory";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //RelName\r
+ sql = "DELETE FROM RelName";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //NomStatusRel\r
+ sql = "DELETE FROM NomStatusRel";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ //Name\r
+ sql = "DELETE FROM Name";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ return true;\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IExportConfigurator config){\r
+ return ! ((BerlinModelExportConfigurator)config).isDoTaxonNames();\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static Integer getRankFk(NonViralName<?> name){\r
+ return BerlinModelTransformer.rank2RankId(name.getRank());\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static String getSupraGenericName(NonViralName<?> name){\r
+ if (name.isSupraGeneric()){\r
+ return name.getGenusOrUninomial();\r
+ }else{\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static String getGenus(NonViralName<?> name){\r
+ if (! name.isSupraGeneric()){\r
+ return name.getGenusOrUninomial();\r
+ }else{\r
+ return null;\r
+ }\r
+ }\r
+\r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static String getNameCache(NonViralName<?> name){\r
+ if (name.isProtectedNameCache()){\r
+ return name.getNameCache();\r
+ }else{\r
+ return null;\r
+ }\r
+ }\r
+\r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static String getFullNameCache(NonViralName<?> name){\r
+ if (name.isProtectedTitleCache()){\r
+ return name.getTitleCache();\r
+ }else{\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static Boolean getPreliminaryFlag(NonViralName<?> name){\r
+ if (name.isProtectedTitleCache() || name.isProtectedNameCache()){\r
+ if (name.isProtectedTitleCache() && name.isProtectedNameCache()){\r
+ logger.warn("protectedTitleCache and protectedNameCache do not have the same value for name " + name.getTitleCache() + ". This can not be mapped appropriately to the Berlin Model ");\r
+ }\r
+ return true;\r
+ }else{\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()\r
+ */\r
+ @Override\r
+ public Class<? extends CdmBase> getStandardMethodParameter() {\r
+ return standardMethodParameter;\r
+ }\r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.sql.SQLException;\r
+import java.util.List;\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.berlinModel.BerlinModelTransformer;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.CreatedAndNotesMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbObjectMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.IdMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;\r
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
+import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 20.03.2008\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class BerlinModelTaxonRelationExport extends BerlinModelExportBase {\r
+ private static final Logger logger = Logger.getLogger(BerlinModelTaxonRelationExport.class);\r
+\r
+ private static int modCount = 1000;\r
+ private static final String dbTableName = "RelPTaxon";\r
+ private static final String pluralString = "TaxonRelationships";\r
+ private static final Class<? extends CdmBase> standardMethodParameter = RelationshipBase.class;\r
+\r
+\r
+ public BerlinModelTaxonRelationExport(){\r
+ super();\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IExportConfigurator config){\r
+ boolean result = true;\r
+ logger.warn("Checking for " + pluralString + " not yet implemented");\r
+ //result &= checkArticlesWithoutJournal(bmiConfig);\r
+ //result &= checkPartOfJournal(bmiConfig);\r
+ \r
+ return result;\r
+ }\r
+ \r
+ private BerlinModelExportMapping getMapping(){\r
+ String tableName = dbTableName;\r
+ BerlinModelExportMapping mapping = new BerlinModelExportMapping(tableName);\r
+// mapping.addMapper(IdMapper.NewInstance("RelPTaxonId")); //is Identity column\r
+ \r
+ mapping.addMapper(MethodMapper.NewInstance("PTNameFk1", this.getClass(), "getPTNameFk1", standardMethodParameter, DbExportState.class));\r
+ mapping.addMapper(MethodMapper.NewInstance("PTRefFk1", this.getClass(), "getPTRefFk1", standardMethodParameter, DbExportState.class));\r
+ \r
+ mapping.addMapper(MethodMapper.NewInstance("PTNameFk2", this.getClass(), "getPTNameFk2", standardMethodParameter, DbExportState.class));\r
+ mapping.addMapper(MethodMapper.NewInstance("PTRefFk2", this.getClass(), "getPTRefFk2", standardMethodParameter, DbExportState.class));\r
+ \r
+ mapping.addMapper(MethodMapper.NewInstance("RelQualifierFk", this));\r
+ \r
+ mapping.addMapper(DbObjectMapper.NewInstance("citation", "RelRefFk"));\r
+// mapping.addMapper(RefDetailMapper.NewInstance("citationMicroReference","citation", "FactRefDetailFk"));\r
+ mapping.addMapper(CreatedAndNotesMapper.NewInstance());\r
+\r
+ return mapping;\r
+ }\r
+ \r
+ protected boolean doInvoke(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ try{\r
+ logger.info("start make " + pluralString + " ...");\r
+ boolean success = true ;\r
+ doDelete(state);\r
+ \r
+ TransactionStatus txStatus = startTransaction(true);\r
+ \r
+ List<RelationshipBase> list = getTaxonService().getAllRelationships(100000000, 0);\r
+ \r
+ BerlinModelExportMapping mapping = getMapping();\r
+ mapping.initialize(state);\r
+ \r
+ int count = 0;\r
+ for (RelationshipBase<?,?,?> rel : list){\r
+ if (rel.isInstanceOf(TaxonRelationship.class) || rel.isInstanceOf(SynonymRelationship.class)){\r
+ doCount(count++, modCount, pluralString);\r
+ success &= mapping.invoke(rel);\r
+ }\r
+ }\r
+ commitTransaction(txStatus);\r
+ logger.info("end make " + pluralString + " ...");\r
+ return success;\r
+ }catch(SQLException e){\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage());\r
+ return false;\r
+ }\r
+ }\r
+\r
+ \r
+ protected boolean doDelete(BerlinModelExportState<BerlinModelExportConfigurator> state){\r
+ BerlinModelExportConfigurator bmeConfig = state.getConfig();\r
+ \r
+ String sql;\r
+ Source destination = bmeConfig.getDestination();\r
+ //RelPTaxon\r
+ sql = "DELETE FROM RelPTaxon";\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+\r
+ return true;\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IExportConfigurator config){\r
+ return ! ((BerlinModelExportConfigurator)config).isDoTaxonNames();\r
+ }\r
+ \r
+ //called by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static Integer getRelQualifierFk(RelationshipBase<?, ?, ?> rel){\r
+ return BerlinModelTransformer.taxRelation2relPtQualifierFk(rel);\r
+ }\r
+ \r
+ @SuppressWarnings("unused")\r
+ private static Integer getPTNameFk1(RelationshipBase<?, ?, ?> rel, DbExportState<?> state){\r
+ return getObjectFk(rel, state, true, true);\r
+ }\r
+ \r
+ @SuppressWarnings("unused")\r
+ private static Integer getPTRefFk1(RelationshipBase<?, ?, ?> rel, DbExportState<?> state){\r
+ return getObjectFk(rel, state, false, true);\r
+ }\r
+ \r
+ @SuppressWarnings("unused")\r
+ private static Integer getPTNameFk2(RelationshipBase<?, ?, ?> rel, DbExportState<?> state){\r
+ return getObjectFk(rel, state, true, false);\r
+ }\r
+ \r
+ @SuppressWarnings("unused")\r
+ private static Integer getPTRefFk2(RelationshipBase<?, ?, ?> rel, DbExportState<?> state){\r
+ return getObjectFk(rel, state, false, false);\r
+ }\r
+\r
+ private static Integer getObjectFk(RelationshipBase<?, ?, ?> rel, DbExportState<?> state, boolean isName, boolean isFrom){\r
+ TaxonBase<?> taxon = null;\r
+ if (rel.isInstanceOf(TaxonRelationship.class)){\r
+ TaxonRelationship tr = (TaxonRelationship)rel;\r
+ taxon = (isFrom) ? tr.getFromTaxon(): tr.getToTaxon();\r
+ }else if (rel.isInstanceOf(SynonymRelationship.class)){\r
+ SynonymRelationship sr = (SynonymRelationship)rel;\r
+ taxon = (isFrom) ? sr.getSynonym() : sr.getAcceptedTaxon();\r
+ }\r
+ if (taxon != null){\r
+ CdmBase cdmBase = (isName) ? taxon.getName(): taxon.getSec();\r
+ return state.getDbId(cdmBase);\r
+ }\r
+ logger.warn("No taxon found for relationship: " + rel.toString());\r
+ return null;\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase#getStandardMethodParameter()\r
+ */\r
+ @Override\r
+ public Class<? extends CdmBase> getStandardMethodParameter() {\r
+ return standardMethodParameter;\r
+ }\r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 11.05.2009\r
+ * @version 1.0\r
+ */\r
+public class DbExportState<CONFIG extends BerlinModelExportConfigurator> extends IoState<CONFIG> {\r
+ private static final Logger logger = Logger.getLogger(DbExportState.class);\r
+ \r
+ Map<UUID, Integer> dbIdMap = new HashMap<UUID, Integer>();\r
+ \r
+ \r
+ public void putDbId(CdmBase cdmBase, int dbId){\r
+ if (cdmBase != null){\r
+ dbIdMap.put(cdmBase.getUuid(), dbId);\r
+ }else{\r
+ logger.warn("CdmBase was (null) and could not be added to dbIdMap");\r
+ }\r
+ }\r
+ \r
+ public Integer getDbId(CdmBase cdmBase){\r
+ if (cdmBase != null){\r
+ return dbIdMap.get(cdmBase.getUuid());\r
+ }else{\r
+ logger.warn("CdmBase was (null). No entries in dbIdMap available");\r
+ return null;\r
+ }\r
+ }\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.io.common.IIoConfigurator;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 11.05.2009\r
+ * @version 1.0\r
+ */\r
+public class IoState<CONFIG extends IIoConfigurator> {\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(IoState.class);\r
+ \r
+ CONFIG config;\r
+ \r
+ /**\r
+ * @return the config\r
+ */\r
+ public CONFIG getConfig() {\r
+ return config;\r
+ }\r
+\r
+ /**\r
+ * @param config the config to set\r
+ */\r
+ public void setConfig(CONFIG config) {\r
+ this.config = config;\r
+ }\r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import java.sql.PreparedStatement;\r
+import java.sql.SQLException;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+import eu.etaxonomy.cdm.io.common.MultipleAttributeMapperBase;\r
+import eu.etaxonomy.cdm.model.common.AnnotatableEntity;\r
+import eu.etaxonomy.cdm.model.common.Annotation;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class CreatedAndNotesMapper extends MultipleAttributeMapperBase<DbSingleAttributeExportMapperBase<DbExportState<?>>> implements IDbExportMapper<DbExportState<?>>{\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(CreatedAndNotesMapper.class);\r
+ \r
+ public static CreatedAndNotesMapper NewInstance(){\r
+ return new CreatedAndNotesMapper(true);\r
+ }\r
+ \r
+ public static CreatedAndNotesMapper NewInstance(boolean withUpdate){\r
+ return new CreatedAndNotesMapper(withUpdate);\r
+ }\r
+\r
+ \r
+ /**\r
+ * @param dbAttributString\r
+ * @param cdmAttributeString\r
+ */\r
+ private CreatedAndNotesMapper(boolean withUpdate) {\r
+ singleMappers.add(DbStringMapper.NewInstance("createdBy", "Created_Who"));\r
+ singleMappers.add(DbDateMapper.NewInstance("created", "Created_When"));\r
+ singleMappers.add(MethodMapper.NewInstance("Notes", this.getClass(), "getNotes", AnnotatableEntity.class));\r
+ if (withUpdate){\r
+ singleMappers.add(DbStringMapper.NewInstance("updatedBy", "Updated_Who"));\r
+ singleMappers.add(DbDateMapper.NewInstance("updated", "Updated_When"));\r
+ }\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.IDbExportMapper#initialize(java.sql.PreparedStatement, eu.etaxonomy.cdm.io.berlinModel.out.mapper.IndexCounter, eu.etaxonomy.cdm.io.berlinModel.out.DbExportState)\r
+ */\r
+ public void initialize(PreparedStatement stmt, IndexCounter index, DbExportState<?> state, String tableName) {\r
+ for (DbSingleAttributeExportMapperBase<DbExportState<?>> mapper : singleMappers){\r
+ mapper.initialize(stmt, index, state, tableName);\r
+ } \r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.IDbExportMapper#invoke(eu.etaxonomy.cdm.model.common.CdmBase)\r
+ */\r
+ public boolean invoke(CdmBase cdmBase) throws SQLException {\r
+ boolean result = true;\r
+ for (DbSingleAttributeExportMapperBase<DbExportState<?>> mapper : singleMappers){\r
+ result &= mapper.invoke(cdmBase);\r
+ }\r
+ return result;\r
+ }\r
+ \r
+ //used by MethodMapper\r
+ @SuppressWarnings("unused")\r
+ private static String getNotes(AnnotatableEntity obj){\r
+ String result = "";\r
+ String separator = ";";\r
+ for (Annotation annotation :obj.getAnnotations()){\r
+ result = CdmUtils.concat(separator, result, annotation.getText());\r
+ }\r
+ return (result.trim().equals("")? null : result);\r
+ }\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import java.sql.SQLException;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hsqldb.Types;\r
+\r
+import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class DbBooleanMapper extends DbSingleAttributeExportMapperBase implements IDbExportMapper {\r
+ private static final Logger logger = Logger.getLogger(DbBooleanMapper.class);\r
+ \r
+ public static DbBooleanMapper NewInstance(String cdmAttributeString, String dbAttributeString){\r
+ return new DbBooleanMapper(cdmAttributeString, dbAttributeString, null, false);\r
+ }\r
+\r
+ public static DbBooleanMapper NewInstance(String cdmAttributeString, String dbAttributeString, Boolean defaultValue){\r
+ return new DbBooleanMapper(cdmAttributeString, dbAttributeString, defaultValue, false);\r
+ }\r
+ \r
+ public static DbBooleanMapper NewFalseInstance(String cdmAttributeString, String dbAttributeString){\r
+ return new DbBooleanMapper(cdmAttributeString, dbAttributeString, false, false);\r
+ }\r
+ \r
+ public static DbBooleanMapper NewInstance(String cdmAttributeString, String dbAttributeString, Boolean defaultValue, Boolean obligatory){\r
+ return new DbBooleanMapper(cdmAttributeString, dbAttributeString, false, obligatory);\r
+ }\r
+ \r
+ /**\r
+ * @param dbAttributeString\r
+ * @param cdmAttributeString\r
+ */\r
+ private DbBooleanMapper(String cdmAttributeString, String dbAttributeString, Boolean defaultValue, Boolean obligatory) {\r
+ super(cdmAttributeString, dbAttributeString, defaultValue, obligatory);\r
+ }\r
+ \r
+ \r
+// /* (non-Javadoc)\r
+// * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbExportMapperBase#doInvoke(eu.etaxonomy.cdm.model.common.CdmBase)\r
+// */\r
+// @Override\r
+// public boolean doInvoke(CdmBase cdmBase) throws SQLException{\r
+// try {\r
+// Boolean value = (Boolean)getValue(cdmBase);\r
+// if (value == null){\r
+// getPreparedStatement().setNull(getIndex(), Types.BOOLEAN);\r
+// }else{\r
+// getPreparedStatement().setBoolean(getIndex(), value);\r
+// }\r
+// return true;\r
+// } catch (SQLException e) {\r
+// logger.warn("SQL Exception: " + e.getLocalizedMessage());\r
+// throw e;\r
+// }\r
+// }\r
+ \r
+\r
+// /* (non-Javadoc)\r
+// * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue()\r
+// */\r
+// @Override\r
+// protected Object getValue(CdmBase cdmBase) {\r
+// boolean obligat = false;\r
+// return (Boolean)ImportHelper.getValue(cdmBase, this.getSourceAttribute(), this.getTypeClass(), false, obligat);\r
+// }\r
+ \r
+ \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()\r
+ */\r
+ @Override\r
+ protected int getSqlType() {\r
+ return Types.BOOLEAN;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase#getTypeClass()\r
+ */\r
+ @Override\r
+ public Class<?> getTypeClass() {\r
+ return Boolean.class;\r
+ }\r
+\r
+\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hsqldb.Types;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class DbClobMapper extends DbSingleAttributeExportMapperBase<DbExportState<?>> implements IDbExportMapper<DbExportState<?>> {\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(DbClobMapper.class);\r
+ \r
+ public static DbClobMapper NewInstance(String cdmAttributeString, String dbAttributeString){\r
+ return new DbClobMapper(cdmAttributeString, dbAttributeString, null);\r
+ }\r
+\r
+ public static DbClobMapper NewInstance(String cdmAttributeString, String dbAttributeString, String defaultValue){\r
+ return new DbClobMapper(cdmAttributeString, dbAttributeString, defaultValue);\r
+ }\r
+\r
+ /**\r
+ * @param dbAttributeString\r
+ * @param cdmAttributeString\r
+ */\r
+ private DbClobMapper(String cdmAttributeString, String dbAttributeString, String defaultValue) {\r
+ super(cdmAttributeString, dbAttributeString, defaultValue);\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()\r
+ */\r
+ @Override\r
+ protected int getSqlType() {\r
+ return Types.CLOB;\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase#getTypeClass()\r
+ */\r
+ @Override\r
+ public Class<?> getTypeClass() {\r
+ return String.class;\r
+ }\r
+\r
+\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hsqldb.Types;\r
+import org.joda.time.DateTime;\r
+\r
+import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class DbDateMapper extends DbSingleAttributeExportMapperBase implements IDbExportMapper {\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(DbStringMapper.class);\r
+ \r
+ public static DbDateMapper NewInstance(String cdmAttributeString, String dbAttributeString){\r
+ return new DbDateMapper(cdmAttributeString, dbAttributeString, null);\r
+ }\r
+\r
+ public static DbDateMapper NewInstance(String cdmAttributeString, String dbAttributeString, DateTime defaultValue){\r
+ return new DbDateMapper(cdmAttributeString, dbAttributeString, defaultValue);\r
+ }\r
+ \r
+ /**\r
+ * @param dbAttributeString\r
+ * @param cdmAttributeString\r
+ */\r
+ private DbDateMapper(String cdmAttributeString, String dbAttributeString, DateTime defaultValue) {\r
+ super(cdmAttributeString, dbAttributeString, defaultValue);\r
+ } \r
+ \r
+// /* (non-Javadoc)\r
+// * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbExportMapperBase#doInvoke(eu.etaxonomy.cdm.model.common.CdmBase)\r
+// */\r
+// @Override\r
+// protected boolean doInvoke(CdmBase cdmBase) throws SQLException{\r
+// boolean obligat = true;\r
+// try {\r
+// DateTime value = (DateTime)ImportHelper.getValue(\r
+// cdmBase, this.getSourceAttribute(), this.getTypeClass(), false, obligat);\r
+// if (value == null){\r
+// getPreparedStatement().setNull(getIndex(), Types.DATE);\r
+// }else{\r
+// java.util.Date date = value.toDate();\r
+// long t = date.getTime();\r
+// java.sql.Date sqlDate = new java.sql.Date(t);\r
+// getPreparedStatement().setDate(getIndex(), sqlDate);\r
+// }\r
+// return true;\r
+// } catch (SQLException e) {\r
+// logger.warn("SQL Exception: " + e.getLocalizedMessage());\r
+// throw e;\r
+// }\r
+// }\r
+ \r
+//\r
+// /* (non-Javadoc)\r
+// * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue()\r
+// */\r
+// @Override\r
+// protected Object getValue(CdmBase cdmBase) {\r
+// boolean obligat = true;\r
+// return (DateTime)ImportHelper.getValue(cdmBase, this.getSourceAttribute(), this.getTypeClass(), false, obligat);\r
+// }\r
+ \r
+ \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()\r
+ */\r
+ @Override\r
+ protected int getSqlType() {\r
+ return Types.DATE;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase#getTypeClass()\r
+ */\r
+ @Override\r
+ public Class<?> getTypeClass() {\r
+ return DateTime.class;\r
+ }\r
+\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import java.sql.PreparedStatement;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportState;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class DbExportMapperBase<STATE extends DbExportState<?>> /*implements IDbExportMapper */{\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(DbExportMapperBase.class);\r
+\r
+ protected PreparedStatement preparedStatement = null;\r
+ protected int index = 0;\r
+ private STATE state;\r
+ private String tableName;\r
+ \r
+\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.IDbExportMapper#initialize(java.sql.PreparedStatement, int)\r
+ */\r
+ public void initialize(PreparedStatement stmt, IndexCounter index, STATE state, String tableName) {\r
+ this.preparedStatement = stmt;\r
+ this.index = index.getIncreasing();\r
+ this.state = state;\r
+ this.tableName = tableName;\r
+ }\r
+\r
+\r
+ /**\r
+ * @return the preparedStatement\r
+ */\r
+ public PreparedStatement getPreparedStatement() {\r
+ return preparedStatement;\r
+ }\r
+ \r
+ /**\r
+ * @return the index\r
+ */\r
+ public int getIndex() {\r
+ return index;\r
+ }\r
+\r
+\r
+ /**\r
+ * @return the state\r
+ */\r
+ public STATE getState() {\r
+ return state;\r
+ }\r
+\r
+\r
+ /**\r
+ * @return the tableName\r
+ */\r
+ public String getTableName() {\r
+ return tableName;\r
+ }\r
+\r
+\r
+ /**\r
+ * @param tableName the tableName to set\r
+ */\r
+ public void setTableName(String tableName) {\r
+ this.tableName = tableName;\r
+ }\r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import java.sql.SQLException;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hsqldb.Types;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportConfigurator.IdType;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class DbNullMapper extends DbSingleAttributeExportMapperBase<DbExportState<?>> implements IDbExportMapper<DbExportState<?>>{\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(DbNullMapper.class);\r
+ private int sqlType;\r
+ \r
+ public static DbNullMapper NewInstance(String dbIdAttributeString, int sqlType){\r
+ return new DbNullMapper(dbIdAttributeString, sqlType);\r
+ }\r
+ \r
+ /**\r
+ * @param dbAttributString\r
+ * @param cdmAttributeString\r
+ */\r
+ protected DbNullMapper(String dbAttributeString, int sqlType) {\r
+ super(null, dbAttributeString, null);\r
+ this.sqlType = sqlType;\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase#getTypeClass()\r
+ */\r
+ @Override\r
+ public Class<?> getTypeClass() {\r
+ return Integer.class;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue()\r
+ */\r
+ @Override\r
+ protected Object getValue(CdmBase cdmBase) {\r
+ return null;\r
+ }\r
+ \r
+ \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()\r
+ */\r
+ @Override\r
+ protected int getSqlType() {\r
+ return this.sqlType;\r
+ }\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hibernate.Hibernate;\r
+import org.hsqldb.Types;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportConfigurator;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class DbObjectMapper extends DbSingleAttributeExportMapperBase<DbExportState<?>> implements IDbExportMapper<DbExportState<?>> {\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(DbObjectMapper.class);\r
+ \r
+ public static DbObjectMapper NewInstance(String cdmAttributeString, String dbAttributeString){\r
+ return new DbObjectMapper(cdmAttributeString, dbAttributeString, null);\r
+ }\r
+ \r
+ /**\r
+ * @param dbAttributeString\r
+ * @param cdmAttributeString\r
+ */\r
+ protected DbObjectMapper(String cdmAttributeString, String dbAttributeString, Object defaultValue) {\r
+ super(cdmAttributeString, dbAttributeString, defaultValue);\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue()\r
+ */\r
+ @Override\r
+ protected Object getValue(CdmBase cdmBase) {\r
+ CdmBase value = (CdmBase)super.getValue(cdmBase);\r
+ if (value == null){\r
+ return null;\r
+ }\r
+ if (! Hibernate.isInitialized(value)){\r
+ Hibernate.initialize(value);\r
+ }\r
+ Object result = getId(value);\r
+// getState().getConfig().getCdmAppController().commitTransaction(tx);\r
+ return result;\r
+ }\r
+ \r
+\r
+ protected Integer getId(CdmBase cdmBase){\r
+ BerlinModelExportConfigurator config = getState().getConfig();\r
+ if (false && config.getIdType() == BerlinModelExportConfigurator.IdType.CDM_ID){\r
+ return cdmBase.getId();\r
+ }else{\r
+ Integer id = getState().getDbId(cdmBase);\r
+ return id;\r
+ }\r
+ } \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()\r
+ */\r
+ @Override\r
+ protected int getSqlType() {\r
+ return Types.INTEGER;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase#getTypeClass()\r
+ */\r
+ @Override\r
+ public Class<?> getTypeClass() {\r
+ return CdmBase.class;\r
+ }\r
+\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import java.sql.PreparedStatement;\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.sql.Types;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.joda.time.DateTime;\r
+\r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+import eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase;\r
+import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public abstract class DbSingleAttributeExportMapperBase<STATE extends DbExportState<?>> extends CdmSingleAttributeMapperBase implements IDbExportMapper<STATE> {\r
+ private static final Logger logger = Logger.getLogger(DbSingleAttributeExportMapperBase.class);\r
+ \r
+ private DbExportMapperBase<STATE> exportMapperHelper = new DbExportMapperBase<STATE>();\r
+ private Integer precision = null;\r
+ protected boolean obligatory = true;\r
+ \r
+ /**\r
+ * @param dbAttributString\r
+ * @param cdmAttributeString\r
+ */\r
+ protected DbSingleAttributeExportMapperBase(String cdmAttributeString, String dbAttributString, Object defaultValue) {\r
+ super(cdmAttributeString, dbAttributString, defaultValue);\r
+ }\r
+ \r
+ /**\r
+ * @param dbAttributString\r
+ * @param cdmAttributeString\r
+ */\r
+ protected DbSingleAttributeExportMapperBase(String cdmAttributeString, String dbAttributString, Object defaultValue, boolean obligatory) {\r
+ super(cdmAttributeString, dbAttributString, defaultValue);\r
+ this.obligatory = obligatory;\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.IStatefulDbExportMapper#initialize(java.sql.PreparedStatement, eu.etaxonomy.cdm.io.berlinModel.out.mapper.IndexCounter, eu.etaxonomy.cdm.io.berlinModel.out.DbExportState)\r
+ */\r
+ public void initialize(PreparedStatement stmt, IndexCounter index, STATE state, String tableName) {\r
+ exportMapperHelper.initialize(stmt, index, state, tableName);\r
+ this.precision = getDbColumnIntegerInfo("c.prec"); \r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.IDbExportMapper#invoke(eu.etaxonomy.cdm.model.common.CdmBase)\r
+ */\r
+ public boolean invoke(CdmBase cdmBase) throws SQLException {\r
+ if (exportMapperHelper.preparedStatement == null){\r
+ logger.warn("PreparedStatement is null");\r
+ return false;\r
+ }else{\r
+ return doInvoke(cdmBase);\r
+ }\r
+ }\r
+ \r
+ protected boolean doInvoke(CdmBase cdmBase) throws SQLException {\r
+ try {\r
+ Object value = getValue(cdmBase);\r
+ int sqlType = getSqlType();\r
+ //use default value if necessary\r
+ if (value == null && defaultValue != null){\r
+ value = defaultValue;\r
+ }\r
+ if (value == null){\r
+ getPreparedStatement().setNull(getIndex(), sqlType);\r
+ }else{\r
+ if (sqlType == Types.INTEGER){\r
+ getPreparedStatement().setInt(getIndex(), (Integer)value);\r
+ }else if (sqlType == Types.CLOB){\r
+ getPreparedStatement().setString(getIndex(), (String)value);\r
+ }else if (sqlType == Types.VARCHAR){\r
+ String strValue = (String)value;\r
+ if (strValue.length() > 255){\r
+ logger.warn("String to long (" + strValue.length() + ") for object " + cdmBase.toString() + ": " + value);\r
+ }\r
+ getPreparedStatement().setString(getIndex(), (String)value);\r
+ }else if (sqlType == Types.BOOLEAN){\r
+ getPreparedStatement().setBoolean(getIndex(), (Boolean)value);\r
+ }else if (sqlType == Types.DATE){\r
+ java.util.Date date = ((DateTime)value).toDate();\r
+ long t = date.getTime();\r
+ java.sql.Date sqlDate = new java.sql.Date(t);\r
+ getPreparedStatement().setDate(getIndex(), sqlDate);\r
+ }else{\r
+ throw new IllegalArgumentException("SqlType not yet supported yet: " + sqlType);\r
+ }\r
+ }\r
+ return true;\r
+ } catch (SQLException e) {\r
+ logger.warn("SQL Exception: " + e.getLocalizedMessage());\r
+ throw e;\r
+ } catch (IllegalArgumentException e) {\r
+ logger.error("IllegalArgumentException: " + e.getLocalizedMessage() + ": " + cdmBase.toString());\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ protected Object getValue(CdmBase cdmBase){\r
+ boolean isBoolean = (this.getTypeClass() == boolean.class || this.getTypeClass() == Boolean.class);\r
+ return ImportHelper.getValue(cdmBase, this.getSourceAttribute(), isBoolean, obligatory);\r
+ }\r
+ \r
+ protected abstract int getSqlType();\r
+ \r
+ /**\r
+ * @return the preparedStatement\r
+ */\r
+ public PreparedStatement getPreparedStatement() {\r
+ return exportMapperHelper.getPreparedStatement();\r
+ }\r
+ \r
+ /**\r
+ * @return the index\r
+ */\r
+ public int getIndex() {\r
+ return exportMapperHelper.getIndex();\r
+ }\r
+ \r
+ /**\r
+ * @return the state\r
+ */\r
+ public STATE getState() {\r
+ return exportMapperHelper.getState();\r
+ }\r
+ \r
+ \r
+ /**\r
+ * @return the state\r
+ */\r
+ public String getTableName() {\r
+ return exportMapperHelper.getTableName();\r
+ }\r
+ \r
+ protected boolean checkSqlServerColumnExists(){\r
+ Source source = getState().getConfig().getDestination();\r
+ String strQuery = "SELECT Count(t.id) as n " +\r
+ " FROM sysobjects AS t " +\r
+ " INNER JOIN syscolumns AS c ON t.id = c.id " +\r
+ " WHERE (t.xtype = 'U') AND " + \r
+ " (t.name = '" + getTableName() + "') AND " + \r
+ " (c.name = '" + getDestinationAttribute() + "')";\r
+ ResultSet rs = source.getResultSet(strQuery) ; \r
+ int n;\r
+ try {\r
+ rs.next();\r
+ n = rs.getInt("n");\r
+ return n>0;\r
+ } catch (SQLException e) {\r
+ e.printStackTrace();\r
+ return false;\r
+ }\r
+ \r
+ }\r
+ \r
+ \r
+ protected int getPrecision(){\r
+ return this.precision;\r
+ }\r
+ \r
+ protected int getDbColumnIntegerInfo(String selectPart){\r
+ Source source = getState().getConfig().getDestination();\r
+ String strQuery = "SELECT " + selectPart + " as result" +\r
+ " FROM sysobjects AS t " +\r
+ " INNER JOIN syscolumns AS c ON t.id = c.id " +\r
+ " WHERE (t.xtype = 'U') AND " + \r
+ " (t.name = '" + getTableName() + "') AND " + \r
+ " (c.name = '" + getDestinationAttribute() + "')";\r
+ ResultSet rs = source.getResultSet(strQuery) ; \r
+ int n;\r
+ try {\r
+ rs.next();\r
+ n = rs.getInt("result");\r
+ return n;\r
+ } catch (SQLException e) {\r
+ e.printStackTrace();\r
+ return -1;\r
+ }\r
+ \r
+ }\r
+ \r
+ \r
+ public String toString(){\r
+ String sourceAtt = CdmUtils.Nz(getSourceAttribute());\r
+ String destAtt = CdmUtils.Nz(getDestinationAttribute());\r
+ return this.getClass().getSimpleName() +"[" + sourceAtt + "->" + destAtt + "]";\r
+ }\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hsqldb.Types;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class DbStringMapper extends DbSingleAttributeExportMapperBase<DbExportState<?>> implements IDbExportMapper<DbExportState<?>> {\r
+ private static final Logger logger = Logger.getLogger(DbStringMapper.class);\r
+ \r
+ public static DbStringMapper NewInstance(String cdmAttributeString, String dbAttributeString){\r
+ return new DbStringMapper(cdmAttributeString, dbAttributeString, null, true);\r
+ }\r
+ \r
+ public static DbStringMapper NewFacultativeInstance(String cdmAttributeString, String dbAttributeString){\r
+ return new DbStringMapper(cdmAttributeString, dbAttributeString, null, false);\r
+ }\r
+\r
+ public static DbStringMapper NewInstance(String cdmAttributeString, String dbAttributeString, String defaultValue){\r
+ return new DbStringMapper(cdmAttributeString, dbAttributeString, defaultValue, false);\r
+ }\r
+ \r
+ public static DbStringMapper NewInstance(String cdmAttributeString, String dbAttributeString, String defaultValue, boolean obligatory){\r
+ return new DbStringMapper(cdmAttributeString, dbAttributeString, defaultValue, obligatory);\r
+ }\r
+\r
+ /**\r
+ * @param dbAttributeString\r
+ * @param cdmAttributeString\r
+ */\r
+ private DbStringMapper(String cdmAttributeString, String dbAttributeString, String defaultValue, boolean obligatory) {\r
+ super(cdmAttributeString, dbAttributeString, defaultValue, obligatory);\r
+ }\r
+ \r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue(eu.etaxonomy.cdm.model.common.CdmBase)\r
+ */\r
+ @Override\r
+ protected Object getValue(CdmBase cdmBase) {\r
+ String result = (String)super.getValue(cdmBase);\r
+ if (result != null && result.length() > getPrecision()){\r
+ logger.warn("Truncation (" + result.length() + "->" + getPrecision() + ") needed for Attribute " + getDestinationAttribute() + " in " + cdmBase + "." );\r
+ result = result.substring(0, getPrecision());\r
+ }\r
+ return result;\r
+ }\r
+ \r
+ \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()\r
+ */\r
+ @Override\r
+ protected int getSqlType() {\r
+ return Types.VARCHAR;\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase#getTypeClass()\r
+ */\r
+ @Override\r
+ public Class<?> getTypeClass() {\r
+ return String.class;\r
+ }\r
+\r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import java.sql.Connection;\r
+import java.sql.PreparedStatement;\r
+import java.sql.SQLException;\r
+import java.util.Date;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hsqldb.Types;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportConfigurator;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportState;\r
+import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class FactCategoryMapper extends DbSingleAttributeExportMapperBase<BerlinModelExportState<?>> implements IDbExportMapper<BerlinModelExportState<?>>{\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(FactCategoryMapper.class);\r
+ \r
+ private PreparedStatement preparedStatement;\r
+ \r
+ public static FactCategoryMapper NewInstance(String cdmAttributeString, String dbAttributeString){\r
+ return new FactCategoryMapper(cdmAttributeString, dbAttributeString);\r
+ }\r
+ \r
+// public static RefDetailMapper NewInstance(String cdmAttributeString, String dbAttributeString){\r
+// return new RefDetailMapper();\r
+// }\r
+\r
+ \r
+ /**\r
+ * @param dbAttributString\r
+ * @param cdmAttributeString\r
+ */\r
+ private FactCategoryMapper(String cdmAttributeString, String dbAttributeString) {\r
+ super(cdmAttributeString, dbAttributeString, null);\r
+ }\r
+\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#initialize(java.sql.PreparedStatement, eu.etaxonomy.cdm.io.berlinModel.out.mapper.IndexCounter, eu.etaxonomy.cdm.io.berlinModel.out.DbExportState)\r
+ */\r
+ @Override\r
+ public void initialize(PreparedStatement stmt, IndexCounter index,BerlinModelExportState<?> state, String tableName) {\r
+ super.initialize(stmt, index, state, tableName);\r
+ String inRefSql = "INSERT INTO FactCategory (FactCategoryId, FactCategory , " + \r
+ " MaxFactNumber , RankRestrictionFk" +\r
+ " VALUES (?,?,?,?)"; \r
+ Connection con = getState().getConfig().getDestination().getConnection();\r
+ try {\r
+ preparedStatement = con.prepareStatement(inRefSql);\r
+ } catch (SQLException e) {\r
+ e.printStackTrace();\r
+ throw new RuntimeException();\r
+ }\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue()\r
+ */\r
+ @Override\r
+ protected Object getValue(CdmBase cdmBase) {\r
+ String value = (String)super.getValue(cdmBase);\r
+ boolean isBoolean = false;\r
+ Feature feature = (Feature)ImportHelper.getValue(cdmBase, getSourceAttribute(), isBoolean, true);\r
+ Object result = makeRow(feature);\r
+// getState().getConfig().getCdmAppController().commitTransaction(tx);\r
+ return result;\r
+ }\r
+\r
+ \r
+ protected Integer makeRow(Feature feature){\r
+ if (feature == null){\r
+ return null; \r
+ }\r
+ Integer factCategoryId = getState().getNextFactCategoryId();\r
+ String factCategory = feature.getLabel();\r
+ Integer maxFactNumber = null;\r
+ Integer RankRestrictionFk = null;\r
+ \r
+ try {\r
+ preparedStatement.setInt(1, factCategoryId);\r
+ preparedStatement.setString(2, factCategory);\r
+ preparedStatement.setNull(3, Types.INTEGER) ;//.setString(3, maxFactNumber);\r
+ preparedStatement.setNull(4, Types.INTEGER) ;//.setString(4, RankRestrictionFk);\r
+ preparedStatement.executeUpdate();\r
+ } catch (SQLException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ return factCategoryId;\r
+ }\r
+\r
+ protected Integer getId(CdmBase cdmBase){\r
+ BerlinModelExportConfigurator config = getState().getConfig();\r
+ if (false && config.getIdType() == BerlinModelExportConfigurator.IdType.CDM_ID){\r
+ return cdmBase.getId();\r
+ }else{\r
+ Integer id = getState().getDbId(cdmBase);\r
+ return id;\r
+ }\r
+ } \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()\r
+ */\r
+ @Override\r
+ protected int getSqlType() {\r
+ return Types.INTEGER;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase#getTypeClass()\r
+ */\r
+ @Override\r
+ public Class<?> getTypeClass() {\r
+ return String.class;\r
+ }\r
+\r
+\r
+\r
+\r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+ * Copyright (C) 2007 EDIT\r
+ * European Distributed Institute of Taxonomy \r
+ * http://www.e-taxonomy.eu\r
+ * \r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import java.sql.PreparedStatement;\r
+import java.sql.SQLException;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public interface IDbExportMapper<T extends DbExportState<?>> {\r
+\r
+// public void initialize(PreparedStatement stmt, IndexCounter index);\r
+\r
+ public void initialize(PreparedStatement stmt, IndexCounter index, T state, String tableName);\r
+ \r
+ public boolean invoke(CdmBase cdmBase) throws SQLException;\r
+\r
+}
\ No newline at end of file
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import java.sql.SQLException;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hsqldb.Types;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportConfigurator.IdType;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class IdMapper extends DbSingleAttributeExportMapperBase<DbExportState<?>> implements IDbExportMapper<DbExportState<?>>{\r
+ private static final Logger logger = Logger.getLogger(IdMapper.class);\r
+ \r
+ public static IdMapper NewInstance(String dbIdAttributeString){\r
+ return new IdMapper(dbIdAttributeString);\r
+ }\r
+ \r
+ /**\r
+ * @param dbAttributString\r
+ * @param cdmAttributeString\r
+ */\r
+ protected IdMapper(String dbIdAttributeString) {\r
+ super(null, dbIdAttributeString, null);\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase#getTypeClass()\r
+ */\r
+ @Override\r
+ public Class<?> getTypeClass() {\r
+ return Integer.class;\r
+ }\r
+\r
+ @Override\r
+ protected boolean doInvoke(CdmBase cdmBase) throws SQLException{\r
+ boolean result = super.doInvoke(cdmBase);\r
+ getState().putDbId(cdmBase, (Integer)getValue(cdmBase));\r
+ return result;\r
+ \r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue()\r
+ */\r
+ @Override\r
+ protected Object getValue(CdmBase cdmBase) {\r
+ IdType type = getState().getConfig().getIdType();\r
+ if (type == IdType.CDM_ID){\r
+ return cdmBase.getId();\r
+ }else if(type == IdType.MAX_ID){\r
+ //TODO\r
+ logger.warn("MAX_ID not yet implemented");\r
+ return cdmBase.getId();\r
+ }else if(type == IdType.ORIGINAL_SOURCE_ID){\r
+ //TODO\r
+ logger.warn("ORIGINAL_SOURCE_ID");\r
+ return cdmBase.getId();\r
+ }else{\r
+ logger.warn("Unknown idType: " + type);\r
+ return cdmBase.getId();\r
+ }\r
+ }\r
+ \r
+ \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()\r
+ */\r
+ @Override\r
+ protected int getSqlType() {\r
+ return Types.INTEGER;\r
+ }\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class IndexCounter {\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(IndexCounter.class);\r
+\r
+ int index = 0;\r
+ \r
+ public IndexCounter(int startValue){\r
+ index = startValue;\r
+ }\r
+ \r
+ /**\r
+ * Returns the index and increases it by 1\r
+ * @return\r
+ */\r
+ public int getIncreasing(){\r
+ return index++;\r
+ }\r
+ \r
+ public String toString(){\r
+ return String.valueOf(index);\r
+ }\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import java.lang.reflect.InvocationTargetException;\r
+import java.lang.reflect.Method;\r
+import java.sql.Types;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportBase;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class MethodMapper extends DbSingleAttributeExportMapperBase<DbExportState<?>> implements IDbExportMapper<DbExportState<?>> {\r
+ private static final Logger logger = Logger.getLogger(MethodMapper.class);\r
+ \r
+ private Method method;\r
+ private Class<?>[] parameterTypes;\r
+ \r
+ public static <T extends BerlinModelExportBase> MethodMapper NewInstance(String dbAttributeString, BerlinModelExportBase bmeb){\r
+ String methodName = "get" + dbAttributeString;\r
+ return NewInstance(dbAttributeString, bmeb, methodName);\r
+ }\r
+ \r
+ public static <T extends BerlinModelExportBase> MethodMapper NewInstance(String dbAttributeString, BerlinModelExportBase bmeb, String methodName){\r
+ Class<?> parameterTypes = bmeb.getStandardMethodParameter();\r
+ MethodMapper result = new MethodMapper(dbAttributeString, bmeb.getClass(), methodName, parameterTypes);\r
+ return result;\r
+ }\r
+\r
+ public static <T extends BerlinModelExportBase> MethodMapper NewInstance(String dbAttributeString, Class<?> clazz, String methodName, Class parameterTypes){\r
+ MethodMapper result = new MethodMapper(dbAttributeString, clazz, methodName, parameterTypes);\r
+ return result;\r
+ }\r
+ \r
+ public static <T extends BerlinModelExportBase> MethodMapper NewInstance(String dbAttributeString, Class<?> clazz, String methodName, Class<?> parameterType1, Class<?> parameterType2){\r
+ MethodMapper result = new MethodMapper(dbAttributeString, clazz, methodName, parameterType1,parameterType2);\r
+ return result;\r
+ }\r
+ \r
+ /**\r
+ * @param parameterTypes \r
+ * @param dbIdAttributString\r
+ */\r
+ protected MethodMapper(String dbAttributeString, Class<?> clazz, String methodName, Class<?>... parameterTypes) {\r
+ super(null, dbAttributeString, null);\r
+ try {\r
+ this.parameterTypes = parameterTypes;\r
+ method = clazz.getDeclaredMethod(methodName, parameterTypes);\r
+ method.setAccessible(true);\r
+ } catch (SecurityException e) {\r
+ logger.error("SecurityException", e);\r
+ } catch (NoSuchMethodException e) {\r
+ logger.error("NoSuchMethodException", e);\r
+ }\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.IdMapper#getTypeClass()\r
+ */\r
+ @Override\r
+ public Class<?> getTypeClass() {\r
+ return method.getReturnType();\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue()\r
+ */\r
+ @Override\r
+ protected Object getValue(CdmBase cdmBase) {\r
+ try{ \r
+ if (this.parameterTypes.length > 1 && parameterTypes[1].equals(DbExportState.class)){\r
+ return method.invoke(null, cdmBase, getState());\r
+ }else{\r
+ return method.invoke(null, cdmBase);\r
+ }\r
+ \r
+ } catch (IllegalAccessException e) {\r
+ logger.error("IllegalAccessException: " + e.getLocalizedMessage());\r
+ return false;\r
+ } catch (InvocationTargetException e) {\r
+ logger.error("InvocationTargetException: " + e.getLocalizedMessage());\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()\r
+ */\r
+ @Override\r
+ protected int getSqlType() {\r
+ Class<?> returnType = method.getReturnType();\r
+ if (returnType == Integer.class){\r
+ return Types.INTEGER;\r
+ }else if (returnType == String.class){\r
+ return Types.VARCHAR;\r
+ }else if (returnType == Boolean.class){\r
+ return Types.BOOLEAN;\r
+ }else{\r
+ logger.warn("Return type not supported yet: " + returnType.getSimpleName());\r
+ throw new IllegalArgumentException("Return type not supported yet: " + returnType.getSimpleName());\r
+ }\r
+ }\r
+ \r
+}\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.berlinModel.out.mapper;\r
+\r
+import java.sql.Connection;\r
+import java.sql.PreparedStatement;\r
+import java.sql.SQLException;\r
+import java.util.Date;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hsqldb.Types;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportConfigurator;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportState;\r
+import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public class RefDetailMapper extends DbSingleAttributeExportMapperBase<BerlinModelExportState<?>> implements IDbExportMapper<BerlinModelExportState<?>>{\r
+ private static final Logger logger = Logger.getLogger(RefDetailMapper.class);\r
+ \r
+ private String cdmRefAttributeString; \r
+ private PreparedStatement preparedStatement;\r
+ \r
+ public static RefDetailMapper NewInstance(String cdmAttributeString, String cdmRefAttributeString, String dbAttributeString){\r
+ return new RefDetailMapper(cdmAttributeString, cdmRefAttributeString, dbAttributeString);\r
+ }\r
+ \r
+// public static RefDetailMapper NewInstance(String cdmAttributeString, String dbAttributeString){\r
+// return new RefDetailMapper();\r
+// }\r
+\r
+ \r
+ /**\r
+ * @param dbAttributString\r
+ * @param cdmAttributeString\r
+ */\r
+ private RefDetailMapper(String cdmAttributeString, String cdmRefAttributeString, String dbAttributeString) {\r
+ super(cdmAttributeString, dbAttributeString, null);\r
+ this.cdmRefAttributeString = cdmRefAttributeString;\r
+ }\r
+\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#initialize(java.sql.PreparedStatement, eu.etaxonomy.cdm.io.berlinModel.out.mapper.IndexCounter, eu.etaxonomy.cdm.io.berlinModel.out.DbExportState)\r
+ */\r
+ @Override\r
+ public void initialize(PreparedStatement stmt, IndexCounter index,BerlinModelExportState<?> state, String tableName) {\r
+ super.initialize(stmt, index, state, tableName);\r
+ String inRefSql = "INSERT INTO RefDetail (RefDetailId, RefFk , " + \r
+ " FullRefCache, FullNomRefCache, PreliminaryFlag , Details , " +\r
+ " SecondarySources, " + \r
+ " Created_When , Created_Who , Updated_When, Updated_Who, Notes ,IdInSource)"+\r
+ " VALUES (?,?, ?,?,?,?, ?, ?,?,?,?,?,?)"; \r
+ Connection con = getState().getConfig().getDestination().getConnection();\r
+ try {\r
+ preparedStatement = con.prepareStatement(inRefSql);\r
+ } catch (SQLException e) {\r
+ e.printStackTrace();\r
+ throw new RuntimeException();\r
+ }\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValue()\r
+ */\r
+ @Override\r
+ protected Object getValue(CdmBase cdmBase) {\r
+ String value = (String)super.getValue(cdmBase);\r
+ boolean isBoolean = false;\r
+ ReferenceBase<?> ref = (ReferenceBase<?>)ImportHelper.getValue(cdmBase, this.cdmRefAttributeString, isBoolean, true);\r
+ Object result = makeRefDetail(value, ref);\r
+// getState().getConfig().getCdmAppController().commitTransaction(tx);\r
+ return result;\r
+ }\r
+\r
+ \r
+ protected Integer makeRefDetail(String microRef, ReferenceBase<?> ref){\r
+ if (ref == null){\r
+ if (microRef == null || microRef.trim().equals("")){\r
+ return null; \r
+ }else{\r
+ //TODO microRef with no reference\r
+ logger.warn("ref == null not yet implemented");\r
+ return null;\r
+ }\r
+ }\r
+ Integer refDetailId = getState().getNextRefDetailId();\r
+ Integer refId = getState().getDbId(ref);\r
+// String fullRefCache = null;\r
+// String fullNomRefCache = null;\r
+ Boolean preliminaryFlag = false;\r
+// String secondarySources = null;\r
+ java.sql.Date created_When = new java.sql.Date(new Date().getTime());\r
+// java.sql.Date updated_When = null;\r
+ String created_who = "autom.";\r
+// String update_who = null;\r
+// String notes = null;\r
+ \r
+ try {\r
+ preparedStatement.setInt(1, refDetailId);\r
+ preparedStatement.setInt(2, refId);\r
+ preparedStatement.setNull(3, Types.VARCHAR) ;//.setString(3, fullRefCache);\r
+ preparedStatement.setNull(4, Types.VARCHAR) ;//.setString(4, fullNomRefCache);\r
+ preparedStatement.setBoolean(5, preliminaryFlag);\r
+ if (microRef != null){\r
+ preparedStatement.setString(6, microRef);\r
+ }else{\r
+ preparedStatement.setNull(6, Types.VARCHAR);\r
+ }\r
+ preparedStatement.setNull(7, Types.VARCHAR) ;//.setString(7, secondarySources);\r
+ preparedStatement.setDate(8, created_When);\r
+ preparedStatement.setString(9, created_who);\r
+ preparedStatement.setNull(10, Types.DATE) ;//.setDate(10, updated_When);\r
+ preparedStatement.setNull(11, Types.VARCHAR) ;//.setString(11, update_who);\r
+ preparedStatement.setNull(12, Types.VARCHAR) ;//.setString(12, notes);\r
+ preparedStatement.setNull(13, Types.VARCHAR) ;//.setString(13, secondarySources);\r
+ \r
+ \r
+ preparedStatement.executeUpdate();\r
+ } catch (SQLException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ return refDetailId;\r
+ }\r
+\r
+ protected Integer getId(CdmBase cdmBase){\r
+ BerlinModelExportConfigurator config = getState().getConfig();\r
+ if (false && config.getIdType() == BerlinModelExportConfigurator.IdType.CDM_ID){\r
+ return cdmBase.getId();\r
+ }else{\r
+ Integer id = getState().getDbId(cdmBase);\r
+ return id;\r
+ }\r
+ } \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbSingleAttributeExportMapperBase#getValueType()\r
+ */\r
+ @Override\r
+ protected int getSqlType() {\r
+ return Types.INTEGER;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase#getTypeClass()\r
+ */\r
+ @Override\r
+ public Class<?> getTypeClass() {\r
+ return String.class;\r
+ }\r
+\r
+\r
+\r
+\r
+}\r
import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
import eu.etaxonomy.cdm.api.service.IService;\r
import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.DbExportState;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.IoState;\r
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
ICdmIO<S> cdmIo = (ICdmIO<S>)applicationContext.getBean(ioBeanName, ICdmIO.class);\r
if (cdmIo != null){\r
result &= cdmIo.invoke(config, stores);\r
+// IoState<S> state = null;\r
+// result &= cdmIo.invoke(state);\r
}else{\r
logger.error("cdmIO was null");\r
result = false;\r
}\r
return true;\r
} catch (DataSourceNotFoundException e) {\r
- logger.error("could not connect to destination database");\r
+ logger.error("could not connect to source CDM database");\r
return false;\r
}catch (TermNotFoundException e) {\r
logger.error("could not find needed term in destination datasource");\r
}\r
}\r
\r
+// /* (non-Javadoc)\r
+// * @see eu.etaxonomy.cdm.io.common.ICdmIO#invoke(eu.etaxonomy.cdm.io.common.IIoConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)\r
+// */\r
+// public boolean invoke(T config,\r
+//// public boolean invoke(IIoConfigurator config,\r
+// Map<String, MapWrapper<? extends CdmBase>> stores) {\r
+// if (isIgnore(config)){\r
+// logger.warn("No invoke for " + ioName + " (ignored)");\r
+// return true;\r
+// }else{\r
+// return doInvoke(config, stores);\r
+// }\r
+// }\r
+ \r
+ \r
+ \r
protected abstract boolean doInvoke(T config,\r
Map<String, MapWrapper<? extends CdmBase>> stores);\r
\r
\r
import org.apache.log4j.Logger;\r
\r
-import eu.etaxonomy.cdm.io.berlinModel.CdmOneToManyMapper;\r
-\r
\r
/**\r
* @author a.mueller\r
* @version 1.0\r
*/\r
public class CdmIoMapping {\r
- @SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(CdmIoMapping.class);\r
\r
- List<CdmAttributeMapperBase> mapperList = new ArrayList<CdmAttributeMapperBase>();\r
+ protected List<CdmAttributeMapperBase> mapperList = new ArrayList<CdmAttributeMapperBase>();\r
Set<String> sourceAttributes = new HashSet<String>();\r
Set<String> destinationAttributes = new HashSet<String>();\r
List<String> sourceAttributeList = new ArrayList<String>();\r
sourceAttributeList.addAll(singleMapper.getSourceAttributeList());\r
destinationAttributes.addAll(singleMapper.getDestinationAttributes());\r
destinationAttributeList.addAll(singleMapper.getDestinationAttributeList());\r
- }else if (mapper instanceof CdmOneToManyMapper<?, ?,?>){\r
- CdmOneToManyMapper<?, ?,?> multipleMapper = (CdmOneToManyMapper<?, ?,?>)mapper;\r
+ }else if (mapper instanceof MultipleAttributeMapperBase){\r
+ MultipleAttributeMapperBase<?> multipleMapper = (MultipleAttributeMapperBase<?>)mapper;\r
sourceAttributes.addAll(multipleMapper.getSourceAttributes());\r
sourceAttributeList.addAll(multipleMapper.getSourceAttributes());\r
destinationAttributes.addAll(multipleMapper.getDestinationAttributes());\r
- destinationAttributeList.addAll(multipleMapper.getDestinationAttributes());\r
+ destinationAttributeList.addAll(multipleMapper.getDestinationAttributeList());\r
}else{\r
- logger.error("Unknown mapper type");\r
+ logger.error("Unknown mapper type: " + mapper.getClass().getSimpleName());\r
+ throw new IllegalArgumentException("Unknown mapper type: " + mapper.getClass().getSimpleName());\r
}\r
}\r
\r
return result;\r
}\r
\r
+ public List<String> getDestinationAttributeList(){\r
+ List<String> result = new ArrayList<String>();\r
+ result.addAll(destinationAttributeList);\r
+ return result;\r
+ }\r
+ \r
}\r
\r
private String sourceValue;\r
private String destinationValue;\r
+ protected Object defaultValue;\r
\r
- protected CdmSingleAttributeMapperBase(String dbAttributString, String cdmAttributeString){\r
- this.sourceValue = dbAttributString;\r
- this.destinationValue = cdmAttributeString;\r
+ protected CdmSingleAttributeMapperBase(String sourceAttributString, String destinationAttributeString){\r
+ this(sourceAttributString,destinationAttributeString, null);\r
}\r
+\r
+ protected CdmSingleAttributeMapperBase(String sourceAttributString, String destinationAttributeString, Object defaultValue){\r
+ this.sourceValue = sourceAttributString;\r
+ this.destinationValue = destinationAttributeString;\r
+ this.defaultValue = defaultValue;\r
+ }\r
+\r
\r
public String getSourceAttribute(){\r
return sourceValue;\r
* @author a.babadshanjan\r
* @created 16.11.2008\r
*/\r
-public abstract class ExportConfiguratorBase extends IoConfiguratorBase {\r
+public abstract class ExportConfiguratorBase<DESTINATION extends Object> extends IoConfiguratorBase {\r
\r
private static final Logger logger = Logger.getLogger(ExportConfiguratorBase.class);\r
\r
private CHECK check = CHECK.EXPORT_WITHOUT_CHECK;\r
\r
private ICdmDataSource source;\r
- private Object destination;\r
+ private DESTINATION destination;\r
//private DbSchemaValidation dbSchemaValidation = DbSchemaValidation.VALIDATE;\r
private CdmApplicationController cdmApp = null;\r
protected ReferenceBase sourceReference;\r
\r
public ExportConfiguratorBase(){\r
super();\r
- setDbSchemaValidation(DbSchemaValidation.UPDATE);\r
+ //setDbSchemaValidation(DbSchemaValidation.UPDATE);\r
makeIoClassList();\r
}\r
\r
/**\r
* @param source the source to get\r
*/\r
- public Object getDestination() {\r
+ public DESTINATION getDestination() {\r
return destination;\r
}\r
\r
/**\r
* @param source the source to set\r
*/\r
- public void setDestination(Object destination) {\r
+ public void setDestination(DESTINATION destination) {\r
this.destination = destination;\r
}\r
\r
\r
import java.util.Map;\r
\r
+import eu.etaxonomy.cdm.io.berlinModel.out.IoState;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
\r
/**\r
\r
public boolean invoke(T config, Map<String, MapWrapper<? extends CdmBase>> stores);\r
\r
+// public boolean invoke(IoState<T> state);\r
+ \r
+ \r
+ \r
}
\ No newline at end of file
\r
}\r
\r
+ //************** EXPORT *******************/\r
+ \r
+ \r
+ public static<T extends Object> T getValue(CdmBase cdmBase, String cdmAttrName, boolean isBoolean, boolean obligatory){\r
+ String methodName;\r
+ T result;\r
+ try {\r
+ if (isBoolean){\r
+ if (cdmAttrName == null || cdmAttrName.length() < 3 || !cdmAttrName.startsWith("is")){\r
+ throw new IllegalArgumentException("boolean CdmAttributeName should have atleast 3 characters and start with 'is': " + cdmAttrName);\r
+ }\r
+ methodName = cdmAttrName ;\r
+ }else {\r
+ if (cdmAttrName == null || cdmAttrName.length() < 1 ){\r
+ throw new IllegalArgumentException("CdmAttributeName should have atleast 1 character");\r
+ }\r
+ methodName = "get" + cdmAttrName.substring(0, 1).toUpperCase() + cdmAttrName.substring(1) ;\r
+ }\r
+// else{\r
+// logger.error("Class not supported: " + clazz.toString());\r
+// return null;\r
+// }\r
+ Method cdmMethod = cdmBase.getClass().getMethod(methodName);\r
+ result = (T)cdmMethod.invoke(cdmBase);\r
+ return result;\r
+ } catch (NullPointerException e) {\r
+ logger.error("NullPointerException: " + e.getMessage());\r
+ return null;\r
+ } catch (IllegalArgumentException e) {\r
+ logger.error("IllegalArgumentException: " + e.getMessage());\r
+ return null;\r
+ } catch (IllegalAccessException e) {\r
+ logger.error("IllegalAccessException: " + e.getMessage());\r
+ return null;\r
+ } catch (InvocationTargetException e) {\r
+ logger.error("InvocationTargetException: " + e.getMessage());\r
+ return null;\r
+ }catch (SecurityException e) {\r
+ logger.error("SecurityException: " + e.getMessage());\r
+ return null;\r
+ } catch (NoSuchMethodException e) {\r
+ if (obligatory){\r
+ logger.error("NoSuchMethod: " + e.getMessage());\r
+ return null;\r
+ }else{\r
+ if (logger.isDebugEnabled()){ logger.debug("NoSuchMethod: " + e.getMessage());}\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ }\r
+\r
+ \r
+ \r
+ \r
\r
//******* old *****************\r
\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.io.common;\r
+\r
+import java.util.ArrayList;\r
+import java.util.HashSet;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+public abstract class MultipleAttributeMapperBase<SINGLE_MAPPER extends CdmSingleAttributeMapperBase> extends CdmAttributeMapperBase {\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(MultipleAttributeMapperBase.class);\r
+\r
+ protected List<SINGLE_MAPPER> singleMappers = new ArrayList<SINGLE_MAPPER>();\r
+\r
+ \r
+ /**\r
+ * \r
+ */\r
+ public MultipleAttributeMapperBase() {\r
+ singleMappers = new ArrayList<SINGLE_MAPPER>();\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmAttributeMapperBase#getDestinationAttributeList()\r
+ */\r
+ @Override\r
+ public List<String> getDestinationAttributeList() {\r
+ List<String> result = new ArrayList<String>();\r
+ for (SINGLE_MAPPER singleMapper : singleMappers){\r
+ result.add(singleMapper.getDestinationAttribute());\r
+ }\r
+ return result;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmAttributeMapperBase#getDestinationAttributes()\r
+ */\r
+ @Override\r
+ public Set<String> getDestinationAttributes() {\r
+ Set<String> result = new HashSet<String>();\r
+ result.addAll(getDestinationAttributeList());\r
+ return result;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmAttributeMapperBase#getSourceAttributeList()\r
+ */\r
+ @Override\r
+ public List<String> getSourceAttributeList() {\r
+ List<String> result = new ArrayList<String>();\r
+ for (SINGLE_MAPPER singleMapper : singleMappers){\r
+ result.add(singleMapper.getSourceAttribute());\r
+ }\r
+ return result;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmAttributeMapperBase#getSourceAttributes()\r
+ */\r
+ @Override\r
+ public Set<String> getSourceAttributes() {\r
+ Set<String> result = new HashSet<String>();\r
+ result.addAll(getSourceAttributeList());\r
+ return result;\r
+ }\r
+}\r
}\r
}\r
\r
+ //******* INSERT, UPDATE, DELETE *******************//\r
+ /**\r
+ * Executes an insert, update or delete statement.\r
+ * Returns the number of rows changed or -1 if updatedStatement was 0 or and error occurred. \r
+ * Does not change the Sources query-string!!\r
+ * @return Resultset for the query.\r
+ */\r
+ public int update (String updateStatement){\r
+ int result;\r
+ try {\r
+ this.getConnection(); //establish connection\r
+ if (updateStatement == null){\r
+ return -1;\r
+ }\r
+ mStmt = mConn.createStatement();\r
+ result = mStmt.executeUpdate(updateStatement);\r
+ return result;\r
+ }catch(SQLException e){\r
+ logger.error("Problems when creating Resultset for query \n " + updateStatement + " \n" + "Exception: " + e);\r
+ return -1;\r
+ }\r
+ }\r
+\r
\r
/** \r
* Returns the Resultset for Sources query. \r