1 package de.webman.sitetree.eventhandler; 2 3 import com.teamkonzept.web.*; 4 import com.teamkonzept.webman.*; 5 import com.teamkonzept.webman.db.TKWebmanDBManager; 6 import com.teamkonzept.webman.mainint.*; 7 import com.teamkonzept.webman.mainint.db.*; 8 import com.teamkonzept.webman.mainint.db.queries.*; 9 import com.teamkonzept.webman.mainint.events.*; 10 import com.teamkonzept.lib.*; 11 import com.teamkonzept.field.*; 12 import com.teamkonzept.field.db.*; 13 import com.teamkonzept.db.*; 14 import com.teamkonzept.publishing.markups.*; 15 import de.webman.acl.*; 16 17 23 public class STOpenMultDirHandler 24 extends DefaultEventHandler 25 implements ParameterTypes, 26 FrameConstants, 27 DatabaseDefaults 28 { 29 30 33 private static final STOpenMultDirHandler INSTANCE = new STOpenMultDirHandler(); 34 35 38 private STOpenMultDirHandler() 39 { 40 } 42 43 48 public static STOpenMultDirHandler getInstance () 49 { 50 return INSTANCE; 51 } 52 53 59 public void handleEvent (TKEvent event) 60 throws TKException 61 { 62 try 63 { 64 WebManEvent.checkEvent(event.getRemoteUser(), event.getName(), ContextConstants.SITE_TREE); 65 66 TKHTMLTemplate left = event.getPrepHTMLTemplate("st_nodeList.tmpl"); 76 String destination = event.getParameter(PARAMETER, "SITE_NODE_ID"); 77 String openNodeId = event.getParameter(PARAMETER, "NODE_ID"); 78 String closeNodeId = event.getParameter(PARAMETER, "SITE_NODE_PARENT"); 79 80 TKVector openNodes = new TKVector(); 81 82 if (event.getParams().hasMultiple(PARAMETER, "OPEN_NODES")) 83 { 84 openNodes = event.getParams().getVector(PARAMETER, "OPEN_NODES"); 85 } 86 else 87 { 88 openNodes.put(0, event.getParameter(PARAMETER, "OPEN_NODES")); 89 } 90 91 openNodes = TreeUtils.updateOpenNodes(openNodes, openNodeId, closeNodeId, destination, TKDBSiteTreeIsChild.class); 92 93 TKDBResult tree = null; 97 TKDBResult branch = null; 98 TKQuery q = null; 99 int size = openNodes.size(); 100 101 for (int i = 0; i<size ; i++) 102 { 103 String id = (String ) openNodes.get(i); 104 105 if (id != null) 106 { 107 q = TKDBManager.newQuery(TKDBSiteTreeGetOpen.class); 108 109 if (id.equals("-1")) 110 { 111 q.setQueryParams("NODE_ID", TKNull.NULL); 112 } 113 else 114 { 115 q.setQueryParams("NODE_ID", new Integer (id)); 116 } 117 118 q.execute(); 119 branch = new TKDBResult(q.fetchResultSet()); 120 tree = tree == null 121 ? branch 122 : TreeUtils.mergeIntoTree(tree, branch, "SITE_NODE_ID"); 123 } 124 } 125 126 int maxDepth = TreeUtils.getMaxDepth(tree, "SITE"); 127 128 left.setListIterator(new TKOpenSiteTreeIterator(tree, left.getListIterator(), "ST_NODE_LIST", Integer.parseInt(destination), maxDepth)); 129 left.setListIterator(new TKStandardIterator(openNodes, left.getListIterator(), "OPEN_NODES", "OPEN_NODES")); 130 131 left.set("MAXDEPTH_PLUS_ONE", Integer.toString(maxDepth+1)); 132 left.set("MAXDEPTH_PLUS_TWO", Integer.toString(maxDepth+2)); 133 left.set("RTARGET", RIGHT_TARGET); 134 left.set("LTARGET", LEFT_TARGET); 135 136 if (LoginFactory.getInstance() 137 .getLogin(event.getRemoteUser()) 138 .isAllowed(EventFactory.getInstance() 139 .getEvent("DU_START") 140 .getID(), 141 ContextConstants.DUPLICATION_TOOL)) 142 { 143 left.set("DU_START", "1"); 144 } 145 146 if (LoginFactory.getInstance() 147 .getLogin(event.getRemoteUser()) 148 .isAllowed(EventFactory.getInstance() 149 .getEvent("GR_GENERATE") 150 .getID(), 151 ContextConstants.GENERATOR)) 152 { 153 left.set("GR_GENERATE", "1"); 154 } 155 156 WebManEvent.fillEventsIntoTemplate(event.getRemoteUser(), left, SITE_TREE); 157 event.finishTemplate(left); 158 } 159 catch (Throwable e) 160 { 161 throw WebmanExceptionHandler.getException(e); 163 } 164 } 165 166 173 public boolean isHandler (TKEvent event) 174 { 175 return event.getName().equalsIgnoreCase("ST_OPEN_MULTDIR"); 176 } 177 178 } 179 | Popular Tags |