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.security.NoSuchAlgorithmException;
12 import java.text.ParseException;
13 import java.text.SimpleDateFormat;
14 import java.util.Date;
15 import java.util.HashMap;
16 import java.util.Iterator;
17 import java.util.Map;
18
19 import org.apache.logging.log4j.LogManager;
20 import org.apache.logging.log4j.Logger;
21
22 import de.tivsource.page.dao.gallery.GalleryDaoLocal;
23 import de.tivsource.page.dao.picture.PictureDaoLocal;
24 import de.tivsource.page.entity.enumeration.Language;
25 import de.tivsource.page.entity.picture.Picture;
26 import de.tivsource.page.entity.picture.PictureDescription;
27 import de.tivsource.page.entity.picture.PictureUrl;
28 import de.tivsource.page.enumeration.UrlType;
29
30
31
32
33
34 public class RestorePicture {
35
36
37
38
39 private static final Logger LOGGER = LogManager.getLogger(RestorePicture.class);
40
41 private GalleryDaoLocal galleryDaoLocal;
42
43 private PictureDaoLocal pictureDaoLocal;
44
45 public RestorePicture(GalleryDaoLocal galleryDaoLocal, PictureDaoLocal pictureDaoLocal) {
46 super();
47 this.galleryDaoLocal = galleryDaoLocal;
48 this.pictureDaoLocal = pictureDaoLocal;
49 }
50
51 public void generate(InputStream inputStream) {
52 LOGGER.debug("generate(InputStream inputStream) aufgerufen");
53 cleanup();
54 BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
55 try {
56 String line = null;
57 while ((line = in.readLine()) != null) {
58 if (!line.startsWith("[Format Definition]")) {
59 Picture picture = convert(line);
60 pictureDaoLocal.merge(picture);
61 }
62 }
63 } catch (IOException e) {
64 e.printStackTrace();
65 } catch (NoSuchAlgorithmException e) {
66 e.printStackTrace();
67 }
68 }
69
70 private Picture convert(String line) throws NoSuchAlgorithmException, UnsupportedEncodingException {
71
72
73
74
75
76
77
78 String[] items = line.split("\\|");
79
80
81 Picture picture = new Picture();
82
83 picture.setUuid(items[0]);
84
85 Map<Language, PictureDescription> descriptionMap = new HashMap<Language, PictureDescription>();
86 descriptionMap.put(Language.DE, createDescription(
87 items[1], items[2], items[3],
88 items[4], Language.DE, picture));
89 descriptionMap.put(Language.EN, createDescription(
90 items[5], items[6], items[7],
91 items[8], Language.EN, picture));
92 picture.setDescriptionMap(descriptionMap);
93
94
95 Map<UrlType, PictureUrl> pictureUrls = new HashMap<UrlType, PictureUrl>();
96 String[] urlItems = items[9].split(";");
97 for (String element : urlItems) {
98 PictureUrl pictureUrl = createPictureUrl(element, picture);
99 pictureUrls.put(pictureUrl.getUrlType(), pictureUrl);
100 }
101 picture.setPictureUrls(pictureUrls);
102
103
104 picture.setOrderNumber(Integer.parseInt(items[10]));
105 picture.setVisible(items[11].equals("true") ? true : false);
106 picture.setGallery(galleryDaoLocal.findByUuid(items[12]));
107 picture.setCreated(convertDateString(items[13]));
108 picture.setModified(convertDateString(items[14]));
109 picture.setModifiedBy(items[15]);
110 picture.setModifiedAddress(items[16]);
111
112 return picture;
113 }
114
115
116
117
118
119
120 private Date convertDateString(String dateString) {
121 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
122 try {
123 return simpleDateFormat.parse(dateString);
124 } catch (ParseException e) {
125 return new Date();
126 }
127 }
128
129 private PictureDescription createDescription(String uuid, String name, String description, String keywords, Language language, Picture picture) {
130 PictureDescription pageDescription = new PictureDescription();
131 pageDescription.setUuid(uuid);
132 pageDescription.setName(name);
133 pageDescription.setDescription(description);
134 pageDescription.setKeywords(keywords);
135 pageDescription.setLanguage(language);
136 pageDescription.setPicture(picture);
137 return pageDescription;
138 }
139
140 private PictureUrl createPictureUrl(String input, Picture picture) {
141 String[] items = input.split(",");
142
143 PictureUrl pictureUrl = new PictureUrl();
144 pictureUrl.setPicture(picture);
145 pictureUrl.setUrl(items[1]);
146
147 if (items[2].equals("THUMBNAIL")) {
148 pictureUrl.setUrlType(UrlType.THUMBNAIL);
149 } else if (items[2].equals("NORMAL")) {
150 pictureUrl.setUrlType(UrlType.NORMAL);
151 } else if (items[2].equals("LARGE")) {
152 pictureUrl.setUrlType(UrlType.LARGE);
153 } else {
154 pictureUrl.setUrlType(UrlType.FULL);
155 }
156
157 pictureUrl.setUuid(items[0]);
158 return pictureUrl;
159 }
160
161 private void cleanup() {
162 if(pictureDaoLocal.countAll() > 0) {
163 Iterator<Picture> pictureIterator = pictureDaoLocal.findAll(0, pictureDaoLocal.countAll()).iterator();
164 while(pictureIterator.hasNext()) {
165 Picture next = pictureIterator.next();
166 pictureDaoLocal.delete(next);
167 }
168 }
169 }
170
171 }