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
;
15 import org
.apache
.log4j
.Logger
;
16 import org
.springframework
.stereotype
.Component
;
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
;
36 public class BerlinModelUserImport
extends BerlinModelImportBase
{
37 private static final Logger logger
= Logger
.getLogger(BerlinModelUserImport
.class);
39 public static final String NAMESPACE
= "User";
41 private static int modCount
= 100;
42 private static final String dbTableName
= "webAuthorisation";
43 private static final String pluralString
= "Users";
45 public BerlinModelUserImport(){
50 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
53 protected boolean doCheck(BerlinModelImportState state
){
54 IOValidator
<BerlinModelImportState
> validator
= new BerlinModelUserImportValidator();
55 return validator
.validate(state
);
58 protected void doInvoke(BerlinModelImportState state
){
59 boolean success
= true;
60 MapWrapper
<User
> userMap
= (MapWrapper
<User
>)state
.getStore(ICdmIO
.USER_STORE
);
62 BerlinModelImportConfigurator config
= state
.getConfig();
63 Source source
= config
.getSource();
67 logger
.info("start make "+pluralString
+" ...");
69 //get data from database
72 " FROM "+dbTableName
+" " ;
73 ResultSet rs
= source
.getResultSet(strQuery
) ;
74 String namespace
= dbTableName
;
81 if ((i
++ % modCount
) == 0 && i
!= 1 ){ logger
.info(""+pluralString
+" handled: " + (i
-1));}
84 int authorisationId
= rs
.getInt("AuthorisationId");
85 String username
= rs
.getString("Username");
86 String pwd
= rs
.getString("Password");
88 if (username
!= null){
89 username
= username
.trim();
91 User user
= User
.NewInstance(username
, pwd
);
93 Person person
= Person
.NewInstance();
94 user
.setPerson(person
);
97 * this is a crucial call, otherwise the password will not be set correctly
98 * and the whole authenticataion will not work
100 getUserService().createUser(user
);
102 dbAttrName
= "RealName";
103 cdmAttrName
= "TitleCache";
104 success
&= ImportHelper
.addStringValue(rs
, person
, dbAttrName
, cdmAttrName
);
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();
115 } //while rs.hasNext()
116 } catch (SQLException e
) {
117 logger
.error("SQLException:" + e
);
118 state
.setUnsuccessfull();
122 logger
.info("save " + i
+ " "+pluralString
+ " ...");
123 getUserService().save(userMap
.objects());
125 logger
.info("end make "+pluralString
+" ..." + getSuccessString(success
));;
127 state
.setUnsuccessfull();
134 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getTableName()
137 protected String
getTableName() {
142 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getPluralString()
145 public String
getPluralString() {
150 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
152 protected boolean isIgnore(BerlinModelImportState state
){
153 return ! state
.getConfig().isDoUser();
157 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
160 protected String
getRecordQuery(BerlinModelImportConfigurator config
) {
161 return null; // not needed at the moment
165 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#doPartition(eu.etaxonomy.cdm.io.berlinModel.in.ResultSetPartitioner, eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState)
167 public boolean doPartition(ResultSetPartitioner partitioner
, BerlinModelImportState state
) {
168 return true; // not needed at the moment
172 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
174 public Map
<Object
, Map
<String
, ?
extends CdmBase
>> getRelatedObjectsForPartition(ResultSet rs
) {
175 return null; //not needed at the moment