1 package de.tivsource.page.admin.actions.others.vacancy;
2
3 import java.util.Date;
4 import java.util.List;
5
6 import org.apache.logging.log4j.LogManager;
7 import org.apache.logging.log4j.Logger;
8 import org.apache.struts2.ServletActionContext;
9 import org.apache.struts2.convention.annotation.Action;
10 import org.apache.struts2.convention.annotation.Actions;
11 import org.apache.struts2.convention.annotation.Result;
12 import org.apache.struts2.tiles.annotation.TilesDefinition;
13 import org.apache.struts2.tiles.annotation.TilesDefinitions;
14 import org.apache.struts2.tiles.annotation.TilesPutAttribute;
15
16 import de.tivsource.ejb3plugin.InjectEJB;
17 import de.tivsource.page.admin.actions.EmptyAction;
18 import de.tivsource.page.common.css.CSSGroup;
19 import de.tivsource.page.dao.cssgroup.CSSGroupDaoLocal;
20 import de.tivsource.page.dao.location.LocationDaoLocal;
21 import de.tivsource.page.dao.picture.PictureDaoLocal;
22 import de.tivsource.page.dao.property.PropertyDaoLocal;
23 import de.tivsource.page.dao.vacancy.VacancyDaoLocal;
24 import de.tivsource.page.entity.enumeration.Language;
25 import de.tivsource.page.entity.location.Location;
26 import de.tivsource.page.entity.picture.Picture;
27 import de.tivsource.page.entity.vacancy.Vacancy;
28
29
30
31
32
33
34 @TilesDefinitions({
35 @TilesDefinition(name="vacancyEditForm", extend = "adminTemplate", putAttributes = {
36 @TilesPutAttribute(name = "meta", value = "/WEB-INF/tiles/active/meta/chosen.jsp"),
37 @TilesPutAttribute(name = "navigation", value = "/WEB-INF/tiles/active/navigation/others.jsp"),
38 @TilesPutAttribute(name = "content", value = "/WEB-INF/tiles/active/view/vacancy/edit_form.jsp")
39 })
40 })
41 public class EditAction extends EmptyAction {
42
43
44
45
46 private static final long serialVersionUID = -6472541996524122642L;
47
48
49
50
51 private static final Logger LOGGER = LogManager.getLogger(EditAction.class);
52
53 @InjectEJB(name = "CSSGroupDao")
54 private CSSGroupDaoLocal cssGroupDaoLocal;
55
56 @InjectEJB(name="VacancyDao")
57 private VacancyDaoLocal vacancyDaoLocal;
58
59 @InjectEJB(name="LocationDao")
60 private LocationDaoLocal locationDaoLocal;
61
62 @InjectEJB(name="PictureDao")
63 private PictureDaoLocal pictureDaoLocal;
64
65 @InjectEJB(name="PropertyDao")
66 private PropertyDaoLocal propertyDaoLocal;
67
68 private Vacancy vacancy;
69
70 private String lang;
71
72 private List<Picture> pictureList;
73
74 private List<Location> locationList;
75
76 private List<CSSGroup> cssGroupList;
77
78 public Vacancy getVacancy() {
79 return vacancy;
80 }
81
82 public void setVacancy(Vacancy vacancy) {
83 this.vacancy = vacancy;
84 }
85
86 public String getLang() {
87 return lang;
88 }
89
90 public void setLang(String lang) {
91 this.lang = lang;
92 }
93
94 @Override
95 public void prepare() {
96 super.prepare();
97 pictureList = pictureDaoLocal.findAll(propertyDaoLocal.findByKey("gallery.uuid.for.vacancy.picture").getValue());
98 locationList = locationDaoLocal.findAll(0, locationDaoLocal.countAll());
99 cssGroupList = cssGroupDaoLocal.findAll(0, cssGroupDaoLocal.countAll());
100 }
101
102 @Override
103 @Actions({
104 @Action(
105 value = "edit",
106 results = {
107 @Result(name = "success", type = "redirectAction", location = "index.html"),
108 @Result(name = "input", type = "tiles", location = "vacancyEditForm"),
109 @Result(name = "error", type = "tiles", location = "vacancyEditError")
110 }
111 )
112 })
113 public String execute() throws Exception {
114 LOGGER.info("execute() aufgerufen.");
115
116 String remoteUser = ServletActionContext.getRequest().getRemoteUser();
117 String remoteAddress = ServletActionContext.getRequest().getRemoteAddr();
118
119 if(vacancy != null) {
120 LOGGER.info("UUID des Events: " + vacancy.getUuid());
121 Vacancy dbVacancy = vacancyDaoLocal.findByUuid(vacancy.getUuid());
122
123 if(lang.contentEquals(new StringBuffer("EN"))) {
124 vacancy.getContentMap().put(Language.DE, dbVacancy.getContentObject(Language.DE));
125 dbVacancy.getContentMap().get(Language.EN).setContent(vacancy.getContent(Language.EN));
126 dbVacancy.getContentMap().get(Language.EN).setModified(new Date());
127
128 vacancy.getDescriptionMap().put(Language.DE, dbVacancy.getDescriptionObject(Language.DE));
129 String noLineBreaks = vacancy.getDescription(Language.EN).replaceAll("(\\r|\\n)", "");
130 dbVacancy.getDescriptionMap().get(Language.EN).setDescription(noLineBreaks);
131 dbVacancy.getDescriptionMap().get(Language.EN).setKeywords(vacancy.getKeywords(Language.EN));
132 dbVacancy.getDescriptionMap().get(Language.EN).setName(vacancy.getName(Language.EN));
133 } else {
134 dbVacancy.getContentMap().get(Language.DE).setContent(vacancy.getContent(Language.DE));
135 dbVacancy.getContentMap().get(Language.DE).setModified(new Date());
136
137 String noLineBreaks = vacancy.getDescription(Language.DE).replaceAll("(\\r|\\n)", "");
138 dbVacancy.getDescriptionMap().get(Language.DE).setDescription(noLineBreaks);
139 dbVacancy.getDescriptionMap().get(Language.DE).setKeywords(vacancy.getKeywords(Language.DE));;
140 dbVacancy.getDescriptionMap().get(Language.DE).setName(vacancy.getName(Language.DE));
141 }
142
143 dbVacancy.setBeginning(vacancy.getBeginning());
144 dbVacancy.setWorkingTime(vacancy.getWorkingTime());
145 dbVacancy.setTechnical(vacancy.getTechnical());
146
147 dbVacancy.setModifiedAddress(remoteAddress);
148 dbVacancy.setLocation(locationDaoLocal.findByUuidWidthEvents(vacancy.getLocation().getUuid()));
149 dbVacancy.setModified(new Date());
150 dbVacancy.setModifiedBy(remoteUser);
151 dbVacancy.setVisible(vacancy.getVisible());
152 dbVacancy.setPicture(vacancy.getPicture());
153 dbVacancy.setPictureOnPage(vacancy.getPictureOnPage());
154 dbVacancy.setCssGroup(vacancy.getCssGroup());
155
156 vacancyDaoLocal.merge(dbVacancy);
157 return SUCCESS;
158 }
159 else {
160 return ERROR;
161 }
162
163 }
164
165 public List<Location> getLocationList() {
166 return locationList;
167 }
168
169 public List<Picture> getPictureList() {
170 return pictureList;
171 }
172
173 public List<CSSGroup> getCssGroupList() {
174 LOGGER.info("getCssGroupList() aufgerufen.");
175 LOGGER.info("Anzahl der CSS-Gruppen in der Liste: " + cssGroupList.size());
176 return cssGroupList;
177 }
178
179 }