KickJava   Java API By Example, From Geeks To Geeks.

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


1 package de.webman.content.eventhandler JavaDoc;
2
3 import com.teamkonzept.web.*;
4 import com.teamkonzept.webman.*;
5 import com.teamkonzept.webman.mainint.*;
6 import de.webman.acl JavaDoc.*;
7 import com.teamkonzept.webman.mainint.db.queries.*;
8 import com.teamkonzept.webman.mainint.events.*;
9 import com.teamkonzept.lib.*;
10 import com.teamkonzept.field.*;
11 import com.teamkonzept.field.db.*;
12 import com.teamkonzept.db.*;
13 import de.webman.content.workflow JavaDoc.*;
14 import java.sql.*;
15 import de.webman.template.jsp.JSPTemplate;
16 import de.webman.template.jsp.WSP;
17 import de.webman.template.xslt.XSLTTemplate;
18 import de.webman.content.eventhandler JavaDoc.*;
19
20 import org.w3c.dom.Document JavaDoc;
21 import org.w3c.dom.Node JavaDoc;
22 import org.w3c.dom.Element JavaDoc;
23
24 import javax.servlet.http.HttpSession JavaDoc;
25
26 /**
27 * editieren eines Contents:
28 * verschiedene Faelle unterscheiden und entspr. verzweigen:
29 * Formulartyp mit Content aufbauen (ce_fields)
30 *
31 * ermitteln des absoluten pfades ab documentroot bis zu aktuellem Knoten und setzten ins Template!
32 * (UPBASE)
33 *
34 * @param CONTENT_NODE_ID, CONTENT_FORM, CONTENT_NAME, CONTENT_ID durchschleifen!
35 * @author $Author: alex $
36 * @version $Revision: 1.26 $
37 */

