View Javadoc

1   /**
2    * 
3    */
4   package de.tivsource.page.admin.backup;
5   
6   import java.io.File;
7   import java.io.FileInputStream;
8   import java.io.FileOutputStream;
9   import java.io.IOException;
10  import java.util.Iterator;
11  import java.util.List;
12  import java.util.zip.ZipEntry;
13  import java.util.zip.ZipOutputStream;
14  
15  import org.apache.logging.log4j.LogManager;
16  import org.apache.logging.log4j.Logger;
17  
18  import de.tivsource.page.dao.administration.RoleDaoLocal;
19  import de.tivsource.page.dao.administration.UserDaoLocal;
20  import de.tivsource.page.dao.appointment.AppointmentDaoLocal;
21  import de.tivsource.page.dao.companion.CompanionDaoLocal;
22  import de.tivsource.page.dao.companion.CompanionGroupDaoLocal;
23  import de.tivsource.page.dao.event.EventDaoLocal;
24  import de.tivsource.page.dao.gallery.GalleryDaoLocal;
25  import de.tivsource.page.dao.location.LocationDaoLocal;
26  import de.tivsource.page.dao.manual.ManualDaoLocal;
27  import de.tivsource.page.dao.message.MessageDaoLocal;
28  import de.tivsource.page.dao.news.NewsDaoLocal;
29  import de.tivsource.page.dao.page.PageDaoLocal;
30  import de.tivsource.page.dao.picture.PictureDaoLocal;
31  import de.tivsource.page.dao.property.PropertyDaoLocal;
32  import de.tivsource.page.dao.reservation.ReservationDaoLocal;
33  import de.tivsource.page.dao.slider.SliderDaoLocal;
34  import de.tivsource.page.dao.vacancy.VacancyDaoLocal;
35  
36  /**
37   * @author Marc Michele
38   *
39   */
40  public class BackupZipFile {
41  
42      /**
43       * Statischer Logger der Klasse.
44       */
45      private static final Logger LOGGER = LogManager.getLogger(BackupZipFile.class);
46  
47      private static GalleryDaoLocal galleryDaoLocal;
48  
49      private static PictureDaoLocal pictureDaoLocal;
50  
51      private static PageDaoLocal pageDaoLocal;
52  
53      private static UserDaoLocal userDaoLocal;
54  
55      private static RoleDaoLocal roleDaoLocal;
56  
57      private static PropertyDaoLocal propertyDaoLocal;
58      
59      private static LocationDaoLocal locationDaoLocal;
60  
61      private static EventDaoLocal eventDaoLocal;
62  
63      private static MessageDaoLocal messageDaoLocal;
64  
65      private static NewsDaoLocal newsDaoLocal;
66  
67      private static ReservationDaoLocal reservationDaoLocal;
68  
69      private static VacancyDaoLocal vacancyDaoLocal;
70  
71      private static ManualDaoLocal manualDaoLocal;
72  
73      private static AppointmentDaoLocal appointmentDaoLocal;
74  
75      private static CompanionGroupDaoLocal companionGroupDaoLocal;
76  
77      private static CompanionDaoLocal companionDaoLocal;
78  
79      private static SliderDaoLocal sliderDaoLocal;
80      
81      private static byte[] buffer = new byte[1024];
82  
83      public static void setGalleryDaoLocal(GalleryDaoLocal galleryDaoLocal) {
84  		BackupZipFile.galleryDaoLocal = galleryDaoLocal;
85  	}
86  
87  	public static void setPictureDaoLocal(PictureDaoLocal pictureDaoLocal) {
88  		BackupZipFile.pictureDaoLocal = pictureDaoLocal;
89  	}
90  
91  	public static void setPageDaoLocal(PageDaoLocal pageDaoLocal) {
92          BackupZipFile.pageDaoLocal = pageDaoLocal;
93      }
94  
95      public static void setUserDaoLocal(UserDaoLocal userDaoLocal) {
96          BackupZipFile.userDaoLocal = userDaoLocal;
97      }
98  
99      public static void setRoleDaoLocal(RoleDaoLocal roleDaoLocal) {
100         BackupZipFile.roleDaoLocal = roleDaoLocal;
101     }
102 
103     public static void setPropertyDaoLocal(PropertyDaoLocal propertyDaoLocal) {
104         BackupZipFile.propertyDaoLocal = propertyDaoLocal;
105     }
106 
107     public static void setLocationDaoLocal(LocationDaoLocal locationDaoLocal) {
108         BackupZipFile.locationDaoLocal = locationDaoLocal;
109     }
110 
111     public static void setEventDaoLocal(EventDaoLocal eventDaoLocal) {
112         BackupZipFile.eventDaoLocal = eventDaoLocal;
113     }
114 
115     public static void setMessageDaoLocal(MessageDaoLocal messageDaoLocal) {
116         BackupZipFile.messageDaoLocal = messageDaoLocal;
117     }
118 
119     public static void setNewsDaoLocal(NewsDaoLocal newsDaoLocal) {
120 		BackupZipFile.newsDaoLocal = newsDaoLocal;
121 	}
122 
123 	public static void setReservationDaoLocal(ReservationDaoLocal reservationDaoLocal) {
124         BackupZipFile.reservationDaoLocal = reservationDaoLocal;
125     }
126 
127     public static void setVacancyDaoLocal(VacancyDaoLocal vacancyDaoLocal) {
128         BackupZipFile.vacancyDaoLocal = vacancyDaoLocal;
129     }
130 
131     public static void setManualDaoLocal(ManualDaoLocal manualDaoLocal) {
132 		BackupZipFile.manualDaoLocal = manualDaoLocal;
133 	}
134 
135 	public static void setAppointmentDaoLocal(AppointmentDaoLocal appointmentDaoLocal) {
136         BackupZipFile.appointmentDaoLocal = appointmentDaoLocal;
137     }
138 
139     public static void setCompanionGroupDaoLocal(CompanionGroupDaoLocal companionGroupDaoLocal) {
140         BackupZipFile.companionGroupDaoLocal = companionGroupDaoLocal;
141     }
142 
143     public static void setCompanionDaoLocal(CompanionDaoLocal companionDaoLocal) {
144         BackupZipFile.companionDaoLocal = companionDaoLocal;
145     }
146 
147     /**
148      * @param sliderDaoLocal the sliderDaoLocal to set
149      */
150     public static void setSliderDaoLocal(SliderDaoLocal sliderDaoLocal) {
151         BackupZipFile.sliderDaoLocal = sliderDaoLocal;
152     }
153 
154     public static File getZipFile() throws IOException {
155         LOGGER.info("getZipFile() aufgerufen.");
156 
157         // Zip-Datei erstellen und Stream bereitstellen.
158         File zipFile = File.createTempFile("complete_tivpage", "zip");
159         ZipOutputStream outZipFile = new ZipOutputStream(new FileOutputStream(zipFile));
160 
161         /*
162          * Backup Gallery
163          */
164         BackupGallery.setGalleryDaoLocal(galleryDaoLocal);
165         addData(BackupGallery.getBackupFile(), outZipFile, "gallery.csv");
166 
167         /*
168          * Backup Picture
169          */
170         BackupPicture.setPictureDaoLocal(pictureDaoLocal);
171         addData(BackupPicture.getBackupFile(), outZipFile, "picture.csv");
172 
173         /*
174          * Backup Page
175          */
176         BackupPage.setPageDaoLocal(pageDaoLocal);
177         BackupPage backupPage = new BackupPage();
178         addMultiData(backupPage.getBackupFiles(), outZipFile);
179 
180         /*
181          * Backup Role
182          */
183         BackupRole.setRoleDaoLocal(roleDaoLocal);
184         addData(BackupRole.getBackupFile(), outZipFile, "role.csv");
185 
186         /*
187          * Backup User
188          */
189         BackupUser.setUserDaoLocal(userDaoLocal);
190         addData(BackupUser.getBackupFile(), outZipFile, "user.csv");
191 
192         /*
193          * Backup Property
194          */
195         BackupProperty.setPropertyDaoLocal(propertyDaoLocal);
196         addData(BackupProperty.getBackupFile(), outZipFile, "property.csv");
197 
198         /*
199          * Backup Location
200          */
201         BackupLocation.setLocationDaoLocal(locationDaoLocal);
202         addData(BackupLocation.getBackupFile(), outZipFile, "location.csv");
203 
204         /*
205          * Backup Event
206          */
207         BackupEvent.setEventDaoLocal(eventDaoLocal);;
208         addData(BackupEvent.getBackupFile(), outZipFile, "event.csv");
209 
210         /*
211          * Backup Message
212          */
213         BackupMessage.setMessageDaoLocal(messageDaoLocal);
214         BackupMessage backupMessage = new BackupMessage();
215         addMultiData(backupMessage.getBackupFiles(), outZipFile);
216 
217         /*
218          * Backup News
219          */
220         BackupNews.setNewsDaoLocal(newsDaoLocal);
221         BackupNews backupNews = new BackupNews();
222         addMultiData(backupNews.getBackupFiles(), outZipFile);
223 
224         /*
225          * Backup Reservation
226          */
227         BackupReservation.setReservationDaoLocal(reservationDaoLocal);
228         BackupReservation backupReservation = new BackupReservation();
229         addMultiData(backupReservation.getBackupFiles(), outZipFile);
230 
231         /*
232          * Backup Vacancy
233          */
234         BackupVacancy.setVacancyDaoLocal(vacancyDaoLocal);
235         BackupVacancy backupVacancy = new BackupVacancy();
236         addMultiData(backupVacancy.getBackupFiles(), outZipFile);
237 
238         /*
239          * Backup Manual
240          */
241         BackupManual.setManualDaoLocal(manualDaoLocal);
242         BackupManual backupManual = new BackupManual();
243         addMultiData(backupManual.getBackupFiles(), outZipFile);
244 
245         /*
246          * Backup Appointment
247          */
248         BackupAppointment.setAppointmentDaoLocal(appointmentDaoLocal);
249         BackupAppointment backupAppointment = new BackupAppointment();
250         addMultiData(backupAppointment.getBackupFiles(), outZipFile);
251 
252         /*
253          * Backup CompanionGroup
254          */
255         BackupCompanionGroup.setCompanionGroupDaoLocal(companionGroupDaoLocal);
256         addData(BackupCompanionGroup.getBackupFile(), outZipFile, "companionGroup.csv");
257 
258         /*
259          * Backup Companion
260          */
261         BackupCompanion.setCompanionDaoLocal(companionDaoLocal);
262         addData(BackupCompanion.getBackupFile(), outZipFile, "companion.csv");
263 
264         /*
265          * Backup Slider
266          */
267         BackupSlider.setSliderDaoLocal(sliderDaoLocal);
268         addData(BackupSlider.getBackupFile(), outZipFile, "slider.csv");
269         
270         // Schließe die Zip-Datei.
271         outZipFile.close();
272 
273         return zipFile;
274     }
275 
276     private static void addData(File file, ZipOutputStream zipOutputStream,
277             String filename) throws IOException {
278 
279         FileInputStream fileInputStream = new FileInputStream(file);
280 
281         // Ab hier beginnt der Exhibition Teil
282         zipOutputStream.putNextEntry(new ZipEntry(filename));
283 
284         // Transfer bytes from the file to the ZIP file
285         int len;
286         while ((len = fileInputStream.read(buffer)) > 0) {
287             zipOutputStream.write(buffer, 0, len);
288         }
289 
290         zipOutputStream.closeEntry();
291         fileInputStream.close();
292         file.delete();
293     }
294 
295     private static void addMultiData(List<File> files,
296             ZipOutputStream zipOutputStream) throws IOException {
297         Iterator<File> fileIterator = files.iterator();
298         while (fileIterator.hasNext()) {
299             File next = fileIterator.next();
300             addData(next, zipOutputStream, next.getName());
301         }
302     }
303 
304 }// Ende class