KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > form > eventhandler > CTTestHandler


1 package de.webman.form.eventhandler;
2
3 import com.teamkonzept.web.*;
4 import com.teamkonzept.webman.*;
5 import com.teamkonzept.webman.db.TKWebmanDBManager;
6 import com.teamkonzept.webman.mainint.*;
7 import com.teamkonzept.webman.mainint.db.*;
8
9
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.sql.*;
19 import java.io.*;
20
21 /**
22 * Testen des erzeugten Formulars durch Behandeln dieses selbst als Field
23 *
24 *
25  * @author $Author: alex $
26  * @version $Revision: 1.3 $
27 */

28 public class CTTestHandler extends DefaultEventHandler implements ParameterTypes, FrameConstants, DatabaseDefaults
29 {
30
31     final static int MAX_FIELD_NAME_LENGTH = 80;
32
33     private CTTestHandler()
34     {}
35
36     private static CTTestHandler instance = new CTTestHandler();
37
38     public static CTTestHandler getInstance()
39     {
40         return instance;
41     }
42
43     public void handleEvent(TKEvent evt) throws TKException
44     {
45         try
46         {
47             WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(), ContextConstants.CONTENT_TREE);
48             int formType = Integer.parseInt( evt.getParameter( PARAMETER, "FORM_TYPE" ) );
49             TKHTMLTemplate t = evt.getPrepHTMLTemplate( "ct_fields.tmpl" );
50             TKHashtable fieldContext = new TKHashtable();
51             TKBaseField field = CTUtils.getStructure( formType );
52
53             /*
54             testen eines forms: form muss die (nichtgespeicherte) Version
55             temporaer speichern, ein neues Objekt holen, dieses mit dieser
56             Version fuellen und als field anzeigen
57             */

58
59             TKHashtable realData = (TKHashtable) field.compileData( "", evt.getParams().getClass( PARAMETER ), fieldContext ); // fieldData holen
60
TKBaseField tmpField = null;
61
62             if (formType == FRAGMENT_FORM_TYPE)
63             {
64                 TKFieldSwitchData data = (TKFieldSwitchData) realData.get(TKBaseField.SUB_TYPE_KEY);
65                 tmpField = TKFieldRegistry.getFieldFromData(data.alternative, data.data); // als fieldObj. holen
66
}
67             else
68             {
69                 // inserted due to bug #397
70
if (realData.get(TKBaseField.NAME_KEY) == null)
71                 {
72                     realData.put(TKBaseField.NAME_KEY, CTUtils.generateFieldName(realData.get(TKBaseField.SHOW_NAME_KEY).toString(),
73                                                                                              MAX_FIELD_NAME_LENGTH));
74                 }
75
76                 tmpField = TKFieldRegistry.getFieldFromData(realData);
77             }
78
79             TKFormDBData tmpDB = new TKFormDBData( 0, TEMP_CONTENT_FORM_TYPE ); // tmp. speichern als neues form mit anderem form_type (42) SO DASS dieses dann nie in der Contenttyp-Liste auftaucht, da dort nur form_typen 69 aufgelistet werden!!!
80
TKFormDBInterface.New( tmpDB );
81             int tmpFid = tmpDB.form_id;
82             tmpField.insertIntoDB( tmpDB );
83             TKFormDBInterface.Put( tmpDB );
84
85             tmpField.fillIntoTemplate( t, tmpField.getDefault(), "" ); // tmpField jetzt anzeigen
86
CTUtils.keepCTContext( evt, t );
87             CTUtils.switchTest( t, true );
88             t.set( "TMP_FORM_ID", Integer.toString( tmpFid ) ); // tmp. fid ins Template
89
WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), t, CONTENT_TREE);
90             evt.finishTemplate(t);
91         }
92         catch (Throwable JavaDoc e)
93         {
94             // TO DO : Analyze Exception !
95
throw WebmanExceptionHandler.getException(e);
96         }
97     }
98
99     public boolean isHandler(TKEvent evt)
100     {
101         return evt.getName().equalsIgnoreCase("CT_TEST");
102     }
103 }
104
Popular Tags