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