Rework Fauna Europaea import
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / faunaEuropaea / FaunaEuropaeaAuthorImport.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9 package eu.etaxonomy.cdm.io.faunaEuropaea;
10
11 import java.sql.ResultSet;
12 import java.sql.SQLException;
13 import java.util.Map;
14
15 import org.apache.log4j.Logger;
16 import org.springframework.stereotype.Component;
17 import org.springframework.transaction.TransactionStatus;
18
19 import eu.etaxonomy.cdm.io.common.ICdmIO;
20 import eu.etaxonomy.cdm.io.common.IImportConfigurator;
21 import eu.etaxonomy.cdm.io.common.ImportHelper;
22 import eu.etaxonomy.cdm.io.common.MapWrapper;
23 import eu.etaxonomy.cdm.io.common.Source;
24 import eu.etaxonomy.cdm.model.agent.AgentBase;
25 import eu.etaxonomy.cdm.model.agent.Person;
26 import eu.etaxonomy.cdm.model.agent.Team;
27 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
28 import eu.etaxonomy.cdm.model.common.CdmBase;
29 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
30
31
32 /**
33 * @author a.babadshanjan
34 * @created 12.05.2009
35 * @version 1.0
36 */
37 @Component
38 public class FaunaEuropaeaAuthorImport extends FaunaEuropaeaImportBase {
39 private static final Logger logger = Logger.getLogger(FaunaEuropaeaAuthorImport.class);
40
41 private static int modCount = 1000;
42
43
44 /* (non-Javadoc)
45 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
46 */
47 @Override
48 protected boolean doCheck(FaunaEuropaeaImportState state){
49 boolean result = true;
50 logger.warn("No checking for Authors not implemented");
51
52 return result;
53 }
54
55 /* (non-Javadoc)
56 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)
57 */
58 @Override
59 protected boolean doInvoke(FaunaEuropaeaImportState state){
60 Map<String, MapWrapper<? extends CdmBase>> stores = state.getStores();
61 MapWrapper<TeamOrPersonBase> authorStore = (MapWrapper<TeamOrPersonBase>)stores.get(ICdmIO.TEAM_STORE);
62 TransactionStatus txStatus = null;
63
64 FaunaEuropaeaImportConfigurator fauEuConfig = state.getConfig();
65 Source source = fauEuConfig.getSource();
66
67 String namespace = "AuthorTeam";
68 boolean success = true;
69
70 if(logger.isInfoEnabled()) { logger.info("Start making Authors..."); }
71
72 try {
73
74 String strQuery =
75 " SELECT * " +
76 " FROM author " ;
77 ResultSet rs = source.getResultSet(strQuery) ;
78
79 int i = 0;
80 while (rs.next()) {
81
82 if ((i++ % modCount) == 0 && i!= 1 ) {
83 if(logger.isInfoEnabled()) {
84 logger.info("Authors retrieved: " + (i-1));
85 }
86 }
87
88 int authorId = rs.getInt("aut_id");
89 String authorName = rs.getString("aut_name");
90
91 TeamOrPersonBase<Team> author = null;
92
93 try {
94 author = Team.NewInstance();
95 author.setTitleCache(authorName);
96
97 ImportHelper.setOriginalSource(author, fauEuConfig.getSourceReference(), authorId, namespace);
98
99 if (!authorStore.containsId(authorId)) {
100 if (author == null) {
101 logger.warn("Author is null");
102 }
103 authorStore.put(authorId, author);
104 if (logger.isDebugEnabled()) {
105 logger.debug("Stored author (" + authorId + ") " + authorName);
106 }
107 } else {
108 logger.warn("Not imported author with duplicated aut_id (" + authorId +
109 ") " + authorName);
110 }
111 } catch (Exception e) {
112 logger.warn("An exception occurred when creating author with id " + authorId +
113 ". Author could not be saved.");
114 }
115 }
116
117 if(logger.isInfoEnabled()) { logger.info("Saving authors ..."); }
118
119 txStatus = startTransaction();
120
121 // save authors
122 getAgentService().saveAgentAll(authorStore.objects());
123
124 commitTransaction(txStatus);
125
126 if(logger.isInfoEnabled()) { logger.info("End making authors ..."); }
127
128 return true;
129
130 } catch (SQLException e) {
131 logger.error("SQLException:" + e);
132 return false;
133 }
134 }
135
136 /* (non-Javadoc)
137 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
138 */
139 protected boolean isIgnore(FaunaEuropaeaImportState state){
140 return ! state.getConfig().isDoAuthors();
141 }
142
143 }