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: /**
023: * Anzeigen der Maske zum Neuordnen des Sitetree
024: *
025: *
026: */
027: public class STArrangeShowHandler extends DefaultEventHandler implements
028: ParameterTypes, FrameConstants, DatabaseDefaults {
029: private STArrangeShowHandler() {
030: }
031:
032: private static STArrangeShowHandler instance = new STArrangeShowHandler();
033:
034: public static STArrangeShowHandler getInstance() {
035: return instance;
036: }
037:
038: public void handleEvent(TKEvent evt) throws TKException {
039: try {
040: WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(),
041: ContextConstants.SITE_TREE);
042: TKHTMLTemplate t = evt
043: .getPrepHTMLTemplate("st_arrange.tmpl");
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:
054: TKQuery q;
055: TKDBResult tree = null;
056: TKDBResult branch;
057: int size = openNodes.size();
058: for (int i = 0; i < size; i++) {
059: String id = (String) openNodes.get(i);
060: if (id != null) {
061: q = TKDBManager.newQuery(TKDBSiteTreeGetOpen.class);
062: if (id.equals("-1")) {
063: q.setQueryParams("NODE_ID", TKNull.NULL);
064: } else {
065: q.setQueryParams("NODE_ID", new Integer(id));
066: }
067: q.execute();
068: branch = new TKDBResult(q.fetchResultSet());
069: if (tree != null) {
070: tree = TreeUtils.mergeIntoTree(tree, branch,
071: "SITE_NODE_ID");
072: } else {
073: tree = branch;
074: }
075: }
076: }
077:
078: // die liste der offenen nodes kommt ins template
079: TKStandardIterator iterator1 = new TKStandardIterator(
080: openNodes, t.getListIterator(), "OPEN_NODES",
081: "OPEN_NODES");
082: t.setListIterator(iterator1);
083:
084: int maxDepth = TreeUtils.getMaxDepth(tree, "SITE");
085: TKOpenSiteTreeIterator iterator = new TKOpenSiteTreeIterator(
086: tree, t.getListIterator(), "ST_NODE_LIST", maxDepth);
087: t.set("IS_TOP", "1");
088:
089: t.setListIterator(iterator);
090:
091: t.set("MAXDEPTH_PLUS_ONE", Integer.toString(maxDepth + 1));
092: t.set("MAXDEPTH_PLUS_TWO", Integer.toString(maxDepth + 2));
093: evt.finishTemplate(t);
094: } catch (Throwable e) {
095: // TO DO : Analyze Exception !
096: throw WebmanExceptionHandler.getException(e);
097: }
098: }
099:
100: public boolean isHandler(TKEvent evt) {
101: return evt.getName().equalsIgnoreCase("ST_ARRANGE_SHOW");
102: }
103: }
|