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:
021: /**
022: * Speichern eines Structure Document
023: *
024: * @author $Author: alex $
025: * @version $Revision: 1.7 $
026: */
027: public class STSaveStructureDocHandler extends DefaultEventHandler
028: implements ParameterTypes, FrameConstants, DatabaseDefaults {
029: /**Private Konstruktor */
030: private STSaveStructureDocHandler() {
031: }
032:
033: /** Singleton Instanz */
034: private static STSaveStructureDocHandler instance = new STSaveStructureDocHandler();
035:
036: /** Zugriff auf Singleton */
037: public static STSaveStructureDocHandler getInstance() {
038: return instance;
039: }
040:
041: /**
042: ueberprueft User Rechte und wirft Exception, falls es nicht elaubt ist
043: @param user der Remote User
044: @param event der zu checkende Event
045: */
046: public void checkUserRights(String user, String event)
047: throws TKException {
048: try {
049: WebManEvent.checkEvent(user, event,
050: ContextConstants.SITE_TREE);
051: } catch (Throwable e) {
052: throw WebmanExceptionHandler.getException(e);
053: }
054: }
055:
056: public void saveStructureDoc(Integer siteNodeId, Integer formId,
057: Integer contentId, boolean update) throws TKException {
058: try {
059: TKQuery q;
060: if (!update) {
061: // neu einfuegen
062: q = TKDBManager.newQuery(TKDBStructContPut.class);
063: } else {
064: // CONTENT_ID anpassen !!
065: q = TKDBManager.newQuery(TKDBStructContUpdate.class);
066: }
067: q.setQueryParams("SITE_NODE_ID", siteNodeId);
068: q.setQueryParams("FORM_ID", formId);
069: q.setQueryParams("CONTENT_ID", contentId);
070: q.execute();
071: q.fetchResultSet();
072: } catch (Throwable e) {
073: throw WebmanExceptionHandler.getException(e);
074: }
075: }
076:
077: public void handleEvent(TKEvent evt) throws TKException {
078: try {
079: WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(),
080: ContextConstants.SITE_TREE);
081: //content speichern, id holen
082: String sConId = evt.getNotNullParameter(PARAMETER,
083: "CONTENT_ID");
084: int formId = Integer.parseInt(evt.getParameter(PARAMETER,
085: "FORM_ID"));
086:
087: TKFormDBData data = new TKFormDBData(formId,
088: STRUCTURE_FORM_TYPE);
089: TKFormDBInterface.Get(data);
090: TKBaseField field = TKFieldRegistry.getFieldFromDB(data);
091:
092: TKHashtable fieldContext = new TKHashtable();
093: Object realData = field.compileData("", evt.getParams()
094: .getClass(PARAMETER), fieldContext);
095:
096: TKContentDBData conDB;
097: int conId;
098:
099: // ok, es ist doof, aber wir loeschen den alten und legen einen neuen an !
100: if (!sConId.equals("")) {
101: // alten loeschen
102: conId = Integer.parseInt(sConId);
103: TKQuery q = TKDBManager
104: .newQuery(DeleteStrucContentValue.class);
105: q.setQueryParams("CONTENT_ID", new Integer(sConId));
106: q.execute();
107: }
108: // speichern eines neuen content
109: TKQuery q = TKDBManager
110: .newQuery(TKDBContentNewContent.class);
111: q.execute();
112: ResultSet rs = q.fetchResultSet();
113: rs.next();
114: conId = rs.getInt("CONTENT_ID");
115: conDB = new TKContentDBData();
116: conDB.content_id = conId;
117: field.insertDataIntoDB(conDB, realData);
118: TKContentDBInterface.Put(conDB);
119:
120: int siteNodeId = Integer.parseInt(evt.getParameter(
121: PARAMETER, "SITE_NODE_ID"));
122: if (sConId.equals("")) {
123: // neu einfuegen
124: q = TKDBManager.newQuery(TKDBStructContPut.class);
125: } else {
126: // CONTENT_ID anpassen !!
127: q = TKDBManager.newQuery(TKDBStructContUpdate.class);
128: }
129: q.setQueryParams("SITE_NODE_ID", new Integer(siteNodeId));
130: q.setQueryParams("FORM_ID", new Integer(formId));
131: q.setQueryParams("CONTENT_ID", new Integer(conId));
132: q.execute();
133: rs = q.fetchResultSet();
134:
135: STEditHandler.getInstance().handleEvent(evt);
136: } catch (Throwable e) {
137: // TO DO : Analyze Exception !
138: throw WebmanExceptionHandler.getException(e);
139: }
140: }
141:
142: /** gibt den Event an
143: * @param evt aktueller Event
144: * @return ob der Event behandelt wird
145: */
146: public boolean isHandler(TKEvent evt) {
147: return evt.getName().equalsIgnoreCase("ST_SAVE_STRUC");
148: }
149: }
|