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
24
25
26 public class RestoreMessage {
27
28
29
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
46
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 }
65
66 private Message convert(String line) {
67
68 String[] items = line.split("\\|");
69
70
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
106
107
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 }
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 }
127
128 }