KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > content > eventhandler > CESaveNewNodeHandler


1 package de.webman.content.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 import com.teamkonzept.webman.mainint.db.queries.*;
9 import com.teamkonzept.webman.mainint.events.*;
10 import com.teamkonzept.lib.*;
11 import com.teamkonzept.field.*;
12 import com.teamkonzept.field.db.*;
13 import com.teamkonzept.db.*;
14 import de.webman.content.workflow.*;
15 import de.webman.util.legacy.Legacy;
16 import java.sql.*;
17
18
19 /**
20 * Speichern eines neuen Node
21 * a) DirNode speichern, linke Liste neu aufbauen, rechts leer
22 * b) GroupNode speichern, linke Liste neu aufbauen, rechts Groupeditmaske (ce_conList) mit leerer Liste und New-Button
23 * c) SingleNode speichern, linke Liste neu aufbauen, rechts SingleEditmaske mit leerem Contentform (ce_fields)
24 *
25  * @author $Author: alex $
26  * @version $Revision: 1.10 $
27 */

28 public class CESaveNewNodeHandler extends DefaultEventHandler implements ParameterTypes, FrameConstants, DatabaseDefaults
29 {
30     /** Konstruktor private - Singleton ! */
31     private CESaveNewNodeHandler()
32     {}
33
34     /** Singleton Instanz */
35     private static CESaveNewNodeHandler instance = new CESaveNewNodeHandler();
36     
37     public static CESaveNewNodeHandler getInstance()
38     {
39         return instance;
40     }
41     
42     public void handleEvent(TKEvent evt) throws TKException
43     {
44         try
45         {
46              CEUtils.checkEvent(evt);
47             // statische Daten der Versionsverwaltung abrufen
48
// VersionStatics statics = VersionStatics.setup();
49

50             String JavaDoc sNodeType = evt.getParameter( PARAMETER, "NEW_NODE_TYPE" );
51             String JavaDoc sConForm = (evt.getParameter( PARAMETER, "NEW_CONTENT_NODE_FORM" ))==null?"":evt.getParameter( PARAMETER, "NEW_CONTENT_NODE_FORM" );
52             if (!sNodeType.equals(DIRECTORY_NODE) && sConForm.equals(""))
53             {
54                 throw new TKUserException("Kein Formular definiert", NO_FORM_DEFINED, USER_SEVERITY, false, null);
55             }
56             if (sNodeType.equals(SINGLE))
57             {
58                 evt.getParams().put(PARAMETER, "CONTENT_FORM", sConForm);
59                 CEEditHandler.getInstance().handleEvent(evt);
60                 return;
61             }
62             String JavaDoc sParId = evt.getParameter( PARAMETER, "CONTENT_NODE_ID" );
63             String JavaDoc sNodeName = evt.getParameter( PARAMETER, "NEW_CONTENT_NODE_NAME" );
64             String JavaDoc sNodeShortName = evt.getParameter( PARAMETER, "CONTENT_NODE_SHORTNAME" );
65             // String navigationContext = evt.getNotNullParameter(PARAMETER, "NAVIGATION_CONTEXT");
66
if( !sNodeType.equals(SINGLE) && !CEUtils.isValidPathname( sNodeShortName ) )
67                 throw new TKUserException("Kein gültiger Pfadname", NO_VALID_PATHNAME, USER_SEVERITY, true, null);
68
69             TKQuery q = TKDBManager.newQuery(TKDBContentTreeInsertNode.class);
70             q.setQueryParams( "NODE_ID", new Integer JavaDoc(sParId) );
71             q.setQueryParams( "CONTENT_NODE_NAME", sNodeName );
72             q.setQueryParams( "CONTENT_NODE_SHORTNAME", sNodeShortName );
73             q.setQueryParams( "CONTENT_NODE_TYPE", new Integer JavaDoc(sNodeType) );
74             q.setQueryParams( "TREE_ID", new Integer JavaDoc(0) );
75             q.setQueryParams( "PROTOTYPE_ID", TKNull.NULL );
76
77             if( sNodeType.equals( DIRECTORY_NODE ) ) {
78                 q.setQueryParams( "CONTENT_FORM", TKNull.NULL );
79             }
80             else {
81                 q.setQueryParams( "CONTENT_FORM", new Integer JavaDoc(sConForm) );
82             }
83             q.execute();
84             ResultSet rs = q.fetchResultSet();
85             TKHTMLTemplate frame = null;
86             if( sNodeType.equals( DIRECTORY_NODE ) ) {
87                 // DirectoryNode
88
frame = evt.getPrepHTMLTemplate( "f_ce.tmpl" );
89                 HTMLUtils.fillFrameSet( frame, LEFT_FRAME_WIDTH, "CE_SHOWLIST", "CE_EMPTY" );
90             }
91             else if( sNodeType.equals( GROUP ) ) {
92                 // Group
93
frame = evt.getPrepHTMLTemplate( "f_ce.tmpl" );
94                 HTMLUtils.fillFrameSet( frame, LEFT_FRAME_WIDTH, "CE_SHOWLIST", "CE_GROUP_LIST" );
95             }
96             else {
97                 // Single
98
// kein Template -> es wird an den CEEditHandler weitergeleitet!
99
frame = evt.getPrepHTMLTemplate( "ce_fields.tmpl" ); // wird aus Bequemlichkeit erstmal erzeugt !
100
// HTMLUtils.fillFrameSet( frame, LEFT_FRAME_WIDTH, "CE_SHOWLIST", "CE_EDIT" );
101
}
102             // params fuer doEdit/doGroupList neu setzen entsprechend des neu gespeicherten Nodes !!!
103
String JavaDoc newDestination = "";
104             int newNodeId = 0;
105             // int instId = 0;
106
if( rs.next() ) {
107
108                 newNodeId = rs.getInt("CONTENT_NODE_ID"); // neue Id des eben gespeicherten node
109
newDestination = Integer.toString( newNodeId );
110                 frame.set( "CONTENT_NODE_ID", Integer.toString( newNodeId ) );
111
112                 if( sNodeType.equals( SINGLE ) )
113                 {
114                     /*
115                         einfach mal auskommentiert, vielleicgt geht es ja !
116                     TKContentInstanceDBData instDB = new TKContentInstanceDBData(newNodeId, "default" );
117                     TKContentInstanceDBInterface.New( instDB );
118
119                     instId = instDB.instance_id;
120                     TKContentDBData conDB = new TKContentDBData(instId, "%WebManThread.doCESave", evt.getRemoteUser() );
121                     VersionStatus newStatus = VersionStatus.lookupNewContent(statics);
122                     conDB.status_id = newStatus == null ? VersionStatus.defaultNewStatus : newStatus.status_id;
123                     TKContentDBInterface.New( conDB );
124
125                     TKFormDBData data = new TKFormDBData( Integer.parseInt( sConForm ) );
126                     TKFormDBInterface.Get( data );
127                     TKBaseField field = TKFieldRegistry.getFieldFromDB( data );
128                     field.insertDataIntoDB( conDB, field.getDefault() );
129                     TKContentDBInterface.Put( conDB );
130                     */

131                     // frame.set( "INSTANCE_ID", Integer.toString( instId ) );
132
} else if( sNodeType.equals( GROUP ) ) {
133                     frame.set( "GROUP_CONTENT_NODE_ID", Integer.toString( newNodeId ) );
134                     frame.set( "GROUP_CONTENT_NODE_NAME", sNodeName );
135                     frame.set( "GROUP_CONTENT_NODE_SHORTNAME", sNodeShortName );
136                 }
137             }
138             if( sNodeType.equals( SINGLE ) )
139             {
140                 // Einfach direkt weiterschicken
141
evt.getParams().put(PARAMETER, "CONTENT_NODE_NAME", sNodeName);
142                 evt.getParams().put(PARAMETER, "CONTENT_NODE_SHORTNAME", sNodeShortName);
143                 evt.getParams().put(PARAMETER, "CONTENT_NODE_TYPE", sNodeType);
144                 evt.getParams().put(PARAMETER, "CONTENT_FORM", sConForm);
145                 evt.getParams().put(PARAMETER, "INSTANCE_ID", new Integer JavaDoc(-1));
146                 evt.getParams().put(PARAMETER, "CONTENT_NODE_ID", Integer.toString( newNodeId ));
147                 CEEditHandler.getInstance().handleEvent(evt);
148                 return;
149             }
150             frame.set( "CONTENT_NODE_NAME", sNodeName );
151             frame.set( "CONTENT_NODE_SHORTNAME", sNodeShortName );
152             frame.set( "CONTENT_NODE_TYPE", sNodeType );
153             frame.set( "CONTENT_FORM", sConForm );
154             TKVector openNodes = new TKVector();
155             if( evt.getParams().hasMultiple( PARAMETER, "OPEN_NODES" ) ) {
156                 openNodes = evt.getParams().getVector( PARAMETER, "OPEN_NODES" );
157             }
158             else {
159                 //openNodes.put( 0, evt.getParameter( PARAMETER, "OPEN_NODES" )==null?"-1":evt.getParameter( PARAMETER, "OPEN_NODES" ) );
160
openNodes.put( 0, evt.getParameter( PARAMETER, "OPEN_NODES" ) );
161             }
162             if ( sNodeType.equals( DIRECTORY_NODE )) {
163                 openNodes.addElement(Integer.toString( newNodeId ));
164             }
165             TKStandardIterator iterator1 = new TKStandardIterator( openNodes, frame.getListIterator(), "OPEN_NODES", "OPEN_NODES" );
166             frame.setListIterator( iterator1 );
167             
168             frame.set( "DESTINATION", newDestination );
169             evt.finishTemplate(frame);
170         }
171         catch (Throwable JavaDoc e)
172         {
173             // TO DO : Analyze Exception !
174
throw WebmanExceptionHandler.getException(e);
175         }
176     }
177     
178     public boolean isHandler(TKEvent evt)
179     {
180         return evt.getName().equalsIgnoreCase("CE_SAVE_NEW_NODE");
181     }
182 }
183
Popular Tags