001: package de.webman.content.eventhandler;
002:
003: import com.teamkonzept.web.*;
004: import com.teamkonzept.webman.*;
005: import com.teamkonzept.webman.mainint.*;
006: import com.teamkonzept.webman.mainint.db.*;
007: import com.teamkonzept.webman.mainint.db.queries.*;
008: import com.teamkonzept.webman.mainint.events.*;
009: import com.teamkonzept.lib.*;
010: import com.teamkonzept.field.*;
011: import com.teamkonzept.field.db.*;
012: import com.teamkonzept.db.*;
013:
014: import java.sql.*;
015:
016: /**
017: * Oeffnen eines Dirs im Contenttree
018: *
019: * @author $Author: mischa $
020: * @version $Revision: 1.4 $
021: */
022: public class CEArrangeOpenDirHandler extends DefaultEventHandler
023: implements ParameterTypes, FrameConstants, DatabaseDefaults {
024: private CEArrangeOpenDirHandler() {
025: }
026:
027: private static CEArrangeOpenDirHandler instance = new CEArrangeOpenDirHandler();
028:
029: public static CEArrangeOpenDirHandler getInstance() {
030: return instance;
031: }
032:
033: public void handleEvent(TKEvent evt) throws TKException {
034: try {
035: CEUtils.checkEvent(evt);
036:
037: TKHTMLTemplate t = evt
038: .getPrepHTMLTemplate("ce_arrange.tmpl");
039: String dest = evt
040: .getParameter(PARAMETER, "CONTENT_NODE_ID");
041: String openNodeId = evt.getParameter(PARAMETER, "NODE_ID");
042: String closeNodeId = evt.getParameter(PARAMETER,
043: "CONTENT_NODE_PARENT");
044:
045: TKVector openNodes = new TKVector();
046: if (evt.getParams().hasMultiple(PARAMETER, "OPEN_NODES")) {
047: openNodes = evt.getParams().getVector(PARAMETER,
048: "OPEN_NODES");
049: } else {
050: openNodes.put(0, evt.getParameter(PARAMETER,
051: "OPEN_NODES"));
052: }
053: openNodes = TreeUtils.updateOpenNodes(openNodes,
054: openNodeId, closeNodeId, dest,
055: TKDBContentTreeIsChild.class);
056:
057: TKDBResult tree = null;
058: TKDBResult branch;
059: TKQuery q;
060: int size = openNodes.size();
061: for (int i = 0; i < size; i++) {
062: String id = (String) openNodes.get(i);
063: if (id != null) {
064: q = TKDBManager
065: .newQuery(TKDBContentTreeGetOpen.class);
066: if (id.equals("-1")) {
067: q.setQueryParams("NODE_ID", TKNull.NULL);
068: } else {
069: q.setQueryParams("NODE_ID", new Integer(id));
070: }
071: q.execute();
072: branch = new TKDBResult(q.fetchResultSet());
073: if (tree != null) {
074: tree = TreeUtils.mergeIntoTree(tree, branch,
075: "CONTENT_NODE_ID");
076: } else {
077: tree = branch;
078: }
079: }
080: }
081:
082: // die liste der jetzt offenen nodes kommt ins template
083: TKStandardIterator iterator1 = new TKStandardIterator(
084: openNodes, t.getListIterator(), "OPEN_NODES",
085: "OPEN_NODES");
086: t.setListIterator(iterator1);
087:
088: int maxDepth = TreeUtils.getMaxDepth(tree, "CONTENT");
089: TKOpenContentTreeIterator iterator = new TKOpenContentTreeIterator(
090: tree, t.getListIterator(), "CE_NODE_LIST", Integer
091: .parseInt(dest), maxDepth);
092: t.setListIterator(iterator);
093: t.set("MAXDEPTH_PLUS_ONE", Integer.toString(maxDepth + 1));
094: t.set("MAXDEPTH_PLUS_TWO", Integer.toString(maxDepth + 2));
095: evt.finishTemplate(t);
096: } catch (Throwable e) {
097: // TO DO : Analyze Exception !
098: throw WebmanExceptionHandler.getException(e);
099: }
100: }
101:
102: public boolean isHandler(TKEvent evt) {
103: return evt.getName().equalsIgnoreCase("CE_ARRANGE_OPENDIR");
104: }
105:
106: }
|