View Javadoc

1   /*Copyright (C) 2004-... Stephane Gauchet for Hyphonem
2   
3    This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
4   
5    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
6   
7    You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
8    
9    Written by St�phane Gauchet
10   mail me at : sgauchet@free.fr
11   */
12  package fr.hyphonem.conges.actions;
13  
14  import java.io.IOException;
15  import java.util.Vector;
16  
17  import javax.servlet.ServletException;
18  import javax.servlet.http.HttpServletRequest;
19  import javax.servlet.http.HttpServletResponse;
20  import javax.servlet.http.HttpSession;
21  
22  import org.apache.struts.action.Action;
23  import org.apache.struts.action.ActionError;
24  import org.apache.struts.action.ActionErrors;
25  import org.apache.struts.action.ActionForm;
26  import org.apache.struts.action.ActionForward;
27  import org.apache.struts.action.ActionMapping;
28  
29  import fr.hyphonem.conges.AccessData;
30  import fr.hyphonem.conges.AccessDataMng;
31  import fr.hyphonem.conges.data.ReasonData;
32  import fr.hyphonem.conges.data.UserData;
33  import fr.hyphonem.conges.forms.ModifyReasonForm;
34  
35  /**
36   * @author Stephane Gauchet pour Hyphonem
37   */
38  public class ValidModifyReasonsAction extends Action {
39  
40  	/**
41  	 * Constructor for CreateEvtAction.
42  	 */
43  	public ValidModifyReasonsAction() {
44  		super();
45  	}
46  
47  	public ActionForward execute(ActionMapping mapping, ActionForm form,
48  			HttpServletRequest request, HttpServletResponse response)
49  			throws java.io.IOException, ServletException {
50  		HttpSession session = request.getSession();
51  		if (session.getAttribute("user") == null) {
52  			return mapping.findForward("invalidsession");
53  		}
54  
55  		UserData userd = (UserData) session.getAttribute("user");
56  		// admin only
57  		if (userd.isModif() || userd.isEmployee()) {
58  			return mapping.findForward("invalidaction");
59  		}
60  
61  		ActionErrors errors = new ActionErrors();
62  
63  		ModifyReasonForm modifiedReason = (ModifyReasonForm) form;
64  
65  		String couleur0 = modifiedReason.getCouleurRaison0();
66  		String nom0 = modifiedReason.getNomRaison0();
67  		String oldnom0 = modifiedReason.getOldNomRaison0();
68  		String couleur1 = modifiedReason.getCouleurRaison1();
69  		String nom1 = modifiedReason.getNomRaison1();
70  		String oldnom1 = modifiedReason.getOldNomRaison1();
71  		String couleur2 = modifiedReason.getCouleurRaison2();
72  		String nom2 = modifiedReason.getNomRaison2();
73  		String oldnom2 = modifiedReason.getOldNomRaison2();
74  		String couleur3 = modifiedReason.getCouleurRaison3();
75  		String nom3 = modifiedReason.getNomRaison3();
76  		String oldnom3 = modifiedReason.getOldNomRaison3();
77  		String couleur4 = modifiedReason.getCouleurRaison4();
78  		String nom4 = modifiedReason.getNomRaison4();
79  		String oldnom4 = modifiedReason.getOldNomRaison4();
80  		String couleur5 = modifiedReason.getCouleurRaison5();
81  		String nom5 = modifiedReason.getNomRaison5();
82  		String oldnom5 = modifiedReason.getOldNomRaison5();
83  		String couleur6 = modifiedReason.getCouleurRaison6();
84  		String nom6 = modifiedReason.getNomRaison6();
85  		String oldnom6 = modifiedReason.getOldNomRaison6();
86  		String couleur7 = modifiedReason.getCouleurRaison7();
87  		String nom7 = modifiedReason.getNomRaison7();
88  		String oldnom7 = modifiedReason.getOldNomRaison7();
89  
90  		ReasonData reason0 = new ReasonData();
91  		reason0.setCouleur(couleur0);
92  		reason0.setNom(nom0);
93  
94  		ReasonData reason1 = new ReasonData();
95  		reason1.setCouleur(couleur1);
96  		reason1.setNom(nom1);
97  
98  		ReasonData reason2 = new ReasonData();
99  		reason2.setCouleur(couleur2);
100 		reason2.setNom(nom2);
101 
102 		ReasonData reason3 = new ReasonData();
103 		reason3.setCouleur(couleur3);
104 		reason3.setNom(nom3);
105 
106 		ReasonData reason4 = new ReasonData();
107 		reason4.setCouleur(couleur4);
108 		reason4.setNom(nom4);
109 
110 		ReasonData reason5 = new ReasonData();
111 		reason5.setCouleur(couleur5);
112 		reason5.setNom(nom5);
113 
114 		ReasonData reason6 = new ReasonData();
115 		reason6.setCouleur(couleur6);
116 		reason6.setNom(nom6);
117 
118 		ReasonData reason7 = new ReasonData();
119 		reason7.setCouleur(couleur7);
120 		reason7.setNom(nom7);
121 
122 		Vector reasons = new Vector();
123 		if (reason0.getNom() != null && reason0.getNom().trim().length() > 0) {
124 			reasons.add(reason0);
125 		}
126 		if (reason1.getNom() != null && reason1.getNom().trim().length() > 0) {
127 			reasons.add(reason1);
128 		}
129 		if (reason2.getNom() != null && reason2.getNom().trim().length() > 0) {
130 			reasons.add(reason2);
131 		}
132 		if (reason3.getNom() != null && reason3.getNom().trim().length() > 0) {
133 			reasons.add(reason3);
134 		}
135 		if (reason4.getNom() != null && reason4.getNom().trim().length() > 0) {
136 			reasons.add(reason4);
137 		}
138 		if (reason5.getNom() != null && reason5.getNom().trim().length() > 0) {
139 			reasons.add(reason5);
140 		}
141 		if (reason6.getNom() != null && reason6.getNom().trim().length() > 0) {
142 			reasons.add(reason6);
143 		}
144 		if (reason7.getNom() != null && reason7.getNom().trim().length() > 0) {
145 			reasons.add(reason7);
146 		}
147 		session.getServletContext().setAttribute("reasons", reasons);
148 
149 		String dataDirPath = (String) session.getAttribute("dataDirPath");
150 		AccessData ad = new AccessDataMng().getInstance(dataDirPath);
151 		try {
152 			ad.writeReasons(reasons);
153 		} catch (IOException e) {
154 			errors.add("error.concurrent.access", new ActionError(
155 					"error.concurrent.access"));
156 		} catch (Exception e) {
157 			System.out.println(e.getMessage());
158 		}
159 		// on remet � jour les params avec nouveau nom de raison dans params
160 		// dans le servletContext
161 		java.util.Vector params = (java.util.Vector) session
162 				.getServletContext().getAttribute("params");
163 		for (int i = 0; i < params.size(); i++) {
164 			fr.hyphonem.conges.data.ParamsData prd = (fr.hyphonem.conges.data.ParamsData) params
165 					.get(i);
166 			String raison = prd.getReason();
167 			if (raison.equalsIgnoreCase(oldnom0)) {
168 				prd.setReason(nom0);
169 			}
170 			if (raison.equalsIgnoreCase(oldnom1)) {
171 				prd.setReason(nom1);
172 			}
173 			if (raison.equalsIgnoreCase(oldnom2)) {
174 				prd.setReason(nom2);
175 			}
176 			if (raison.equalsIgnoreCase(oldnom3)) {
177 				prd.setReason(nom3);
178 			}
179 			if (raison.equalsIgnoreCase(oldnom4)) {
180 				prd.setReason(nom4);
181 			}
182 			if (raison.equalsIgnoreCase(oldnom5)) {
183 				prd.setReason(nom5);
184 			}
185 			if (raison.equalsIgnoreCase(oldnom6)) {
186 				prd.setReason(nom6);
187 			}
188 			if (raison.equalsIgnoreCase(oldnom7)) {
189 				prd.setReason(nom7);
190 			}
191 			params.set(i, prd);
192 		}
193 		session.getServletContext().setAttribute("params", params);
194 		// ecrire les nouveaux params dans params.xml
195 		try {
196 			ad.writeParams(params);
197 		} catch (IOException e) {
198 			errors.add("error.concurrent.access", new ActionError(
199 					"error.concurrent.access"));
200 		} catch (Exception e) {
201 			System.out.println(e.getMessage());
202 			throw new ServletException(e);
203 		}
204 
205 		Vector employees = (Vector) session.getServletContext().getAttribute(
206 				"employees");
207 		try {
208 			// System.out.println(nom0+" "+oldnom0);
209 			if (!nom0.equals(oldnom0)) {
210 				ad.replaceOldWithNewReason(oldnom0, nom0, employees);
211 			}
212 			if (!nom1.equals(oldnom1)) {
213 				ad.replaceOldWithNewReason(oldnom1, nom1, employees);
214 			}
215 			if (!nom2.equals(oldnom2)) {
216 				ad.replaceOldWithNewReason(oldnom2, nom2, employees);
217 			}
218 			if (!nom3.equals(oldnom3)) {
219 				ad.replaceOldWithNewReason(oldnom3, nom3, employees);
220 			}
221 			if (!nom4.equals(oldnom4)) {
222 				ad.replaceOldWithNewReason(oldnom4, nom4, employees);
223 			}
224 			if (!nom5.equals(oldnom5)) {
225 				ad.replaceOldWithNewReason(oldnom5, nom5, employees);
226 			}
227 			if (!nom6.equals(oldnom6)) {
228 				ad.replaceOldWithNewReason(oldnom6, nom6, employees);
229 			}
230 			if (!nom7.equals(oldnom7)) {
231 				ad.replaceOldWithNewReason(oldnom7, nom7, employees);
232 			}
233 		} catch (IOException e) {
234 			errors.add("error.concurrent.access", new ActionError(
235 					"error.concurrent.access"));
236 		} catch (Exception e) {
237 			throw new ServletException(e);
238 		}
239 		if (!errors.isEmpty()) {
240 			saveErrors(request, errors);
241 			return mapping.getInputForward();
242 		}
243 		return mapping.findForward("success");
244 	}
245 }