View Javadoc

1   package de.tivsource.page.admin.actions.maintenance.cssfile;
2   
3   import java.text.SimpleDateFormat;
4   import java.util.Date;
5   import java.util.Locale;
6   import java.util.TimeZone;
7   
8   import org.apache.logging.log4j.LogManager;
9   import org.apache.logging.log4j.Logger;
10  import org.apache.struts2.ServletActionContext;
11  import org.apache.struts2.convention.annotation.Action;
12  import org.apache.struts2.convention.annotation.Actions;
13  import org.apache.struts2.convention.annotation.Result;
14  import org.apache.struts2.tiles.annotation.TilesDefinition;
15  import org.apache.struts2.tiles.annotation.TilesDefinitions;
16  import org.apache.struts2.tiles.annotation.TilesPutAttribute;
17  
18  import de.tivsource.ejb3plugin.InjectEJB;
19  import de.tivsource.page.admin.actions.EmptyAction;
20  import de.tivsource.page.common.css.CSSFile;
21  import de.tivsource.page.dao.cssfile.CSSFileDaoLocal;
22  import de.tivsource.page.dao.property.PropertyDaoLocal;
23  import de.tivsource.page.entity.property.Property;
24  
25  /**
26   * 
27   * @author Marc Michele
28   *
29   */
30  @TilesDefinitions({
31    @TilesDefinition(name="cssFileEditForm", extend = "adminTemplate", putAttributes = {
32      @TilesPutAttribute(name = "meta",       value = "/WEB-INF/tiles/active/meta/chosen.jsp"),
33      @TilesPutAttribute(name = "navigation", value = "/WEB-INF/tiles/active/navigation/maintenance.jsp"),
34      @TilesPutAttribute(name = "content",    value = "/WEB-INF/tiles/active/view/cssfile/edit_form.jsp")
35    }),
36    @TilesDefinition(name="cssFileEditError", extend = "adminTemplate", putAttributes = {
37      @TilesPutAttribute(name = "navigation", value = "/WEB-INF/tiles/active/navigation/maintenance.jsp"),
38      @TilesPutAttribute(name = "content",    value = "/WEB-INF/tiles/active/view/cssfile/edit_error.jsp")
39    })
40  })
41  public class EditAction extends EmptyAction {
42  
43      /**
44       * Serial Version UID.
45       */
46      private static final long serialVersionUID = -5770235481070099665L;
47  
48      /**
49       * Statischer Logger der Klasse.
50       */
51      private static final Logger LOGGER = LogManager.getLogger(EditAction.class);
52  
53      @InjectEJB(name="CSSFileDao")
54      private CSSFileDaoLocal cssFileDaoLocal;
55  
56      @InjectEJB(name="PropertyDao")
57      private PropertyDaoLocal propertyDaoLocal;
58  
59      private CSSFile cssFile;
60  
61      public CSSFile getCssFile() {
62          return cssFile;
63      }
64  
65      public void setCssFile(CSSFile cssFile) {
66          this.cssFile = cssFile;
67      }
68  
69      @Override
70      @Actions({
71          @Action(
72              value = "edit",
73              results = {
74                  @Result(name = "success", type = "redirectAction", location = "index.html"),
75                  @Result(name = "input",   type = "tiles", location = "cssFileEditForm"),
76                  @Result(name = "error",   type = "tiles", location = "cssFileEditError")
77              }
78          )
79      })
80      public String execute() throws Exception {
81          LOGGER.info("execute() aufgerufen.");
82  
83          String remoteUser    = ServletActionContext.getRequest().getRemoteUser();
84          String remoteAddress = ServletActionContext.getRequest().getRemoteAddr();
85  
86          if(cssFile != null) {
87              LOGGER.info("UUID der CSS-Datei: " + cssFile.getUuid());
88              CSSFile dbCssFile = cssFileDaoLocal.findByUuid(cssFile.getUuid());
89  
90              // Erstelle neue Version der CSS-Datei
91              if(cssFile.getUploadFile() != null) {
92                  LOGGER.debug("Es wurde eine neue CSS-Datei hochgeladen.");
93                  dbCssFile.setUploadFile(cssFile.getUploadFile());
94                  dbCssFile.generate();
95              }
96  
97              dbCssFile.setName(cssFile.getName());
98              dbCssFile.setDescription(cssFile.getDescription());
99              dbCssFile.setPriority(cssFile.getPriority());
100             dbCssFile.setModifiedAddress(remoteAddress);
101             dbCssFile.setModified(new Date());
102             dbCssFile.setModifiedBy(remoteUser);
103             cssFileDaoLocal.merge(dbCssFile);
104 
105             // Aktualisiere das Datum
106             setLastModified();
107             
108             return SUCCESS;
109         }
110 
111         // Wenn es keine Datei gab wird die Fehlerseite aufgrufen
112         return ERROR;
113     }// Ende execute()
114 
115     private void setLastModified() {
116         // Lese Daten des Remote Benutzers
117         String remoteUser    = ServletActionContext.getRequest().getRemoteUser();
118         String remoteAddress = ServletActionContext.getRequest().getRemoteAddr();
119 
120         // Erstelle neues Aktualisierungsdatum
121         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
122         simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
123         String newDate = simpleDateFormat.format(new Date());
124 
125         // Hole Schlüssel mit Aktualisierungsdatum aus der Datenbank oder erstelle neues Objekt
126         Property lastModified = propertyDaoLocal.findByKey("cssFile.lastModified");
127 
128         if(lastModified != null) {
129             lastModified.setModified(new Date());
130             lastModified.setModifiedAddress(remoteAddress);
131             lastModified.setModifiedBy(remoteUser);
132             lastModified.setValue(newDate);
133         } else {
134             lastModified = new Property();
135             lastModified.setCreated(new Date());
136             lastModified.setKey("cssFile.lastModified");
137             lastModified.setModified(new Date());
138             lastModified.setModifiedAddress(remoteAddress);
139             lastModified.setModifiedBy(remoteUser);
140             lastModified.setValue(newDate);
141         }
142         propertyDaoLocal.merge(lastModified);
143     }
144 
145 }// Ende class