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.HashMap;
14 import java.util.Iterator;
15 import java.util.Map;
16
17 import org.apache.logging.log4j.LogManager;
18 import org.apache.logging.log4j.Logger;
19
20 import de.tivsource.page.dao.manual.ManualDaoLocal;
21 import de.tivsource.page.dao.picture.PictureDaoLocal;
22 import de.tivsource.page.entity.contentitem.Content;
23 import de.tivsource.page.entity.contentitem.ContentItem;
24 import de.tivsource.page.entity.enumeration.Language;
25 import de.tivsource.page.entity.manual.Manual;
26 import de.tivsource.page.entity.namingitem.Description;
27 import de.tivsource.page.entity.namingitem.NamingItem;
28
29
30
31
32
33 public class RestoreManual {
34
35
36
37
38 private static final Logger LOGGER = LogManager.getLogger(RestoreManual.class);
39
40 private ManualDaoLocal manualDaoLocal;
41
42 private PictureDaoLocal pictureDaoLocal;
43
44 private Map<String, InputStream> streams;
45
46 public RestoreManual(ManualDaoLocal manualDaoLocal, PictureDaoLocal pictureDaoLocal,
47 Map<String, InputStream> streams) {
48 super();
49 this.manualDaoLocal = manualDaoLocal;
50 this.pictureDaoLocal = pictureDaoLocal;
51 this.streams = streams;
52 }
53
54
55
56
57
58 public void generate() {
59 LOGGER.info("generate() aufgerufen.");
60 cleanup();
61 BufferedReader in = new BufferedReader(
62 new InputStreamReader(streams.get("manual.csv")));
63 try {
64 String line = null;
65 while ((line = in.readLine()) != null) {
66 if (!line.startsWith("[Format Definition]")) {
67 Manual manual = convert(line);
68 manualDaoLocal.merge(manual);
69 }
70 }
71 } catch (IOException e) {
72 e.printStackTrace();
73 }
74 }
75
76 private Manual convert(String line) {
77
78 String[] items = line.split("\\|");
79
80
81
82
83
84
85
86 Manual manual = new Manual();
87
88 manual.setUuid(items[0]);
89
90 Map<Language, Description> descriptionMap = new HashMap<Language, Description>();
91 descriptionMap.put(Language.DE, createDescription(
92 items[1], items[2], items[3],
93 items[4], Language.DE, manual));
94 descriptionMap.put(Language.EN, createDescription(
95 items[9], items[10], items[11],
96 items[12], Language.EN, manual));
97 manual.setDescriptionMap(descriptionMap);
98
99 Map<Language, Content> contentMap = new HashMap<Language, Content>();
100 contentMap.put(Language.DE, createContent(
101 items[5], items[6], convertDateString(items[7]),
102 convertDateString(items[8]), Language.DE, manual));
103 contentMap.put(Language.EN, createContent(
104 items[13], items[14], convertDateString(items[15]),
105 convertDateString(items[16]), Language.EN, manual));
106 manual.setContentMap(contentMap);
107
108 manual.setVisible(items[17].equals("true") ? true : false);
109 manual.setCreated(convertDateString(items[18]));
110 manual.setModified(convertDateString(items[19]));
111 manual.setModifiedBy(items[20]);
112 manual.setModifiedAddress(items[21]);
113 manual.setPicture(pictureDaoLocal.findByUuid(items[22]));
114 manual.setPictureOnPage(items[23].equals("true") ? true : false);
115
116 manual.setOrderNumber(0);
117
118 return manual;
119 }
120
121 private Description createDescription(
122 String uuid, String name, String description,
123 String keywords, Language language, NamingItem namingItem) {
124 Description pageDescription = new Description();
125 pageDescription.setUuid(uuid);
126 pageDescription.setName(name);
127 pageDescription.setDescription(description);
128 pageDescription.setKeywords(keywords);
129 pageDescription.setLanguage(language);
130 pageDescription.setNamingItem(namingItem);
131 return pageDescription;
132 }
133
134 private Content createContent(
135 String uuid, String filename, Date created,
136 Date modified, Language language, ContentItem contentItem) {
137 BufferedReader inDE = new BufferedReader(new InputStreamReader(streams.get(filename)));
138 StringBuffer contentString = new StringBuffer();
139 try {
140 String lineDE = null;
141 while ((lineDE = inDE.readLine()) != null) {
142 contentString.append(lineDE);
143 }
144 } catch (IOException e) {
145 e.printStackTrace();
146 }
147
148 Content content = new Content();
149 content.setUuid(uuid);
150 content.setContent(contentString.toString());
151 content.setContentItem(contentItem);
152 content.setCreated(created);
153 content.setLanguage(language);
154 content.setModified(modified);
155 return content;
156 }
157
158
159
160
161
162
163 private Date convertDateString(String dateString) {
164 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
165 try {
166 return simpleDateFormat.parse(dateString);
167 } catch (ParseException e) {
168 return new Date();
169 }
170 }
171
172 private void cleanup() {
173 if(manualDaoLocal.countAll() > 0) {
174 Iterator<Manual> manualIterator = manualDaoLocal.findAll(0, manualDaoLocal.countAll()).iterator();
175 while(manualIterator.hasNext()) {
176 Manual next = manualIterator.next();
177 manualDaoLocal.delete(next);
178 }
179 }
180 }
181
182 }