1
2
3
4 package de.tivsource.page.restore;
5
6 import java.io.BufferedReader;
7 import java.io.IOException;
8 import java.io.InputStream;
9 import java.io.InputStreamReader;
10 import java.io.UnsupportedEncodingException;
11 import java.security.NoSuchAlgorithmException;
12 import java.text.ParseException;
13 import java.text.SimpleDateFormat;
14 import java.util.ArrayList;
15 import java.util.Date;
16 import java.util.Iterator;
17 import java.util.List;
18
19 import org.apache.logging.log4j.LogManager;
20 import org.apache.logging.log4j.Logger;
21
22 import de.tivsource.page.dao.administration.RoleDaoLocal;
23 import de.tivsource.page.dao.administration.UserDaoLocal;
24 import de.tivsource.page.entity.administration.Role;
25 import de.tivsource.page.entity.administration.User;
26
27
28
29
30
31 public class RestoreUser {
32
33
34
35
36 private static final Logger LOGGER = LogManager.getLogger(RestoreUser.class);
37
38 private UserDaoLocal userDaoLocal;
39
40 private RoleDaoLocal roleDaoLocal;
41
42 public RestoreUser(UserDaoLocal userDaoLocal, RoleDaoLocal roleDaoLocal) {
43 super();
44 this.userDaoLocal = userDaoLocal;
45 this.roleDaoLocal = roleDaoLocal;
46 }
47
48 public void generate(InputStream inputStream) {
49 LOGGER.info("generate(InputStream inputStream) aufgerufen.");
50 cleanup();
51 BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
52 try {
53 String line = null;
54 while ((line = in.readLine()) != null) {
55 if (!line.startsWith("[Format Definition]")) {
56 User user = convert(line);
57 userDaoLocal.merge(user);
58 }
59 }
60 } catch (IOException e) {
61 e.printStackTrace();
62 } catch (NoSuchAlgorithmException e) {
63 e.printStackTrace();
64 }
65 }
66
67 private User convert(String line) throws NoSuchAlgorithmException, UnsupportedEncodingException {
68
69
70
71 String[] items = line.split("\\|");
72
73
74 User user = new User();
75
76 user.setUuid(items[0]);
77 user.setUsername(items[1]);
78 user.setEmail(items[2]);
79 user.setFirstname(items[3]);
80 user.setLastname(items[4]);
81 user.setPassword(items[5]);
82
83
84 List<Role> roles = new ArrayList<Role>();
85
86
87 String[] csvTags = items[6].split(";");
88
89
90 for (int i = 0; i < csvTags.length; i++) {
91 roles.add(roleDaoLocal.findByUuid(csvTags[i]));
92 }
93 user.setRoles(roles);
94
95
96 user.setCreated(convertDateString(items[7]));
97 user.setModified(convertDateString(items[8]));
98 user.setModifiedBy(items[9]);
99 user.setModifiedAddress(items[10]);
100
101
102
103 return user;
104 }
105
106
107
108
109
110
111 private Date convertDateString(String dateString) {
112 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
113 try {
114 return simpleDateFormat.parse(dateString);
115 } catch (ParseException e) {
116 return new Date();
117 }
118 }
119
120 private void cleanup() {
121 if(userDaoLocal.countAll() > 0) {
122 Iterator<User> userIterator = userDaoLocal.findAll(0, userDaoLocal.countAll()).iterator();
123 while(userIterator.hasNext()) {
124 User next = userIterator.next();
125 next.setRoles(null);
126 userDaoLocal.merge(next);
127 userDaoLocal.delete(next);
128 }
129 }
130 }
131
132 }