KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > config > eventhandler > COPropUpdateHandler


1 package de.webman.config.eventhandler;
2
3 import java.util.*;
4 import java.sql.*;
5
6 import com.teamkonzept.web.*;
7 import com.teamkonzept.lib.*;
8 import com.teamkonzept.db.*;
9 import com.teamkonzept.webman.*;
10 import com.teamkonzept.webman.mainint.*;
11 import com.teamkonzept.webman.mainint.db.queries.*;
12 import com.teamkonzept.webman.mainint.events.*;
13
14 /**
15    Legt eines neues Property für die aktuelle Propertygruppe an und ruft anschliessend den COPropGroupEditHandler auf,
16    wenn Anlegen erfolgreich war, sonst ce_error.tmpl
17  * @author $Author: doehling $
18  * @version $Revision: 1.10 $
19 */

20 public class COPropUpdateHandler extends DefaultEventHandler implements ParameterTypes, DatabaseDefaults, FrameConstants
21 {
22     /** */
23     private COPropUpdateHandler() {}
24
25     private static COPropUpdateHandler instance = new COPropUpdateHandler();
26
27     public static COPropUpdateHandler getInstance()
28     {
29         return instance;
30     }
31
32     public void handleEvent(TKEvent evt) throws TKException
33     {
34       try {
35             WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(), ContextConstants.CUSTOMIZE_PROPERTIES); // check if event is allowed
36
String JavaDoc propId = evt.getParameter(PARAMETER, "PROP_ID");
37             String JavaDoc propName = evt.getParameter(PARAMETER, "PROP_NAME");
38             String JavaDoc propValue = evt.getParameter(PARAMETER, "PROP_VALUE");
39             String JavaDoc propGroupId = evt.getParameter(PARAMETER, "PROPGROUP_ID");
40             String JavaDoc propGroupName = evt.getParameter(PARAMETER, "PROPGROUP_NAME");
41             boolean newProp = false;
42             boolean noDuplicateExists = true;
43             boolean nameGiven = true;
44             TKQuery q = null;
45             ResultSet rs = null;
46             
47             // check, ob es sich um ein neuanzulegendes property handelt
48
propId = (propId != null ? propId : "-1");
49             if ( propId.equals("-1") )
50             {
51                 newProp = true;
52             }
53             
54             // check, ob ueberhaupt ein name eingegeben wurde
55
if ( propName == null || propName.equals("") )
56             {
57                 nameGiven = false;
58             }
59             
60             /************************************************************************
61                z.z. wird kein property angelegt, wenn keine propGroupId mitgegeben wird
62                oder bei einem neuen property keine id zurueckkommt. es gibt auch keine fehlermeldung.
63                dieses sollte eigentlich nie auftreten.
64              ************************************************************************/

65             propGroupId = (propGroupId != null ? propGroupId : "-1");
66
67             // nein - ueberpruefung, ob ein gleichnamiges property bereits existiert
68
if ( nameGiven )
69             {
70                 // find the properties of this group
71
q = TKDBManager.newQuery(TKDBPropGroupGetGroupProps.class);
72                 q.setQueryParams("PROPGROUP_ID", new Integer JavaDoc(propGroupId));
73                 q.execute();
74                 rs = q.fetchResultSet();
75
76                 // check, ob ein anderes gleichnamiges property in dieser gruppe bereits existiert
77
if (rs != null)
78                 {
79                     while (rs != null && rs.next())
80                     {
81                         if ( propName.equals(rs.getString("PROP_NAME")) && !propId.equals(rs.getString("PROP_ID")) )
82                         {
83                             noDuplicateExists = false;
84                             break;
85                         }
86                     }
87                 }
88             }
89
90             // 2x nein - property wird angelegt/geändert
91
if ( noDuplicateExists && nameGiven )
92             {
93                 // neues property anlegen
94
if ( newProp )
95                 {
96                     q = TKDBManager.newQuery(TKDBPropNew.class);
97                     q.setQueryParams( "PROP_NAME", propName );
98                     q.setQueryParams( "PROP_VALUE", propValue );
99                     q.execute();
100                     rs = q.fetchResultSet();
101                     if (rs != null && rs.next())
102                     {
103                         propId = rs.getString("PROP_ID");
104                     }
105                     propId = (propId != null ? propId : "-1");
106
107                     // set the group membership
108
if ( ! propGroupId.equals("-1") && ! propId.equals("-1") )
109                     {
110                         q = TKDBManager.newQuery(TKDBPropGroupAddMember.class);
111                         q.setQueryParams( "PROP_ID", new Integer JavaDoc(propId) );
112                         q.setQueryParams( "PROP_GROUP_ID", new Integer JavaDoc(propGroupId) );
113                         q.execute();
114                     }
115                 }
116
117                 // property wird nur geändert
118
else
119                 {
120                     q = TKDBManager.newQuery(TKDBPropUpdate.class);
121                     q.setQueryParams( "PROP_ID", new Integer JavaDoc(propId) );
122                     q.setQueryParams( "PROP_NAME", propName );
123                     q.setQueryParams( "PROP_VALUE", propValue );
124                     q.execute();
125                 }
126
127                 // Notify listeners.
128
ConfigurationManager.getInstance().notifyListeners(propGroupName);
129             }
130
131             // finish
132
if ( noDuplicateExists && nameGiven )
133             {
134                 evt.getParams().put(PARAMETER, "PROPGROUP_ID", propGroupId);
135                 evt.getParams().put(PARAMETER, "PROPGROUP_NAME", propGroupName);
136                 evt.getParams().put(PARAMETER, "LIST_PROPS", "1");
137                 COPropGroupEditHandler.getInstance().handleEvent(evt);
138             }
139             // ups, etwas ging schief
140
else
141             {
142                 TKHTMLTemplate t = evt.getPrepHTMLTemplate( "co_error.tmpl" );
143
144                 // EDIT=1 : bestehende gruppe wurde editiert
145
if ( ! newProp )
146                 {
147                     t.set("EDIT", "1");
148                 }
149                 
150                 // NONAME=1 : es wurde keine neuer name angegeben
151
if ( ! nameGiven )
152                 {
153                     t.set("NONAME", "1");
154                 }
155                 
156                 evt.finishTemplate( t );
157             }
158
159
160         } catch (Throwable JavaDoc ex) {
161             throw WebmanExceptionHandler.getException(ex);
162
163         }
164     }
165
166     public boolean isHandler(TKEvent evt)
167     {
168         return evt.getName().equalsIgnoreCase( "CO_PROP_UPDATE" );
169     }
170
171 }
172
Popular Tags