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
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 }