Project

General

Profile

Download (5.4 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(19-19/21)