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.Iterator;
14 import java.util.Map;
15
16 import org.apache.logging.log4j.LogManager;
17 import org.apache.logging.log4j.Logger;
18
19 import de.tivsource.page.dao.event.EventDaoLocal;
20 import de.tivsource.page.dao.reservation.ReservationDaoLocal;
21 import de.tivsource.page.entity.reservation.Reservation;
22 import de.tivsource.page.enumeration.Origin;
23
24
25
26
27
28 public class RestoreReservation {
29
30
31
32
33 private static final Logger LOGGER = LogManager.getLogger(RestoreReservation.class);
34
35 private ReservationDaoLocal reservationDaoLocal;
36
37 private EventDaoLocal eventDaoLocal;
38
39 private Map<String, InputStream> streams;
40
41 public RestoreReservation(ReservationDaoLocal reservationDaoLocal,
42 EventDaoLocal eventDaoLocal, Map<String, InputStream> streams) {
43 super();
44 this.reservationDaoLocal = reservationDaoLocal;
45 this.eventDaoLocal = eventDaoLocal;
46 this.streams = streams;
47 }
48
49
50
51
52
53 public void generate() {
54 LOGGER.info("generate() aufgerufen.");
55 cleanup();
56 BufferedReader in = new BufferedReader(
57 new InputStreamReader(streams.get("reservation.csv")));
58 try {
59 String line = null;
60 while ((line = in.readLine()) != null) {
61 if (!line.startsWith("[Format Definition]")) {
62 Reservation reservation = convert(line);
63 reservationDaoLocal.merge(reservation);
64 }
65 }
66 } catch (IOException e) {
67 e.printStackTrace();
68 }
69 }
70
71 private Reservation convert(String line) {
72
73 String[] items = line.split("\\|");
74
75
76
77
78
79 Reservation reservation = new Reservation();
80
81 reservation.setUuid(items[0]);
82 reservation.setGender(items[1].equals("true") ? true : false);
83 reservation.setFirstname(items[2]);
84 reservation.setLastname(items[3]);
85 reservation.setEmail(items[4]);
86 reservation.setTelephone(items[5]);
87 reservation.setQuantity(Integer.parseInt(items[6]));
88 reservation.setTime(convertDateString(items[7]));
89 reservation.setWishes(createContent(items[8]));
90 reservation.setEvent(eventDaoLocal.findByUuid(items[9]));
91 reservation.setConfirmed(items[10].equals("true") ? true : false);
92 reservation.setCreated(convertDateString(items[11]));
93 reservation.setCreatedAddress(items[12]);
94
95 reservation.setConfirmedAddress(items[13]);
96 reservation.setConfirmedDate(items[14].length() > 0 ? convertDateString(items[14]) : null);
97 reservation.setConfirmedBy(items[15]);
98
99 reservation.setModified(convertDateString(items[16]));
100 reservation.setModifiedAddress(items[17]);
101 reservation.setModifiedBy(items[18]);
102
103 reservation.setOrigin(Origin.valueOf(items[19]));
104
105 return reservation;
106 }
107
108 private String createContent(String filename) {
109 BufferedReader input = new BufferedReader(new InputStreamReader(streams.get(filename)));
110 StringBuffer contentString = new StringBuffer();
111 try {
112 String lineInput = null;
113 while ((lineInput = input.readLine()) != null) {
114 contentString.append(lineInput);
115 contentString.append("\n");
116 }
117 } catch (IOException e) {
118 e.printStackTrace();
119 }
120 return contentString.toString();
121 }
122
123
124
125
126
127
128 private Date convertDateString(String dateString) {
129 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
130 try {
131 return simpleDateFormat.parse(dateString);
132 } catch (ParseException e) {
133 return new Date();
134 }
135 }
136
137 private void cleanup() {
138 if(reservationDaoLocal.countAll() > 0) {
139 Iterator<Reservation> reservationIterator = reservationDaoLocal.findAll(0, reservationDaoLocal.countAll()).iterator();
140 while(reservationIterator.hasNext()) {
141 Reservation next = reservationIterator.next();
142 reservationDaoLocal.delete(next);
143 }
144 }
145 }
146
147 }