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  import java.util.Map;
15  
16  import org.apache.logging.log4j.LogManager;
17  import org.apache.logging.log4j.Logger;
18  
19  import de.tivsource.page.dao.message.MessageDaoLocal;
20  import de.tivsource.page.entity.message.Message;
21  
22  /**
23   * @author Marc Michele
24   *
25   */
26  public class RestoreMessage {
27  
28      /**
29       * Statischer Logger der Klasse.
30       */
31      private static final Logger LOGGER = LogManager.getLogger(RestoreMessage.class);
32      
33      private MessageDaoLocal messageDaoLocal;
34  
35      private Map<String, InputStream> streams;
36  
37      public RestoreMessage(MessageDaoLocal messageDaoLocal,
38              Map<String, InputStream> streams) {
39          super();
40          this.messageDaoLocal = messageDaoLocal;
41          this.streams = streams;
42      }
43  
44      /**
45       * Generiert aus der Datei die entsprechenden News-Einträge.
46       * @throws ParseException 
47       */
48      public void generate() {
49          LOGGER.info("generate() aufgerufen.");
50          cleanup();
51          BufferedReader in = new BufferedReader(
52                  new InputStreamReader(streams.get("message.csv")));
53          try {
54              String line = null;
55              while ((line = in.readLine()) != null) {
56                  if (!line.startsWith("[Format Definition]")) {
57                      Message message = convert(line);
58                      messageDaoLocal.merge(message);
59                  }
60              }
61          } catch (IOException e) {
62              e.printStackTrace();
63          }
64      }// Ende generate()
65      
66      private Message convert(String line) {
67          // Zerlege CSV-Zeile in String-Array.
68          String[] items = line.split("\\|");
69  
70          // uuid|gender|firstname|lastname|mail|telephone|fax|content|privacy|created|createdAddress|
71  
72          Message message = new Message();
73  
74          message.setUuid(items[0]);
75          message.setGender(items[1].equals("true") ? true : false);
76          message.setFirstname(items[2]);
77          message.setLastname(items[3]);
78          message.setMail(items[4]);
79          message.setTelephone(items[5]);
80          message.setFax(items[6]);
81          message.setContent(createContent(items[7]));
82          message.setPrivacy(items[8].equals("true") ? true : false);
83          message.setCreated(convertDateString(items[9]));
84          message.setCreatedAddress(items[10]);
85          
86          return message;
87      }
88  
89      private String createContent(String filename) {
90          BufferedReader input = new BufferedReader(new InputStreamReader(streams.get(filename)));
91          StringBuffer contentString = new StringBuffer();
92          try {
93              String lineInput = null;
94              while ((lineInput = input.readLine()) != null) {
95                  contentString.append(lineInput);
96                  contentString.append("\n");
97              }
98          } catch (IOException e) {
99              e.printStackTrace();
100         }
101         return contentString.toString();
102     }
103 
104     /**
105      * Methode zum Konvertieren eines Strings des Formates "1970-12-01 23:59:59" in ein Date-Object. 
106      * @param dateString
107      * @return
108      */
109     private Date convertDateString(String dateString) {
110         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
111         try {
112             return simpleDateFormat.parse(dateString);
113         } catch (ParseException e) {
114             return new Date();
115         }
116     }// Ende convertDateString(String dateString)
117 
118     private void cleanup() {
119         if(messageDaoLocal.countAll() > 0) {
120             Iterator<Message> messageIterator = messageDaoLocal.findAll(0, messageDaoLocal.countAll()).iterator();
121             while(messageIterator.hasNext()) {
122                 Message next = messageIterator.next();
123                 messageDaoLocal.delete(next);
124             }
125         }
126     }// Ende cleanup()
127     
128 }// Ende class