001: package de.webman.duplication.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:
020: import com.teamkonzept.webman.mainint.*;
021:
022: /************************************************************************
023: /**
024: * Anzeigen der Maske zum Neuordnen des Contenttree
025: *
026: *
027: * @param
028: */
029: public class STChooseOpenDirHandler extends DefaultEventHandler
030: implements ParameterTypes, FrameConstants, DatabaseDefaults {
031: private STChooseOpenDirHandler() {
032: }
033:
034: private static STChooseOpenDirHandler instance = new STChooseOpenDirHandler();
035:
036: public static STChooseOpenDirHandler getInstance() {
037: return instance;
038: }
039:
040: public void handleEvent(TKEvent evt) throws TKException {
041: try {
042: TKHTMLTemplate t = evt
043: .getPrepHTMLTemplate("du_choose.tmpl");
044: TKParams params = evt.getParams();
045: if (params.getClass("PAR") != null) {
046: t.set(params.getClass("PAR"));
047: }
048: String dest = params.get("PAR", "SITE_NODE_ID");
049: String openNodeId = params.get("PAR", "ST_NODE_ID");
050: String closeNodeId = params.get("PAR", "SITE_NODE_PARENT");
051:
052: String siteTreeFlag = (params.get("PAR", "SITE_TREE_FLAG")) == null ? "OFF"
053: : params.get("PAR", "SITE_TREE_FLAG");
054: String contentFlag = (params.get("PAR", "CONTENT_FLAG")) == null ? "OFF"
055: : params.get("PAR", "CONTENT_FLAG");
056: t.set("SITE_TREE_FLAG", siteTreeFlag);
057: t.set("CONTENT_FLAG", contentFlag);
058:
059: TKVector openNodes = new TKVector();
060: if (params.hasMultiple("PAR", "ST_OPEN_NODES")) {
061: openNodes = params.getVector("PAR", "ST_OPEN_NODES");
062: } else {
063: openNodes.put(0, params.get("PAR", "ST_OPEN_NODES"));
064: }
065: openNodes = TreeUtils.updateOpenNodes(openNodes,
066: openNodeId, closeNodeId, dest,
067: TKDBSiteTreeIsChild.class);
068:
069: /* Information über den ContentTree, aus dem link im SiteTree */
070: TKVector openCSNodes = new TKVector();
071: if (params.hasMultiple("PAR", "CS_OPEN_NODES")) {
072: openCSNodes = params.getVector("PAR", "CS_OPEN_NODES");
073: } else {
074: openCSNodes.put(0, params.get("PAR", "CS_OPEN_NODES"));
075: }
076:
077: TKDBResult tree = null;
078: TKDBResult branch;
079: TKQuery q;
080: int size = openNodes.size();
081: for (int i = 0; i < size; i++) {
082: String id = (String) openNodes.get(i);
083: if (id != null) {
084: q = TKDBManager.newQuery(TKDBSiteTreeGetOpen.class);
085: if (id.equals("-1")) {
086: q.setQueryParams("NODE_ID", TKNull.NULL);
087: } else {
088: q.setQueryParams("NODE_ID", new Integer(id));
089: }
090: q.execute();
091: branch = new TKDBResult(q.fetchResultSet());
092: if (tree != null) {
093: tree = TreeUtils.mergeIntoTree(tree, branch,
094: "SITE_NODE_ID");
095: } else {
096: tree = branch;
097: }
098: }
099: }
100:
101: // die liste der jetzt offenen nodes kommt ins template
102: TKStandardIterator iterator1 = new TKStandardIterator(
103: openNodes, t.getListIterator(), "ST_OPEN_NODES",
104: "ST_OPEN_NODES");
105: t.setListIterator(iterator1);
106:
107: // die Liste der jetzt offenen ContentTree nodes kommt in die SiteTree links
108: TKStandardIterator iteratorCS1 = new TKStandardIterator(
109: openCSNodes, t.getListIterator(), "CS_OPEN_NODES",
110: "CS_OPEN_NODES");
111: t.setListIterator(iteratorCS1);
112:
113: int maxDepth = TreeUtils.getMaxDepth(tree, "SITE");
114: DUOpenSiteTreeIterator iterator = new DUOpenSiteTreeIterator(
115: tree, t.getListIterator(), "ST_NODE_LIST", Integer
116: .parseInt(dest), maxDepth);
117: t.setListIterator(iterator);
118: t.set("ST_MAXDEPTH_PLUS_TWO", Integer
119: .toString(maxDepth + 2));
120: t.set("ROLE", (params.get("PAR", "ROLE") == null) ? ""
121: : params.get("PAR", "ROLE"));
122: doCTNodeListMult(t, openNodes, params);
123:
124: //Optionsliste fuer Anzahl der Kopien
125: Integer number;
126: TKVector aVector = new TKVector(Utils.MAX_DUPLICATION);
127: for (int i = 1; i <= Utils.MAX_DUPLICATION; i++) {
128: number = new Integer(i);
129: aVector.addElement(number);
130: }
131: TKStandardIterator iteratorNum = new TKStandardIterator(
132: aVector, t.getListIterator(), "NUMBERS_LIST",
133: "NUMBER");
134: t.setListIterator(iteratorNum);
135:
136: evt.finishTemplate(t);
137: } catch (Throwable t) {
138: throw WebmanExceptionHandler.getException(t);
139: }
140: }
141:
142: public boolean isHandler(TKEvent evt) {
143: return evt.getName().equalsIgnoreCase("DU_ST_CHOOSE_OPENDIR");
144: }
145:
146: /************************************************************************
147: /**
148: * Baut die Liste der Knoten im linken Frame auf
149: *
150: *
151: * @param
152: */
153: public boolean doCTNodeListMult(TKHTMLTemplate left,
154: TKVector openSCNodes, TKParams params) throws Throwable {
155: String dest = (params.get("PAR", "DESTINATION")) == null ? ""
156: : params.get("PAR", "DESTINATION");
157:
158: TKVector openNodes = new TKVector();
159: if (params.hasMultiple("PAR", "CS_OPEN_NODES")) {
160: openNodes = params.getVector("PAR", "CS_OPEN_NODES");
161: } else {
162: openNodes.put(0, params.get("PAR", "CS_OPEN_NODES"));
163: }
164:
165: TKQuery q;
166: TKDBResult tree = null;
167: TKDBResult branch;
168: int size = openNodes.size();
169: for (int i = 0; i < size; i++) {
170: String id = (String) openNodes.get(i);
171: if (id != null) {
172: q = TKDBManager.newQuery(TKDBContentTreeGetOpen.class);
173: //q = TKDBManager.newQuery( "TKDBContentTreeGetOpenUser" );
174: if (id.equals("-1")) {
175: q.setQueryParams("NODE_ID", TKNull.NULL);
176: //q.setQueryParams( "USER_ID", new Integer(this.userId) );
177: } else {
178: q.setQueryParams("NODE_ID", new Integer(id));
179: //q.setQueryParams( "USER_ID", new Integer(this.userId) );
180: }
181: q.execute();
182: branch = new TKDBResult(q.fetchResultSet());
183: if (tree != null) {
184: tree = TreeUtils.mergeIntoTree(tree, branch,
185: "CONTENT_NODE_ID");
186: } else {
187: tree = branch;
188: }
189: }
190: }
191:
192: // die liste der offenen nodes kommt ins template
193: TKStandardIterator iterator1 = new TKStandardIterator(
194: openNodes, left.getListIterator(), "CT_OPEN_NODES",
195: "CT_OPEN_NODES");
196: left.setListIterator(iterator1);
197:
198: // die Liste der jetzt offenen SiteTree nodes kommt in die ContentTree links
199: TKStandardIterator iteratorCS1 = new TKStandardIterator(
200: openSCNodes, left.getListIterator(), "SC_OPEN_NODES",
201: "SC_OPEN_NODES");
202: left.setListIterator(iteratorCS1);
203:
204: int maxDepth = TreeUtils.getMaxDepth(tree, "CONTENT");
205: TKOpenContentTreeIterator iterator;
206: if (!dest.equals("")) {
207: iterator = new TKOpenContentTreeIterator(tree, left
208: .getListIterator(), "CE_NODE_LIST", Integer
209: .parseInt(dest), maxDepth);
210: } else {
211: left.set("IS_TOP", "1");
212: iterator = new TKOpenContentTreeIterator(tree, left
213: .getListIterator(), "CE_NODE_LIST", maxDepth);
214: }
215: left.setListIterator(iterator);
216:
217: left
218: .set("CT_MAXDEPTH_PLUS_TWO", Integer
219: .toString(maxDepth + 2));
220:
221: return true;
222: }
223:
224: }
|