001: package de.webman.sitetree.eventhandler;
002:
003: import java.sql.ResultSet;
004: import com.teamkonzept.web.*;
005: import com.teamkonzept.webman.*;
006: import com.teamkonzept.webman.db.TKWebmanDBManager;
007: import com.teamkonzept.webman.mainint.*;
008: import com.teamkonzept.webman.mainint.db.*;
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 de.webman.sitetree.eventhandler.SiteTreeUtils;
016:
017: /**
018: * Prepares an existing site structure document for editing.
019: *
020: * @author $Author: uli $
021: * @version $Revision: 1.9 $
022: */
023: public class STEditStructureDocHandler extends DefaultEventHandler
024: implements ParameterTypes, FrameConstants, DatabaseDefaults {
025:
026: /**
027: * The singleton instance.
028: */
029: private static final STEditStructureDocHandler INSTANCE = new STEditStructureDocHandler();
030:
031: /**
032: * Avoids outside intstantiation.
033: */
034: private STEditStructureDocHandler() {
035: // NOP
036: }
037:
038: /**
039: * Returns the singleton instance.
040: *
041: * @return the singleton instance.
042: */
043: public static STEditStructureDocHandler getInstance() {
044: return INSTANCE;
045: }
046:
047: /**
048: * Handles the specified event.
049: *
050: * @param event the event to be handled.
051: * @throws TKException if any error occurred during event handling.
052: */
053: public void handleEvent(TKEvent event) throws TKException {
054: try {
055: WebManEvent.checkEvent(event.getRemoteUser(), event
056: .getName(), ContextConstants.SITE_TREE);
057:
058: Integer siteId = new Integer(event.getParameter(PARAMETER,
059: "SITE_NODE_ID"));
060: Integer formId = new Integer(event.getParameter(PARAMETER,
061: "FORM_ID"));
062: Integer contentId = null;
063:
064: String content = event
065: .getParameter(PARAMETER, "CONTENT_ID");
066:
067: if (content == null || content.length() == 0) {
068: TKQuery query = TKDBManager
069: .newQuery(TKDBStructContentGetContentID.class);
070: query.setQueryParams("SITE_NODE_ID", siteId);
071: query.setQueryParams("FORM_ID", formId);
072: query.execute();
073:
074: ResultSet result = query.fetchResultSet();
075:
076: if (result.next()) {
077: contentId = new Integer(result.getInt("CONTENT_ID"));
078: }
079: } else {
080: contentId = new Integer(content);
081: }
082:
083: TKHTMLTemplate t = event
084: .getPrepHTMLTemplate("st_fields.tmpl");
085: TKFormDBData data = new TKFormDBData(formId.intValue(),
086: STRUCTURE_FORM_TYPE);
087: TKFormDBInterface.Get(data);
088: TKBaseField field = TKFieldRegistry.getFieldFromDB(data);
089: TKContentDBData conDB = new TKContentDBData();
090: conDB.content_id = contentId.intValue();
091: TKContentDBInterface.Get(conDB);
092: Object contentData = field.getDataFromDB(conDB);
093: field.fillIntoTemplate(t, contentData, "");
094: t.set("FORM_ID", formId);
095: t.set("CONTENT_ID", contentId);
096: t.set("UPBASE", SiteTreeUtils.getCurrentPath(siteId));
097: SiteTreeUtils.keepSTContext(event, t);
098: WebManEvent.fillEventsIntoTemplate(event.getRemoteUser(),
099: t, SITE_TREE);
100: event.finishTemplate(t);
101: } catch (Throwable e) {
102: // TO DO : Analyze Exception !
103: throw WebmanExceptionHandler.getException(e);
104: }
105: }
106:
107: /**
108: * Checks wether this handler is capable to handle the specified event.
109: *
110: * @param event the event to be handled.
111: * @return <CODE>true</CODE> if this handler is capable to handle the
112: * specified event, otherwise <CODE>false</CODE>.
113: */
114: public boolean isHandler(TKEvent event) {
115: return event.getName().equalsIgnoreCase("ST_EDIT_STRUC_DOC");
116: }
117:
118: }
|