KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > nextime > ion > admin > action > category > EditCategoryAction


1 package org.nextime.ion.admin.action.category;
2
3 import java.io.IOException JavaDoc;
4 import java.util.Enumeration JavaDoc;
5
6 import javax.servlet.ServletException JavaDoc;
7 import javax.servlet.http.HttpServletRequest JavaDoc;
8 import javax.servlet.http.HttpServletResponse JavaDoc;
9 import org.apache.struts.action.Action;
10 import org.apache.struts.action.ActionForm;
11 import org.apache.struts.action.ActionForward;
12 import org.apache.struts.action.ActionMapping;
13
14 import org.nextime.ion.admin.form.*;
15 import org.nextime.ion.framework.business.*;
16 import org.nextime.ion.framework.business.User;
17 import org.nextime.ion.framework.business.impl.*;
18 import org.nextime.ion.framework.mapping.Mapping;
19
20 public class EditCategoryAction extends Action {
21
22     public ActionForward perform(
23         ActionMapping mapping,
24         ActionForm form,
25         HttpServletRequest JavaDoc request,
26         HttpServletResponse JavaDoc response)
27         throws IOException JavaDoc, ServletException JavaDoc {
28
29         // pour situer la vue
30
request.setAttribute("view", "category");
31
32         if( request.getParameter("id") != null )
33             request.setAttribute("id", request.getParameter("id"));
34         String JavaDoc id = request.getAttribute("id")+"";
35
36         try {
37
38             if (request.getParameter("editSubmit") == null) {
39                 Mapping.begin();
40
41                 // initialisation du formulaire
42
Category u = Category.getInstance(id);
43                 CategoryForm f = (CategoryForm) form;
44                 f.setId(u.getId());
45                 request.setAttribute("metaData", ((CategoryImpl) u).getMetaData());
46
47                 Mapping.commit();
48                 return new ActionForward( mapping.getInput() );
49             }
50
51             // effectu les modifications
52
Mapping.begin();
53             CategoryForm f = (CategoryForm) form;
54             Category u = Category.getInstance(id);
55             
56
57             // *********************************************************
58
// les metaData sont gérées separement car je n'ai
59
// aucune idée du nombre et du nom des champs qu'il va
60
// y avoir.
61
// cette partie est un peu bancale mais en général dans un
62
// veritable backoffice le nombre de champs composant le
63
// formulaire est connu et on peut les gérer comme ce que j'ai
64
// fait plus haut ( login, password ... )
65
// CETTE PARTIE N'EST DONC PAS A REPRENDRE.
66

67             // sauve les metaData
68
Enumeration JavaDoc ps = request.getParameterNames();
69             while (ps.hasMoreElements()) {
70                 String JavaDoc name = ps.nextElement() + "";
71                 if (name.startsWith("META_")) {
72                     name = name.substring(5);
73                     u.setMetaData(name, request.getParameter("META_" + name));
74                 }
75             }
76             // efface la metaData si il y a besoin
77
String JavaDoc mtd = request.getParameter("metaToDelete");
78             if ((mtd + "").trim().equals(""))
79                 mtd = null;
80             if (mtd != null) {
81                 u.removeMetaData(mtd);
82                 request.setAttribute("metaData", ((CategoryImpl) u).getMetaData());
83             }
84             // ajoute la metaData si il y a besoin
85
String JavaDoc mtd2 = request.getParameter("newMETA");
86             if ((mtd2 + "").trim().equals(""))
87                 mtd2 = null;
88             if (mtd2 != null) {
89                 u.setMetaData(mtd2, "");
90                 request.setAttribute("metaData", ((CategoryImpl) u).getMetaData());
91             }
92             Mapping.commit();
93
94             // si on a simplement effacé ou ajouté une metadonnée, on retourne au fromulaire
95
if (mtd != null || mtd2 != null) {
96                 return new ActionForward( mapping.getInput() );
97             }
98
99             // ***********************************************************
100

101         } catch (Exception JavaDoc e) {
102             Mapping.rollback();
103             request.setAttribute("error", e.getMessage());
104             return new ActionForward( mapping.getInput() );
105         }
106
107         return mapping.findForward("success");
108     }
109
110 }
Popular Tags