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
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
45
46 private static final long serialVersionUID = -5770235481070099665L;
47
48
49
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
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
106 setLastModified();
107
108 return SUCCESS;
109 }
110
111
112 return ERROR;
113 }
114
115 private void setLastModified() {
116
117 String remoteUser = ServletActionContext.getRequest().getRemoteUser();
118 String remoteAddress = ServletActionContext.getRequest().getRemoteAddr();
119
120
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
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 }