1 package de.tivsource.page.admin.actions.maintenance.cssgroup;
2
3 import java.util.Date;
4 import java.util.Iterator;
5 import java.util.SortedSet;
6
7 import org.apache.logging.log4j.LogManager;
8 import org.apache.logging.log4j.Logger;
9 import org.apache.struts2.ServletActionContext;
10 import org.apache.struts2.convention.annotation.Action;
11 import org.apache.struts2.convention.annotation.Actions;
12 import org.apache.struts2.convention.annotation.Result;
13 import org.apache.struts2.tiles.annotation.TilesDefinition;
14 import org.apache.struts2.tiles.annotation.TilesDefinitions;
15 import org.apache.struts2.tiles.annotation.TilesPutAttribute;
16
17 import de.tivsource.ejb3plugin.InjectEJB;
18 import de.tivsource.page.admin.actions.EmptyAction;
19 import de.tivsource.page.common.css.CSSFile;
20 import de.tivsource.page.common.css.CSSGroup;
21 import de.tivsource.page.dao.cssfile.CSSFileDaoLocal;
22 import de.tivsource.page.dao.cssgroup.CSSGroupDaoLocal;
23
24
25
26
27
28
29 @TilesDefinitions({
30 @TilesDefinition(name="cssGroupEditForm", extend = "adminTemplate", putAttributes = {
31 @TilesPutAttribute(name = "meta", value = "/WEB-INF/tiles/active/meta/chosen.jsp"),
32 @TilesPutAttribute(name = "navigation", value = "/WEB-INF/tiles/active/navigation/maintenance.jsp"),
33 @TilesPutAttribute(name = "content", value = "/WEB-INF/tiles/active/view/cssgroup/edit_form.jsp")
34 }),
35 @TilesDefinition(name="cssGroupEditError", extend = "adminTemplate", putAttributes = {
36 @TilesPutAttribute(name = "navigation", value = "/WEB-INF/tiles/active/navigation/maintenance.jsp"),
37 @TilesPutAttribute(name = "content", value = "/WEB-INF/tiles/active/view/cssgroup/edit_error.jsp")
38 })
39 })
40 public class EditAction extends EmptyAction {
41
42
43
44
45 private static final long serialVersionUID = -5770235481070099665L;
46
47
48
49
50 private static final Logger LOGGER = LogManager.getLogger(EditAction.class);
51
52 @InjectEJB(name="CSSFileDao")
53 private CSSFileDaoLocal cssFileDaoLocal;
54
55 @InjectEJB(name="CSSGroupDao")
56 private CSSGroupDaoLocal cssGroupDaoLocal;
57
58 private CSSGroup cssGroup;
59
60
61
62
63 public CSSGroup getCssGroup() {
64 return cssGroup;
65 }
66
67
68
69
70
71 public void setCssGroup(CSSGroup cssGroup) {
72 this.cssGroup = cssGroup;
73 }
74
75 @Override
76 @Actions({
77 @Action(
78 value = "edit",
79 results = {
80 @Result(name = "success", type = "redirectAction", location = "index.html"),
81 @Result(name = "input", type = "tiles", location = "cssGroupEditForm"),
82 @Result(name = "error", type = "tiles", location = "cssGroupEditError")
83 }
84 )
85 })
86 public String execute() throws Exception {
87 LOGGER.info("execute() aufgerufen.");
88
89 String remoteUser = ServletActionContext.getRequest().getRemoteUser();
90 String remoteAddress = ServletActionContext.getRequest().getRemoteAddr();
91
92 if (cssGroup != null) {
93 LOGGER.info("UUID der CSS-Datei: " + cssGroup.getUuid());
94
95 cssGroupDaoLocal.deleteFiles(cssGroup);
96 CSSGroup dbCssGroup = cssGroupDaoLocal.findByUuid(cssGroup.getUuid());
97 LOGGER.info("Anzahl der Einträge in Files Set des Datenbank Objektes: " + dbCssGroup.getFiles().size());
98 dbCssGroup.setName(cssGroup.getName());
99 dbCssGroup.setDescription(cssGroup.getDescription());
100 dbCssGroup.setLanguage(cssGroup.getLanguage());
101 dbCssGroup.setModifiedAddress(remoteAddress);
102 dbCssGroup.setModified(new Date());
103 dbCssGroup.setModifiedBy(remoteUser);
104 dbCssGroup.setFiles(createFileSet(cssGroup.getFiles(), dbCssGroup));
105 cssGroupDaoLocal.merge(dbCssGroup);
106 return SUCCESS;
107 } else {
108 return ERROR;
109 }
110
111 }
112
113 private SortedSet<CSSFile> createFileSet(SortedSet<CSSFile> files, CSSGroup cssGroup) {
114 LOGGER.info("createFileSet(SortedSet<CSSFile> files, CSSGroup cssGroup)");
115 if (files != null) {
116 Iterator<CSSFile> newCssFiles = files.iterator();
117 while (newCssFiles.hasNext()) {
118 CSSFile next = newCssFiles.next();
119 LOGGER.info("UUID der CSS-Datei die hinzugefügt wird: " + next.getUuid());
120 LOGGER.info("Version der CSS-Datei die hinzugefügt wird: " + next.getVersion());
121 cssGroup.getFiles().add(cssFileDaoLocal.findByUuid(next.getUuid()));
122 }
123
124 Iterator<CSSFile> cssFiles = cssGroup.getFiles().iterator();
125 while (cssFiles.hasNext()) {
126 CSSFile next = cssFiles.next();
127 next.getGroups().add(cssGroup);
128 }
129 }
130 return cssGroup.getFiles();
131 }
132
133 }