1 package de.webman.acl.eventhandler; 2 3 import com.teamkonzept.web.*; 4 import com.teamkonzept.webman.*; 5 import com.teamkonzept.webman.mainint.*; 6 import com.teamkonzept.webman.mainint.db.queries.*; 7 import de.webman.acl.*; 8 import com.teamkonzept.webman.mainint.events.*; 9 import com.teamkonzept.lib.*; 10 import com.teamkonzept.db.*; 11 12 24 public class ACCEOpenMultDirEventHandler extends DefaultEventHandler implements ParameterTypes, FrameConstants 25 { 26 private ACCEOpenMultDirEventHandler() 27 {} 28 29 private static ACCEOpenMultDirEventHandler instance = new ACCEOpenMultDirEventHandler(); 30 31 public static ACCEOpenMultDirEventHandler getInstance() 32 { 33 return instance; 34 } 35 36 public void handleEvent(TKEvent evt) throws TKException 37 { 38 try 39 { 40 WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(), ContextConstants.ACCESS_CONTROL); 41 42 TKHTMLTemplate left = evt.getPrepHTMLTemplate( "ac_ce_nodeList.tmpl" ); 46 String dest = evt.getParameter( PARAMETER, "CONTENT_NODE_ID" ); 47 String openNodeId = evt.getParameter( PARAMETER, "NODE_ID" ); 48 String closeNodeId = evt.getParameter( PARAMETER, "CONTENT_NODE_PARENT" ); 49 50 String uId = evt.getParameter( PARAMETER, "LOGIN_ID"); 51 if (uId != null && uId.length() > 0) 52 { 53 left.set("LOGIN_ID", uId); 54 Login login=LoginFactory.getInstance().getLogin(new Integer (uId)); 55 if (login != null) 56 { 57 left.set("LOGIN_NAME", login.getName()); 58 } 59 } 60 61 TKVector openNodes = new TKVector(); 62 if( evt.getParams().hasMultiple( PARAMETER, "OPEN_NODES" ) ) { 63 openNodes = evt.getParams().getVector( PARAMETER, "OPEN_NODES" ); 64 } 65 else { 66 openNodes.put( 0, evt.getParameter( PARAMETER, "OPEN_NODES" ) ); 67 } 68 openNodes = TreeUtils.updateOpenNodes( openNodes, openNodeId, closeNodeId, dest, TKDBContentTreeIsChild.class ); 69 70 TKDBResult tree = null; 74 TKDBResult branch; 75 TKQuery q; 76 int size = openNodes.size(); 77 for( int i = 0; i<size ; i++ ) { 78 String id = (String ) openNodes.get( i ); 79 if( id!=null ) { 80 q = TKDBManager.newQuery(TKDBContentTreeGetOpen.class); 81 if( id.equals( "-1" ) ) { 82 q.setQueryParams( "NODE_ID", TKNull.NULL ); 83 } 84 else { 85 q.setQueryParams( "NODE_ID", new Integer (id) ); 86 } 87 q.execute(); 88 branch = new TKDBResult( q.fetchResultSet() ); 89 if( tree != null ) { 90 tree = TreeUtils.mergeIntoTree( tree, branch, "CONTENT_NODE_ID" ); 91 } 92 else { 93 tree = branch; 94 } 95 } 96 } 97 98 TKStandardIterator iterator1 = new TKStandardIterator( openNodes, left.getListIterator(), "OPEN_NODES", "OPEN_NODES" ); 100 left.setListIterator( iterator1 ); 101 102 int maxDepth = TreeUtils.getMaxDepth( tree, "CONTENT" ); 103 TKOpenContentTreeIterator iterator2 = new TKOpenContentTreeIterator( tree, left.getListIterator(), "CE_NODE_LIST", Integer.parseInt( dest ), maxDepth ); 104 left.setListIterator( iterator2 ); 105 106 left.set( "MAXDEPTH_PLUS_ONE", Integer.toString(maxDepth+1)); 107 left.set( "MAXDEPTH_PLUS_TWO", Integer.toString(maxDepth+2)); 108 109 left.set( "RTARGET", RIGHT_TARGET ); 110 left.set( "LTARGET", LEFT_TARGET ); 111 WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), left, ACCESS_CONTROL); 112 evt.finishTemplate(left); 113 } 114 catch (Throwable e) 115 { 116 throw WebmanExceptionHandler.getException(e); 118 } 119 } 120 121 public boolean isHandler(TKEvent evt) 122 { 123 return evt.getName().equalsIgnoreCase("AC_CE_OPEN_MULTDIR"); 124 } 125 } 126 | Popular Tags |