001: package de.webman.content.eventhandler;
002:
003: import com.teamkonzept.web.*;
004: import com.teamkonzept.webman.*;
005: import de.webman.acl.*;
006: import com.teamkonzept.webman.mainint.*;
007: import com.teamkonzept.webman.mainint.db.queries.*;
008: import com.teamkonzept.webman.mainint.events.*;
009: import com.teamkonzept.lib.*;
010: import com.teamkonzept.db.*;
011:
012: import de.webman.acl.LoginFactory;
013: import de.webman.acl.Login;
014: import de.webman.acl.Event;
015: import de.webman.acl.EventFactory;
016:
017: /**
018: * Baut die Liste der Knoten im linken Frame auf
019: *
020: * @author $Author: sebastian $
021: * @version $Revision: 1.9 $
022: */
023: public class CENodeListMultHandler extends DefaultEventHandler
024: implements ParameterTypes, FrameConstants {
025: /** @see CEBrowseHandler */
026: private CENodeListMultHandler() {
027: }
028:
029: /** Singleton Instanz */
030: private static CENodeListMultHandler instance = new CENodeListMultHandler();
031:
032: public static CENodeListMultHandler getInstance() {
033: return instance;
034: }
035:
036: public void handleEvent(TKEvent evt) throws TKException {
037: try {
038: CEUtils.checkEvent(evt);
039: TKHTMLTemplate left = evt
040: .getPrepHTMLTemplate("ce_nodeList.tmpl");
041: String dest = evt.getNotNullParameter(PARAMETER,
042: "DESTINATION");
043:
044: // behalte sortier-Parameter
045: CEUtils.keepSortParameter(evt, left);
046:
047: TKVector openNodes = new TKVector();
048: if (evt.getParams().hasMultiple(PARAMETER, "OPEN_NODES")) {
049: openNodes = evt.getParams().getVector(PARAMETER,
050: "OPEN_NODES");
051: } else {
052: openNodes.put(0, evt.getParameter(PARAMETER,
053: "OPEN_NODES"));
054: }
055:
056: TKQuery q;
057: TKDBResult tree = null;
058: TKDBResult branch;
059: //int size = openNodes.size();
060: int size = (openNodes == null ? 0 : openNodes.size());
061: for (int i = 0; i < size; i++) {
062: String id = (String) openNodes.get(i);
063: if (id != null && !id.equals("")) {
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: java.sql.ResultSet rs = q.fetchResultSet();
073: branch = new TKDBResult(rs);
074:
075: // iterate to get events!!
076:
077: if (tree != null) {
078: tree = TreeUtils.mergeIntoTree(tree, branch,
079: "CONTENT_NODE_ID");
080: } else {
081: tree = branch;
082: }
083: }
084: }
085:
086: // add local rights to each node
087: WebManEvent.fillInContentEvents(evt.getRemoteUser(), evt
088: .getName(), CONTENT_EDIT, tree);
089:
090: // die liste der offenen nodes kommt ins template
091: TKStandardIterator iterator1 = new TKStandardIterator(
092: openNodes, left.getListIterator(), "OPEN_NODES",
093: "OPEN_NODES");
094: left.setListIterator(iterator1);
095:
096: int maxDepth = TreeUtils.getMaxDepth(tree, "CONTENT");
097: TKOpenContentTreeIterator iterator;
098: if (!dest.equals("")) {
099: iterator = new TKOpenContentTreeIterator(tree, left
100: .getListIterator(), "CE_NODE_LIST", Integer
101: .parseInt(dest), maxDepth);
102: } else {
103: left.set("IS_TOP", "1");
104: iterator = new TKOpenContentTreeIterator(tree, left
105: .getListIterator(), "CE_NODE_LIST", maxDepth);
106: }
107: left.setListIterator(iterator);
108:
109: left.set("MAXDEPTH_PLUS_ONE", Integer
110: .toString(maxDepth + 1));
111: left.set("MAXDEPTH_PLUS_TWO", Integer
112: .toString(maxDepth + 2));
113:
114: left.set("RTARGET", RIGHT_TARGET);
115: left.set("LTARGET", LEFT_TARGET);
116:
117: // dupliziertool
118: LoginFactory factory = LoginFactory.getInstance();
119: Login login = factory.getLogin(evt.getRemoteUser());
120: Event event = EventFactory.getInstance().getEvent(
121: "DU_START");
122: if (login.isAllowed(event.getID(),
123: ContextConstants.DUPLICATION_TOOL)) {
124: left.set("DU_START", "1");
125: }
126:
127: // neu ordnen
128: event = EventFactory.getInstance().getEvent(
129: "CE_ARRANGE_START");
130: if (login.isAllowed(event.getID(),
131: ContextConstants.CONTENT_EDIT)) {
132: left.set("CE_ARRANGE_START", "1");
133: }
134: /*
135: überschreibt sonst die lokalen Rechte @see CEOpenMultDirHandler;
136: die globalen Rechte werden sowieso mit den lokalen Rechten reingeschrieben
137:
138: mailto:sebastian@webman-ag.de
139: */
140: //WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), left, ContextConstants.CONTENT_EDIT);
141: evt.finishTemplate(left);
142: } catch (Throwable e) {
143: // TO DO : Analyze Exception !
144: throw WebmanExceptionHandler.getException(e);
145: }
146: }
147:
148: public boolean isHandler(TKEvent evt) {
149: return evt.getName().equalsIgnoreCase("CE_SHOWLIST");
150: }
151: }
|