38 public class CEEditHandler extends DefaultEventHandler implements DatabaseDefaults, ParameterTypes, FrameConstants
39 {
40     /**
41      * Konstruktor private, da Singleton
42      */

43     private CEEditHandler()
44     {}
45
46     /** Singleton Instanz */
47     private static CEEditHandler instance = new CEEditHandler();
48
49     /**
50      * Zugriff auf Singleton
51      */

52     public static CEEditHandler getInstance()
53     {
54         return instance;
55     }
56
57     /**
58      * Handles the specified event.
59      *
60      * @param evt the event to be handled.
61      * @throws TKException if any error occurred during event handling.
62      */

63     public void handleEvent (TKEvent evt)
64         throws TKException
65     {
66         TKBaseField field =null;
67         try
68         {
69             CEUtils.checkEvent(evt);
70             TKHTMLTemplate t = evt.getPrepHTMLTemplate("ce_fields.tmpl");
71             ContentContext ceContext;
72
73             String JavaDoc doPreview = evt.getParameter(PARAMETER, "DO_PREVIEW");
74
75             if (doPreview != null)
76             {
77                 t.set("DO_PREVIEW", doPreview);
78             }
79
80             String JavaDoc event = evt.getName();
81             if (event.equalsIgnoreCase("CE_REVERT")) event = null;
82
83             // statische Daten der Versionsverwaltung abrufen
84
VersionStatics statics = VersionStatics.setup();
85
86             // Intershop Special
87
if (evt.getName().equalsIgnoreCase("CE_CATFORM") || evt.getName().equalsIgnoreCase("CE_PRODFORM"))
88             {
89                 ceContext = new ContentContext(evt.getParameter(PARAMETER, "NAVIGATION_CONTEXT"));
90                 String JavaDoc iID = evt.getParameter(PARAMETER, "INSTANCE_ID");
91                 if (iID != null)
92                 {
93                     //ceContext.sInstanceId = iID;
94
ceContext.instanceId = ceContext.string2Int(iID);
95                     String JavaDoc nID = evt.getParameter(PARAMETER, "CONTENT_NODE_ID");
96                     ceContext.conNodeId = ceContext.string2Int(nID);
97                     // ceContext.sConNodeId = nID;
98
}
99             }
100             else
101             {
102                 ceContext = new ContentContext (evt.getParams());
103             }
104             Integer JavaDoc version = event == null ? new Integer JavaDoc(-1) : ceContext.string2Int (evt.getParameter("VERSION_ID",event));
105             if (version.intValue() >= 0) ceContext.versionId = version;
106
107             if (ceContext.toStatusId.intValue() < 0) {
108                 VersionStatus newStatus = VersionStatus.lookupNewContent(statics);
109                 ceContext.toStatusId = newStatus == null ? new Integer JavaDoc(VersionStatus.defaultNewStatus) : new Integer JavaDoc(newStatus.status_id);
110             }
111
112             // Bei GroupContent wird hier der neue Namen geholt!
113
if (ceContext.conNodeName == null)
114             {
115                 if (evt.getName().equalsIgnoreCase("CE_CATFORM") || evt.getName().equalsIgnoreCase("CE_PRODFORM"))
116                     ceContext.conNodeName = evt.getParameter(PARAMETER, "NEW_GROUP_CONTENT_NAME");
117                 else
118                     ceContext.conNodeName = ceContext.getParam ("NEW_GROUP_CONTENT_NAME");
119             }
120             boolean neuerGroupContent = false;
121             if (ceContext.conNodeShortName == null)
122             {
123                 if (evt.getName().equals("CE_CATFORM") || evt.getName().equals("CE_PRODFORM"))
124                     ceContext.conNodeShortName = evt.getParameter(PARAMETER, "NEW_GROUP_CONTENT_SHORTNAME");
125                 else
126                     ceContext.conNodeShortName = ceContext.getParam ("NEW_GROUP_CONTENT_SHORTNAME");
127                 neuerGroupContent = true;
128             }
129             // falls neuer GroupContent überprüfung später !!!
130
if (!neuerGroupContent)
131                 CEUtils.isValidPathname( ceContext.conNodeShortName );
132
133             // Formdata holen
134
TKFormDBData data = new TKFormDBData( ceContext.formId.intValue() );
135             TKFormDBInterface.Get( data );
136             field = TKFieldRegistry.getFieldFromDB( data );
137             if (ceContext.instanceId.intValue() == -1)
138             {
139                 field.fillIntoTemplate( t, field.getDefault(), "" );
140             } else if (ceContext.versionId.intValue() >= 0)
141             {
142                 // vorhandene content version
143
TKContentDBData cdata = new TKContentDBData (ceContext.instanceId.intValue(), ceContext.versionId.intValue());
144
145                 TKContentDBInterface.Get (cdata);
146                 Object JavaDoc contentData = field.getDataFromDB( cdata );
147
148                 field.fillIntoTemplate( t, contentData, "" );
149                 // ?t.set("CONTENT_ID", new Integer(cdata.content_id));
150

151             } else {
152                 throw new Exception JavaDoc ("doCEEdit: No transitionable version there");
153             }
154             ceContext.fillIntoTemplate (t);
155             // Bei Gruppen die UPBASE des Gruppenknoten setzen
156
String JavaDoc groupContentID = evt.getParameter(PARAMETER,"GROUP_CONTENT_NODE_ID");
157             if (groupContentID != null && groupContentID.length() > 0)
158                 t.set( "UPBASE", CEUtils.getCurrentPath(new Integer JavaDoc(groupContentID)));
159             else
160             {
161                 if (ceContext.conNodeId.intValue() != -1)
162                 t.set( "UPBASE", CEUtils.getCurrentPath(ceContext.conNodeId ) );
163             }
164
165             if (ceContext.getNavigationContext() != null)
166             {
167                 ContentContext oldContext = new ContentContext(evt.getParameter(PARAMETER, "NAVIGATION_CONTEXT"));
168                 t.set("NAVIGATION_CONTEXT", oldContext.calculateNavContext());
169             }
170             if (evt.getName().equalsIgnoreCase("CE_VIEW"))
171             {
172                 t.set("VIEW_ONLY", "true");
173             }
174             // Achtung bei neuem Content !
175
WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), t, ContextConstants.CONTENT_EDIT, Policy.CONTENT_TREE_ID, ceContext.conNodeId);
176             evt.finishTemplate(t);
177         }
178         catch (TKFieldDataDBError error)
179         {
180             Object JavaDoc[] data = {field.getShowName()};
181             // Formular hat sich incompatibel geändert
182
throw new TKException("Incompatible change", FORM_CHANGE, HIGH_SEVERITY, false, data, null);
183         }
184         catch (Throwable JavaDoc e)
185         {
186             // TO DO : Analyze Exception !
187
throw WebmanExceptionHandler.getException(e);
188         }
189     }
190
191     public boolean isHandler(TKEvent evt)
192     {
193         return (evt.getName().equalsIgnoreCase("CE_EDIT")
194         || evt.getName().equalsIgnoreCase("CE_VIEW")
195         || evt.getName().equalsIgnoreCase("CE_REVERT") ||
196         evt.getName().equalsIgnoreCase("CE_CONTENT_VERSION_EDIT"));
197
198     }
199 }
200
Popular Tags