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.io.UnsupportedEncodingException;
11 import java.math.BigDecimal;
12 import java.security.NoSuchAlgorithmException;
13 import java.text.ParseException;
14 import java.text.SimpleDateFormat;
15 import java.util.Date;
16 import java.util.HashMap;
17 import java.util.Iterator;
18 import java.util.Map;
19
20 import org.apache.logging.log4j.LogManager;
21 import org.apache.logging.log4j.Logger;
22
23 import de.tivsource.page.dao.event.EventDaoLocal;
24 import de.tivsource.page.dao.location.LocationDaoLocal;
25 import de.tivsource.page.dao.picture.PictureDaoLocal;
26 import de.tivsource.page.entity.enumeration.Language;
27 import de.tivsource.page.entity.event.Event;
28 import de.tivsource.page.entity.location.Location;
29 import de.tivsource.page.entity.namingitem.Description;
30 import de.tivsource.page.entity.namingitem.NamingItem;
31
32
33
34
35
36 public class RestoreEvent {
37
38
39
40
41 private static final Logger LOGGER = LogManager.getLogger(RestoreEvent.class);
42
43 private LocationDaoLocal locationDaoLocal;
44
45 private EventDaoLocal eventDaoLocal;
46
47 private PictureDaoLocal pictureDaoLocal;
48
49 public RestoreEvent(LocationDaoLocal locationDaoLocal, EventDaoLocal eventDaoLocal, PictureDaoLocal pictureDaoLocal) {
50 super();
51 this.locationDaoLocal = locationDaoLocal;
52 this.eventDaoLocal = eventDaoLocal;
53 this.pictureDaoLocal = pictureDaoLocal;
54 }
55
56 public void generate(InputStream inputStream) {
57 LOGGER.debug("generate(InputStream inputStream) aufgerufen");
58 cleanup();
59 BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
60 try {
61 String line = null;
62 while ((line = in.readLine()) != null) {
63 if (!line.startsWith("[Format Definition]")) {
64 Event event = convert(line);
65 eventDaoLocal.merge(event);
66 }
67 }
68 } catch (IOException e) {
69 e.printStackTrace();
70 } catch (NoSuchAlgorithmException e) {
71 e.printStackTrace();
72 }
73 }
74
75 private Event convert(String line) throws NoSuchAlgorithmException, UnsupportedEncodingException {
76
77
78
79
80
81
82
83
84 String[] items = line.split("\\|");
85
86
87 Event event = new Event();
88
89 event.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, event));
95 descriptionMap.put(Language.EN, createDescription(
96 items[5], items[6], items[7],
97 items[8], Language.EN, event));
98 event.setDescriptionMap(descriptionMap);
99
100 event.setVisible(items[9].equals("true") ? true : false);
101 event.setCreated(convertDateString(items[10]));
102 event.setModified(convertDateString(items[11]));
103 event.setModifiedBy(items[12]);
104 event.setModifiedAddress(items[13]);
105
106 event.setPrice(new BigDecimal(items[14]));
107 event.setBeginning(convertDateString(items[15]));
108 event.setEnding(convertDateString(items[16]));
109 event.setDeadline(convertDateString(items[17]));
110
111 Location location = locationDaoLocal.findByUuidWidthEvents(items[18]);
112 location.getEvents().add(event);
113 event.setLocation(location);
114
115 event.setReservation(items[19].equals("true") ? true : false);
116 event.setPicture(pictureDaoLocal.findByUuid(items[20]));
117
118 event.setPiwikGoal(Integer.parseInt(items[21]));
119 event.setMaxReservations(Integer.parseInt(items[22]));
120 event.setMaxPersons(Integer.parseInt(items[23]));
121 event.setPictureOnPage(items[24].equals("true") ? true : false);
122
123 return event;
124 }
125
126
127
128
129
130
131 private Date convertDateString(String dateString) {
132 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
133 try {
134 return simpleDateFormat.parse(dateString);
135 } catch (ParseException e) {
136 return new Date();
137 }
138 }
139
140 private Description createDescription(
141 String uuid, String name, String description,
142 String keywords, Language language, NamingItem namingItem) {
143 Description pageDescription = new Description();
144 pageDescription.setUuid(uuid);
145 pageDescription.setName(name);
146 pageDescription.setDescription(description);
147 pageDescription.setKeywords(keywords);
148 pageDescription.setLanguage(language);
149 pageDescription.setNamingItem(namingItem);
150 return pageDescription;
151 }
152
153 private void cleanup() {
154 if(eventDaoLocal.countAll() > 0) {
155 Iterator<Event> locationIterator = eventDaoLocal.findAll(0, eventDaoLocal.countAll()).iterator();
156 while(locationIterator.hasNext()) {
157 Event next = locationIterator.next();
158 eventDaoLocal.delete(next);
159 }
160 }
161 }
162
163 }