View Javadoc

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.text.ParseException;
11  import java.text.SimpleDateFormat;
12  import java.util.Date;
13  import java.util.Iterator;
14  
15  import org.apache.logging.log4j.LogManager;
16  import org.apache.logging.log4j.Logger;
17  
18  import de.tivsource.page.dao.administration.RoleDaoLocal;
19  import de.tivsource.page.entity.administration.Role;
20  
21  /**
22   * @author Marc Michele
23   *
24   */
25  public class RestoreRole {
26  
27      /**
28       * Statischer Logger der Klasse.
29       */
30      private static final Logger LOGGER = LogManager.getLogger(RestoreRole.class);
31  
32      private RoleDaoLocal roleDaoLocal;
33  
34      public RestoreRole(RoleDaoLocal roleDaoLocal) {
35          super();
36          this.roleDaoLocal = roleDaoLocal;
37      }
38  
39      public void generate(InputStream inputStream) {
40          LOGGER.info("generate(InputStream inputStream) aufgerufen.");
41          cleanup();
42          BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
43          try {
44              String line = null;
45              while ((line = in.readLine()) != null) {
46                  if (!line.startsWith("[Format Definition]")) {
47                      Role role = convert(line);
48                      roleDaoLocal.merge(role);
49                  }
50              }
51          } catch (IOException e) {
52              e.printStackTrace();
53          }
54  
55      }// Ende generate()
56  
57      private Role convert(String line) {
58          // Zerlege CSV-Zeile in String-Array.
59          String[] items = line.split("\\|");
60  
61          Role role = new Role();
62          role.setUuid(items[0]);
63          role.setTechnical(items[1]);
64          role.setCreated(convertDateString(items[2]));
65          role.setModified(convertDateString(items[3]));
66          role.setModifiedBy(items[4]);
67          role.setModifiedAddress(items[5]);
68  
69          return role;
70      }
71  
72      /**
73       * Methode zum Konvertieren eines Strings des Formates "1970-12-01 23:59:59" in ein Date-Object. 
74       * @param dateString
75       * @return
76       */
77      private Date convertDateString(String dateString) {
78          SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
79          try {
80              return simpleDateFormat.parse(dateString);
81          } catch (ParseException e) {
82              return new Date();
83          }
84      }// Ende convertDateString(String dateString)
85  
86      private void cleanup() {
87          if(roleDaoLocal.countAll() > 0) {
88              Iterator<Role> roleIterator = roleDaoLocal.findAll(0, roleDaoLocal.countAll()).iterator();
89              while(roleIterator.hasNext()) {
90                  Role next = roleIterator.next();
91                  next.setUsers(null);
92                  roleDaoLocal.merge(next);
93                  roleDaoLocal.delete(next);
94              }
95          }
96      }// Ende cleanup()
97      
98  }// Ende class