2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.cdm
.io
.berlinModel
.in
;
11 import java
.sql
.ResultSet
;
12 import java
.sql
.SQLException
;
13 import java
.util
.Collection
;
14 import java
.util
.HashMap
;
17 import org
.apache
.log4j
.Logger
;
18 import org
.springframework
.stereotype
.Component
;
20 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
21 import eu
.etaxonomy
.cdm
.io
.berlinModel
.in
.validation
.BerlinModelAuthorImportValidator
;
22 import eu
.etaxonomy
.cdm
.io
.common
.IOValidator
;
23 import eu
.etaxonomy
.cdm
.io
.common
.ImportHelper
;
24 import eu
.etaxonomy
.cdm
.io
.common
.ResultSetPartitioner
;
25 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
26 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
27 import eu
.etaxonomy
.cdm
.model
.common
.Extension
;
28 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
29 import eu
.etaxonomy
.cdm
.model
.common
.TimePeriod
;
33 * Supported attributes:
34 * - AuthorId, Abbrev, FirstName, LastName, Dates, AreaOfInterest, NomStandard, createUpdateNotes
41 public class BerlinModelAuthorImport
extends BerlinModelImportBase
{
42 private static final Logger logger
= Logger
.getLogger(BerlinModelAuthorImport
.class);
44 public static final String NAMESPACE
= "Author";
46 private static int recordsPerLog
= 5000;
47 private static final String dbTableName
= "Author";
48 private static final String pluralString
= "Authors";
50 public BerlinModelAuthorImport(){
56 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
59 protected String
getRecordQuery(BerlinModelImportConfigurator config
) {
60 String strRecordQuery
=
62 " FROM " + dbTableName
+ " " +
63 " WHERE authorId IN ( " + ID_LIST_TOKEN
+ " )";
64 return strRecordQuery
;
70 * @throws SQLException
73 public boolean doPartition(ResultSetPartitioner partitioner
, BerlinModelImportState state
) {
76 Map
<Integer
, Person
> personMap
= new HashMap
<Integer
, Person
>();
78 boolean success
= true;
79 ResultSet rs
= partitioner
.getResultSet();
84 // partitioner.doLogPerLoop(recordsPerLog, pluralString);
86 //create Agent element
87 int authorId
= rs
.getInt("AuthorId");
89 Person author
= Person
.NewInstance();
91 dbAttrName
= "Abbrev";
92 cdmAttrName
= "nomenclaturalTitle";
93 success
&= ImportHelper
.addStringValue(rs
, author
, dbAttrName
, cdmAttrName
);
95 dbAttrName
= "FirstName";
96 cdmAttrName
= "firstname";
97 success
&= ImportHelper
.addStringValue(rs
, author
, dbAttrName
, cdmAttrName
);
99 dbAttrName
= "LastName";
100 cdmAttrName
= "lastname";
101 success
&= ImportHelper
.addStringValue(rs
, author
, dbAttrName
, cdmAttrName
);
103 String dates
= rs
.getString("dates");
106 TimePeriod lifespan
= TimePeriod
.parseString(dates
);
107 author
.setLifespan(lifespan
);
111 String areaOfInterest
= rs
.getString("AreaOfInterest");
112 if (CdmUtils
.isNotEmpty(areaOfInterest
)){
113 Extension datesExtension
= Extension
.NewInstance(author
, areaOfInterest
, ExtensionType
.AREA_OF_INTREREST());
117 String nomStandard
= rs
.getString("NomStandard");
118 if (CdmUtils
.isNotEmpty(nomStandard
)){
119 Extension nomStandardExtension
= Extension
.NewInstance(author
, nomStandard
, ExtensionType
.NOMENCLATURAL_STANDARD());
122 String initials
= null;
123 for (int j
= 1; j
<= rs
.getMetaData().getColumnCount(); j
++){
124 String label
= rs
.getMetaData().getColumnLabel(j
);
125 if (label
.equalsIgnoreCase("Initials") || label
.equalsIgnoreCase("Kürzel")){
126 initials
= rs
.getString(j
);
130 if (CdmUtils
.isNotEmpty(initials
)){
131 Extension initialsExtension
= Extension
.NewInstance(author
, initials
, ExtensionType
.ABBREVIATION());
135 doIdCreatedUpdatedNotes(state
, author
, rs
, authorId
, NAMESPACE
);
137 personMap
.put(authorId
, author
);
139 } //while rs.hasNext()
140 //logger.info("save " + i + " "+pluralString + " ...");
141 getAgentService().save((Collection
)personMap
.values());
143 }catch(Exception ex
){
144 logger
.error(ex
.getMessage());
145 ex
.printStackTrace();
152 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
154 public Map
<Object
, Map
<String
, ?
extends CdmBase
>> getRelatedObjectsForPartition(ResultSet rs
) {
155 Map
<Object
, Map
<String
, ?
extends CdmBase
>> result
= new HashMap
<Object
, Map
<String
, ?
extends CdmBase
>>();
156 // no related objects exist
162 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
165 protected boolean doCheck(BerlinModelImportState state
){
166 IOValidator
<BerlinModelImportState
> validator
= new BerlinModelAuthorImportValidator();
167 return validator
.validate(state
);
172 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getTableName()
175 protected String
getTableName() {
181 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getPluralString()
184 public String
getPluralString() {
189 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
191 protected boolean isIgnore(BerlinModelImportState state
){
192 return ! state
.getConfig().isDoAuthors();