View Javadoc
1   package org.argeo.people.core.imports;
2   
3   import static org.argeo.connect.util.ConnectUtils.notEmpty;
4   
5   import java.util.Dictionary;
6   import java.util.Map;
7   
8   import org.apache.commons.logging.Log;
9   import org.apache.commons.logging.LogFactory;
10  import org.argeo.connect.UserAdminService;
11  import org.argeo.connect.core.UserAdminServiceImpl;
12  import org.argeo.connect.util.ConnectUtils;
13  import org.argeo.naming.LdapAttrs;
14  import org.argeo.util.CsvParserWithLinesAsMap;
15  import org.osgi.service.useradmin.Role;
16  import org.osgi.service.useradmin.User;
17  
18  /** Base utility to load users demo data **/
19  public class UsersCsvFileParser extends CsvParserWithLinesAsMap {
20  	private final static Log log = LogFactory.getLog(UsersCsvFileParser.class);
21  
22  	private final UserAdminServiceImpl userAdminService;
23  
24  	public UsersCsvFileParser(UserAdminService userAdminService) {
25  		this.userAdminService = (UserAdminServiceImpl) userAdminService;
26  	}
27  
28  	@SuppressWarnings({ "rawtypes", "unchecked" })
29  	@Override
30  	protected void processLine(Integer lineNumber, Map<String, String> line) {
31  		String userName = line.get("username");
32  		String firstName = line.get("firstName");
33  		String lastName = line.get("lastName");
34  		String email = line.get("email");
35  		String pwd = line.get("password");
36  		String desc = line.get("description");
37  
38  		User existingUser = userAdminService.getUserFromLocalId(userName);
39  		if (existingUser != null) {
40  			log.warn("User " + userName
41  					+ " already exists in the system, skipping line");
42  			return;
43  		}
44  		String dn = userAdminService.buildDefaultDN(userName, Role.USER);
45  		User user = (User) userAdminService.getUserAdmin().createRole(dn,
46  				Role.USER);
47  
48  		Dictionary props = user.getProperties();
49  
50  		if (notEmpty(lastName))
51  			props.put(LdapAttrs.sn.name(), lastName);
52  
53  		if (notEmpty(firstName))
54  			props.put(LdapAttrs.givenName.name(), firstName);
55  
56  		String cn = (firstName.trim() + " " + lastName.trim() + " ").trim();
57  		if (notEmpty(cn))
58  			props.put(LdapAttrs.cn.name(), cn);
59  
60  		if (notEmpty(email))
61  			props.put(LdapAttrs.mail.name(), email);
62  
63  		if (notEmpty(desc))
64  			props.put(LdapAttrs.description.name(), desc);
65  		char[] password = null;
66  		if (notEmpty(pwd))
67  			password = pwd.toCharArray();
68  		else
69  			password = "demo".toCharArray();
70  		user.getCredentials().put(null, password);
71  	}
72  }