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