View Javadoc

1   package de.tivsource.page.install;
2   
3   import java.io.BufferedReader;
4   import java.io.IOException;
5   import java.io.InputStream;
6   import java.io.InputStreamReader;
7   import java.io.UnsupportedEncodingException;
8   import java.security.NoSuchAlgorithmException;
9   import java.text.ParseException;
10  import java.text.SimpleDateFormat;
11  import java.util.ArrayList;
12  import java.util.Date;
13  import java.util.List;
14  
15  import de.tivsource.page.dao.administration.RoleDaoLocal;
16  import de.tivsource.page.dao.administration.UserDaoLocal;
17  import de.tivsource.page.entity.administration.Role;
18  import de.tivsource.page.entity.administration.User;
19  
20  public class CreateUser {
21  
22      private UserDaoLocal userDaoLocal;
23  
24      private RoleDaoLocal roleDaoLocal;
25  
26      public void setUserDaoLocal(UserDaoLocal userDaoLocal) {
27      	this.userDaoLocal = userDaoLocal;
28      }
29  
30      public void setRoleDaoLocal(RoleDaoLocal roleDaoLocal) {
31      	this.roleDaoLocal = roleDaoLocal;
32      }
33  
34      public void generate() {
35      	InputStream inputStream = CreateUser.class.getClassLoader().getResourceAsStream("csv/user.csv");
36      	generate(inputStream);
37      }// Ende generate()
38  
39      public void generate(InputStream inputStream) {
40          BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
41          try {
42              String line = null;
43              while ((line = in.readLine()) != null) {
44                  if (!line.startsWith("[Format Definition]")) {
45                      User user = convert(line);
46                      userDaoLocal.merge(user);
47                  }
48              }
49          } catch (IOException e) {
50              e.printStackTrace();
51          } catch (NoSuchAlgorithmException e) {
52              e.printStackTrace();
53          }
54      }
55      
56      private User convert(String line) throws NoSuchAlgorithmException, UnsupportedEncodingException {
57  
58          // uuid|username|email|firstname|lastname|password|roles|added|modified|ip|
59      	// Zerlege CSV-Zeile in String-Array.
60      	String[] items = line.split("\\|");
61  
62      	// Erstelle Announcement-Objekt
63      	User user = new User();
64  
65      	user.setUuid(items[0]);
66      	user.setUsername(items[1]);
67      	user.setEmail(items[2]);
68          user.setFirstname(items[3]);
69          user.setLastname(items[4]);
70          user.setPassword(items[5]);
71  
72          // Erzeuge Role-List.
73          List<Role> roles = new ArrayList<Role>();
74  
75          // Zerlege CSV-String.
76          String[] csvTags = items[6].split(";");
77  
78          // Laufe durch das Array und füge die Tags der Tag-Liste hinzu.
79          for (int i = 0; i < csvTags.length; i++) {
80              roles.add(roleDaoLocal.findByTechnical(csvTags[i]));
81          }
82          user.setRoles(roles);
83  
84      	// Füge Erstellungsdatum hinzu.
85      	user.setCreated(convertDateString(items[7]));
86      	user.setModified(convertDateString(items[8]));
87  
88      	// Setze IP auf localhost.
89      	user.setModifiedAddress(items[9]);
90  
91      	user.setModifiedBy(items[10]);
92  
93      	return user;
94      }// Ende convert(String line)
95  
96      /**
97       * Methode zum Konvertieren eines Strings des Formates "1970-12-01 23:59:59" in ein Date-Object. 
98       * @param dateString
99       * @return
100      */
101     private Date convertDateString(String dateString) {
102         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
103         try {
104             return simpleDateFormat.parse(dateString);
105         } catch (ParseException e) {
106             return new Date();
107         }
108     }
109 
110 }// Ende class