01: package de.webman.config.eventhandler;
02:
03: import com.teamkonzept.web.*;
04: import com.teamkonzept.webman.*;
05: import com.teamkonzept.webman.db.TKWebmanDBManager;
06: import com.teamkonzept.webman.mainint.*;
07: import com.teamkonzept.webman.mainint.db.*;
08:
09: import de.webman.content.workflow.*;
10: import com.teamkonzept.webman.mainint.db.queries.*;
11: import com.teamkonzept.webman.mainint.events.*;
12: import com.teamkonzept.lib.*;
13: import com.teamkonzept.field.*;
14: import com.teamkonzept.field.db.*;
15: import com.teamkonzept.db.*;
16: import com.teamkonzept.publishing.markups.*;
17:
18: import java.util.*;
19: import java.io.*;
20:
21: /**
22: * Abpeichern eines Status
23: *
24: * @author $Author: alex $
25: * @version $Revision: 1.3 $
26: */
27: public class COSaveFilterRulesHandler extends DefaultEventHandler
28: implements ParameterTypes, FrameConstants, DatabaseDefaults {
29: private COSaveFilterRulesHandler() {
30: }
31:
32: private static COSaveFilterRulesHandler instance = new COSaveFilterRulesHandler();
33:
34: public static COSaveFilterRulesHandler getInstance() {
35: return instance;
36: }
37:
38: private static void getFilterData(TKHashtable data, TKHashtable params)
39: {
40: Enumeration enum = params.keys();
41: while (enum.hasMoreElements())
42: {
43: String key = (String)enum.nextElement();
44: if (key.startsWith("FILTER."))
45: {
46: // Filter Id ermitteln
47: int index1 = key.indexOf('.');
48: int index2 = key.indexOf('.', index1+1);
49: Integer filterID = new Integer(key.substring(index1+1, index2));
50: TKHashtable filter = (TKHashtable)data.get(filterID);
51: if (filter == null)
52: {
53: filter = new TKHashtable();
54: data.put(filterID, filter);
55: }
56: //Status ID ermitteln
57: Integer statusID = new Integer(key.substring(index2+1, key.length()));
58: filter.put(statusID, params.get(key));
59: }
60: }
61: }
62:
63: public void handleEvent(TKEvent evt) throws TKException
64: {
65: try
66: {
67: WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(), ContextConstants.CUSTOMIZE_PROPERTIES);
68: //TKHTMLTemplate t = evt.getPrepHTMLTemplate( "ce_versionTransitions.tmpl" );
69: // statische Daten der Versionsverwaltung abrufen
70: VersionStatics statics = VersionStatics.setup();
71: TKHashtable params = (TKHashtable)evt.getParams().get(PARAMETER);
72: // Feldorientiertes einlesen der Formulardaten
73: TKHashtable filterData = new TKHashtable ();
74: getFilterData(filterData,params);
75: Enumeration enum = filterData.keys();
76: while (enum.hasMoreElements())
77: {
78: Integer key = (Integer)enum.nextElement();
79: VersionStatusFilter filter = (VersionStatusFilter)statics.getFilters().get(key);
80: filter.saveRulesToDB((TKHashtable)filterData.get(key));
81:
82: }
83: VersionStatics.reFresh();
84: COWorkflowListHandler.getInstance().handleEvent(evt);
85: }
86: catch (Throwable e)
87: {
88: // TO DO : Analyze Exception !
89: throw WebmanExceptionHandler.getException(e);
90: }
91: }
92:
93: public boolean isHandler(TKEvent evt) {
94: return evt.getName().equalsIgnoreCase("CO_SAVE_RULES");
95: }
96: }
|