View Javadoc

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   * @author Marc Michele
26   *
27   */
28  public class RestoreReservation {
29  
30      /**
31       * Statischer Logger der Klasse.
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       * Generiert aus der Datei die entsprechenden News-Einträge.
51       * @throws ParseException 
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      }// Ende generate()
70      
71      private Reservation convert(String line) {
72          // Zerlege CSV-Zeile in String-Array.
73          String[] items = line.split("\\|");
74  
75          // uuid|gender|firstname|lastname|email|telephone|quantity|time|wishes|event|
76          // confirmed|created|createdAddress|confirmedAddress|confirmedDate|confirmedBy|
77          // modified|modifiedAddress|modifiedBy|
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      * Methode zum Konvertieren eines Strings des Formates "1970-12-01 23:59:59" in ein Date-Object. 
125      * @param dateString
126      * @return
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     }// Ende convertDateString(String dateString)
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     }// Ende cleanup()
146     
147 }// Ende class