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