001: package de.webman.sitetree.eventhandler;
002:
003: import com.teamkonzept.web.*;
004: import com.teamkonzept.webman.*;
005: import com.teamkonzept.webman.db.TKWebmanDBManager;
006: import com.teamkonzept.webman.mainint.*;
007: import com.teamkonzept.webman.mainint.db.*;
008:
009: import com.teamkonzept.webman.mainint.db.queries.*;
010: import com.teamkonzept.webman.mainint.events.*;
011: import com.teamkonzept.lib.*;
012: import com.teamkonzept.field.*;
013: import com.teamkonzept.field.db.*;
014: import com.teamkonzept.db.*;
015: import com.teamkonzept.publishing.markups.*;
016:
017: import java.sql.*;
018: import java.io.*;
019: import java.util.*;
020: import org.apache.log4j.Category;
021:
022: /**
023: * Update der (geaenderten) Parameter eines Document
024: *
025: * @author $Author: alex $
026: * @version $Revision: 1.3 $
027: */
028: public class STUpdateDocumentHandler extends DefaultEventHandler
029: implements ParameterTypes, FrameConstants, DatabaseDefaults {
030: /** for Logging */
031: private static Category cat = Category
032: .getInstance(STUpdateDocumentHandler.class);
033:
034: private STUpdateDocumentHandler() {
035: }
036:
037: private static STUpdateDocumentHandler instance = new STUpdateDocumentHandler();
038:
039: public static STUpdateDocumentHandler getInstance() {
040: return instance;
041: }
042:
043: public void handleEvent(TKEvent evt) throws TKException {
044: try {
045: WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(),
046: ContextConstants.SITE_TREE);
047: String sDocType = evt.getParameter(PARAMETER,
048: "DOCUMENT_TYPE");
049: String sOldDocType = evt.getParameter(PARAMETER,
050: "OLD_DOC_TYPE");
051: String sExtUrl = "";
052:
053: cat.debug(" sDocType " + sDocType + " sOldDocType "
054: + sOldDocType);
055: cat.debug(" evt.getParams() " + evt.getParams());
056:
057: if (sDocType.equals("2") && sOldDocType.equals("1")) {
058: TKQuery q = TKDBManager
059: .newQuery(TKDBPresentationGet.class);
060: q.execute();
061: ResultSet rs = q.fetchResultSet();
062:
063: TKHTMLTemplate t = evt
064: .getPrepHTMLTemplate("st_newExtDoc.tmpl");
065: TKDBTemplate.prepareListTemplate(rs, t,
066: "ST_PRESENTATION_LIST");
067:
068: t.set(evt.getParams().getClass(PARAMETER));
069: t.set("UPDATE", "1");
070: t.set("THE_PRESENTATION_ID", evt.getParameter(
071: PARAMETER, "PRESENTATION_ID"));
072: evt.finishTemplate(t);
073: return;
074: }
075: if (sDocType.equals("2") && sOldDocType.equals("2")) { // jetzt auch die externe URL speichern!!
076: sExtUrl = evt.getParameter(PARAMETER, "EXTERNAL_URL");
077: } else if (sDocType.equals("Fake")) { // jetzt auch die externe URL speichern!!
078: sExtUrl = evt.getParameter(PARAMETER, "EXTERNAL_URL");
079: sDocType = "2"; // ist eigentlich ein externes doc
080: }
081:
082: String sNodeId = evt
083: .getParameter(PARAMETER, "SITE_NODE_ID");
084: String sDocIdx = evt.getParameter(PARAMETER,
085: "SITE_NODE_DOC_IDX");
086: String thePresId = evt.getParameter(PARAMETER,
087: "THE_PRESENTATION_ID"); // neue presentation
088: String presId = evt.getParameter(PARAMETER,
089: "PRESENTATION_ID"); // alte presentation
090: String sDocName = evt.getParameter(PARAMETER,
091: "DOCUMENT_NAME");
092: String sDocShortName = evt.getParameter(PARAMETER,
093: "DOCUMENT_SHORTNAME");
094: String sHeretable = evt.getNotNullParameter(PARAMETER,
095: "INHERITABLE");
096: String sInheritBeginLevel = evt.getNotNullParameter(
097: PARAMETER, "INHERIT_BEGIN_LEVEL");
098: String sInheritEndLevel = evt.getNotNullParameter(
099: PARAMETER, "INHERIT_END_LEVEL");
100: int heretable = sHeretable.equals("") ? 0 : Integer
101: .parseInt(sHeretable);
102: Integer inheritBeginLevel = sInheritBeginLevel.equals("") ? null
103: : new Integer(sInheritBeginLevel);
104: Integer inheritEndLevel = sInheritEndLevel.equals("") ? null
105: : new Integer(sInheritEndLevel);
106:
107: TKQuery q;
108: if (!thePresId.equals(presId)) { // presentation hat sich geaendert
109: q = TKDBManager.newQuery(TKDBSiteDocUpdatePres.class);
110: q.setQueryParams("SITE_NODE_ID", new Integer(sNodeId));
111: q.setQueryParams("SITE_NODE_DOC_IDX", new Integer(
112: sDocIdx));
113: q.setQueryParams("PRESENTATION_ID", new Integer(
114: thePresId));
115: q.setQueryParams("DOCUMENT_NAME", sDocName);
116: q.setQueryParams("DOCUMENT_SHORTNAME", sDocShortName);
117: q
118: .setQueryParams("DOCUMENT_TYPE", new Integer(
119: sDocType));
120: q.setQueryParams("EXTERNAL_URL",
121: sExtUrl.equals("") ? null : sExtUrl);
122: q.setQueryParams("INHERITABLE", new Integer(heretable));
123: q.setQueryParams("INHERIT_BEGIN_LEVEL",
124: inheritBeginLevel);
125: q.setQueryParams("INHERIT_END_LEVEL", inheritEndLevel);
126: } else { // presentation hat sich nicht geaendert
127: q = TKDBManager.newQuery(TKDBSiteDocUpdate.class);
128: q.setQueryParams("SITE_NODE_ID", new Integer(sNodeId));
129: q.setQueryParams("SITE_NODE_DOC_IDX", new Integer(
130: sDocIdx));
131: q.setQueryParams("DOCUMENT_NAME", sDocName);
132: q.setQueryParams("DOCUMENT_SHORTNAME", sDocShortName);
133: q
134: .setQueryParams("DOCUMENT_TYPE", new Integer(
135: sDocType));
136: q.setQueryParams("EXTERNAL_URL",
137: sExtUrl.equals("") ? null : sExtUrl);
138: q.setQueryParams("INHERITABLE",
139: (heretable == -1) ? new Integer(0)
140: : new Integer(heretable));
141: q.setQueryParams("INHERIT_BEGIN_LEVEL",
142: inheritBeginLevel);
143: q.setQueryParams("INHERIT_END_LEVEL", inheritEndLevel);
144: }
145: q.execute();
146: //ResultSet rs = q.fetchResultSet();
147: q.fetchResultSet();
148: STEditHandler.getInstance().handleEvent(evt);
149: } catch (Throwable e) {
150: // TO DO : Analyze Exception !
151: throw WebmanExceptionHandler.getException(e);
152: }
153: }
154:
155: public boolean isHandler(TKEvent evt) {
156: return evt.getName().equalsIgnoreCase("ST_UPDATE_DOCUMENT");
157: }
158: }
|