daa5335484b13a4f93313d83252cb4316aea7582
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / berlinModel / in / BerlinModelUserImport.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.berlinModel.in;
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.berlinModel.in.validation.BerlinModelUserImportValidator;
19 import eu.etaxonomy.cdm.io.common.ICdmIO;
20 import eu.etaxonomy.cdm.io.common.IOValidator;
21 import eu.etaxonomy.cdm.io.common.ImportHelper;
22 import eu.etaxonomy.cdm.io.common.MapWrapper;
23 import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
24 import eu.etaxonomy.cdm.io.common.Source;
25 import eu.etaxonomy.cdm.model.agent.Person;
26 import eu.etaxonomy.cdm.model.common.CdmBase;
27 import eu.etaxonomy.cdm.model.common.User;
28
29
30 /**
31 * @author a.mueller
32 * @created 20.03.2008
33 * @version 1.0
34 */
35 @Component
36 public class BerlinModelUserImport extends BerlinModelImportBase {
37 private static final Logger logger = Logger.getLogger(BerlinModelUserImport.class);
38
39 public static final String NAMESPACE = "User";
40
41 private static int modCount = 100;
42 private static final String dbTableName = "webAuthorisation";
43 private static final String pluralString = "Users";
44
45 public BerlinModelUserImport(){
46 super();
47 }
48
49 /* (non-Javadoc)
50 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
51 */
52 @Override
53 protected boolean doCheck(BerlinModelImportState state){
54 IOValidator<BerlinModelImportState> validator = new BerlinModelUserImportValidator();
55 return validator.validate(state);
56 }
57
58 protected void doInvoke(BerlinModelImportState state){
59 boolean success = true;
60 MapWrapper<User> userMap = (MapWrapper<User>)state.getStore(ICdmIO.USER_STORE);
61
62 BerlinModelImportConfigurator config = state.getConfig();
63 Source source = config.getSource();
64 String dbAttrName;
65 String cdmAttrName;
66
67 logger.info("start make "+pluralString+" ...");
68
69 //get data from database
70 String strQuery =
71 " SELECT * " +
72 " FROM "+dbTableName+" " ;
73 ResultSet rs = source.getResultSet(strQuery) ;
74 String namespace = dbTableName;
75
76 int i = 0;
77 //for each reference
78 try{
79 while (rs.next()){
80 try{
81 if ((i++ % modCount ) == 0 && i!= 1 ){ logger.info(""+pluralString+" handled: " + (i-1));}
82
83 //
84 int authorisationId = rs.getInt("AuthorisationId");
85 String username = rs.getString("Username");
86 String pwd = rs.getString("Password");
87
88 if (username != null){
89 username = username.trim();
90 }
91 User user = User.NewInstance(username, pwd);
92
93 Person person = Person.NewInstance();
94 user.setPerson(person);
95
96 /*
97 * this is a crucial call, otherwise the password will not be set correctly
98 * and the whole authenticataion will not work
99 */
100 getUserService().createUser(user);
101
102 dbAttrName = "RealName";
103 cdmAttrName = "TitleCache";
104 success &= ImportHelper.addStringValue(rs, person, dbAttrName, cdmAttrName);
105
106
107 userMap.put(username, user);
108 state.putUser(username, user);
109 }catch(Exception ex){
110 logger.error(ex.getMessage());
111 ex.printStackTrace();
112 state.setUnsuccessfull();
113 success = false;
114 }
115 } //while rs.hasNext()
116 } catch (SQLException e) {
117 logger.error("SQLException:" + e);
118 state.setUnsuccessfull();
119 return;
120 }
121
122 logger.info("save " + i + " "+pluralString + " ...");
123 getUserService().save(userMap.objects());
124
125 logger.info("end make "+pluralString+" ..." + getSuccessString(success));;
126 if (!success){
127 state.setUnsuccessfull();
128 }
129 return;
130 }
131
132
133 /* (non-Javadoc)
134 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getTableName()
135 */
136 @Override
137 protected String getTableName() {
138 return dbTableName;
139 }
140
141 /* (non-Javadoc)
142 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getPluralString()
143 */
144 @Override
145 public String getPluralString() {
146 return pluralString;
147 }
148
149 /* (non-Javadoc)
150 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
151 */
152 protected boolean isIgnore(BerlinModelImportState state){
153 return ! state.getConfig().isDoUser();
154 }
155
156 /* (non-Javadoc)
157 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
158 */
159 @Override
160 protected String getRecordQuery(BerlinModelImportConfigurator config) {
161 return null; // not needed at the moment
162 }
163
164 /* (non-Javadoc)
165 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#doPartition(eu.etaxonomy.cdm.io.berlinModel.in.ResultSetPartitioner, eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState)
166 */
167 public boolean doPartition(ResultSetPartitioner partitioner, BerlinModelImportState state) {
168 return true; // not needed at the moment
169 }
170
171 /* (non-Javadoc)
172 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
173 */
174 public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {
175 return null; //not needed at the moment
176 }
177
178 }