major refactoring in io-layer (config -> state)
[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
18 import eu.etaxonomy.cdm.io.common.ICdmIO;
19 import eu.etaxonomy.cdm.io.common.IImportConfigurator;
20 import eu.etaxonomy.cdm.io.common.ImportHelper;
21 import eu.etaxonomy.cdm.io.common.MapWrapper;
22 import eu.etaxonomy.cdm.io.common.Source;
23 import eu.etaxonomy.cdm.model.agent.AgentBase;
24 import eu.etaxonomy.cdm.model.agent.Person;
25 import eu.etaxonomy.cdm.model.agent.Team;
26 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
27 import eu.etaxonomy.cdm.model.common.CdmBase;
28 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
29
30
31 /**
32 * @author a.babadshanjan
33 * @created 12.05.2009
34 * @version 1.0
35 */
36 @Component
37 public class FaunaEuropaeaAuthorImport extends FaunaEuropaeaImportBase {
38 private static final Logger logger = Logger.getLogger(FaunaEuropaeaAuthorImport.class);
39
40 private static int modCount = 1000;
41
42 public FaunaEuropaeaAuthorImport(){
43 }
44
45 /* (non-Javadoc)
46 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
47 */
48 @Override
49 protected boolean doCheck(FaunaEuropeaImportState state){
50 boolean result = true;
51 logger.warn("No checking for Authors not implemented");
52
53 return result;
54 }
55
56 /* (non-Javadoc)
57 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)
58 */
59 @Override
60 protected boolean doInvoke(FaunaEuropeaImportState state){
61 Map<String, MapWrapper<? extends CdmBase>> stores = state.getStores();
62 MapWrapper<TeamOrPersonBase> authorStore = (MapWrapper<TeamOrPersonBase>)stores.get(ICdmIO.TEAM_STORE);
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 handled: " + (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 // save authors
120 getAgentService().saveAgentAll(authorStore.objects());
121
122 if(logger.isInfoEnabled()) { logger.info("End making authors ..."); }
123
124 return true;
125
126 } catch (SQLException e) {
127 logger.error("SQLException:" + e);
128 return false;
129 }
130 }
131
132 /* (non-Javadoc)
133 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
134 */
135 protected boolean isIgnore(FaunaEuropeaImportState state){
136 return ! state.getConfig().isDoAuthors();
137 }
138
139 }