View Javadoc

1   package de.tivsource.page.backup;
2   
3   import java.io.BufferedWriter;
4   import java.io.File;
5   import java.io.FileWriter;
6   import java.io.IOException;
7   import java.text.SimpleDateFormat;
8   import java.util.ArrayList;
9   import java.util.Iterator;
10  import java.util.List;
11  
12  import org.apache.logging.log4j.LogManager;
13  import org.apache.logging.log4j.Logger;
14  
15  import de.tivsource.page.common.css.CSSFile;
16  import de.tivsource.page.dao.cssfile.CSSFileDaoLocal;
17  
18  /**
19   * Klasse die dazu dient eine Datensicherung der benutzen CSS-Dateien und
20   * Objekte zu erstellen.
21   *
22   * @author Marc Michele
23   *
24   */
25  public class BackupCSSFile {
26  
27      /**
28       * Statischer Logger der Klasse.
29       */
30      private static final Logger LOGGER = LogManager
31              .getLogger(BackupCSSFile.class);
32  
33      /**
34       * DAO-Klasse für CSSFile Objekte.
35       */
36      private CSSFileDaoLocal cssFileDaoLocal;
37  
38      /**
39       * Dateien die in die Sicherung mit einbezogen werden sollen.
40       */
41      private List<File> backupFiles = new ArrayList<File>();
42  
43      /**
44       * Konstruktor der Sicherungsklasse, es muss lediglich die DAO-Klasse
45       * übergeben werden.
46       *
47       * @param cssFileDaoLocalInput - DAO Klasse für CSSFile Objekte
48       */
49      public BackupCSSFile(final CSSFileDaoLocal cssFileDaoLocalInput) {
50          super();
51          this.cssFileDaoLocal = cssFileDaoLocalInput;
52      }
53  
54      /**
55       * Methode die das Backup erzeugt.
56       *
57       * @return
58       * @throws IOException
59       */
60      public List<File> getBackupFiles() throws IOException {
61          LOGGER.info("getBackupFile() aufgerufen.");
62  
63          // Datei Kram
64          File backupFile = new File("/tmp/cssFile.csv");
65          FileWriter fileWriter = new FileWriter(backupFile);
66          BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
67  
68          // Format Definition
69          bufferedWriter.write("[Format Definition] => uuid|name|description|priority|path|created|modified|modifiedBy|modifiedAddress|version|");
70  
71          Iterator<CSSFile> cssFileIterator = cssFileDaoLocal.findAll(0, cssFileDaoLocal.countAll()).iterator();
72          while (cssFileIterator.hasNext()) {
73              CSSFile next = cssFileIterator.next();
74              bufferedWriter.write("\n");
75              bufferedWriter.write(convertToCsvLine(next));
76              storeCSSFileInList(next);
77          }
78  
79          bufferedWriter.close();
80          fileWriter.close();
81  
82          backupFiles.add(backupFile);
83  
84          return backupFiles;
85      }
86  
87      /**
88       * Methode zum konvertieren eines CSSFile Objekte in einen String.
89       * 
90       * @param next - CSSFile Objekt das konvertiert werden soll
91       * @return String - Der String der dem übergebenen CSSFile Objekt entspricht.
92       */
93      private String convertToCsvLine(CSSFile next) {
94          LOGGER.info("convertToCsvLine(CSSFile next) aufgerufen.");
95  
96          SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
97          // uuid|
98          // name|description|priority|path|
99          // created|modified|modifiedBy|modifiedAddress|version|
100 
101         StringBuffer nextString = new StringBuffer();
102 
103         nextString.append(next.getUuid());
104         nextString.append("|");
105 
106         nextString.append(next.getName());
107         nextString.append("|");
108 
109         nextString.append(next.getDescription());
110         nextString.append("|");
111 
112         nextString.append(next.getPriority().toString());
113         nextString.append("|");
114 
115         nextString.append(next.getPath());
116         nextString.append("|");
117 
118         nextString.append(simpleDateFormat.format(next.getCreated()));
119         nextString.append("|");
120 
121         nextString.append(simpleDateFormat.format(next.getModified()));
122         nextString.append("|");
123 
124         nextString.append(next.getModifiedBy());
125         nextString.append("|");
126 
127         nextString.append(next.getModifiedAddress());
128         nextString.append("|");
129 
130         nextString.append(next.getVersion().toString());
131         nextString.append("|");
132 
133         return nextString.toString();
134     }
135 
136     /**
137      * Methode zum einfügen der CSS-Datei die zu dem in CSSFile Objekt gehört in
138      * die Liste der Dateien die gesichert werden sollen.
139      * 
140      * @param next - CSSFile Objekt von dem die CSS-Datei in die Liste eingefügt
141      *            werden soll
142      */
143     private void storeCSSFileInList(final CSSFile next) {
144         File file = new File(next.getPath());
145         backupFiles.add(file);
146     }
147 
148 }// Ende class