/**
* Copyright (c) 2004-2011 Wang Jinbao(Julian Wong), http://www.ralasafe.com
* Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
*/
package org.ralasafe.servlet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.ralasafe.EntityExistException;
import org.ralasafe.group.Node;
import org.ralasafe.privilege.Privilege;
import org.ralasafe.util.StringUtil;
public abstract class AbstractTreeHandler {
public static final String DEFAULT_TREE_MAIN_PAGE="/ralasafe/common/treeTemplate.jsp";
public static final String DEFAULT_COPY_PAGE="/ralasafe/common/copyNode.jsp";
private String treeUrl=DEFAULT_TREE_MAIN_PAGE;
public abstract String getPageTitle();
public abstract String getCreatePage();
public String getTreePage() {
return treeUrl;
}
public void setTreePage( String treeJsp ) {
this.treeUrl=treeJsp;
}
public abstract String getNodeName( Node node );
public abstract Collection getAllNodes();
public String getTree() {
StringBuffer buff=new StringBuffer();
buff.append( "[" );
Collection coll=getAllNodes();
List list=new ArrayList();
list.addAll( coll );
if( getTreeType().equals( "privilege" ) ) {
Collections.sort( list, new Comparator() {
public int compare( Object arg0, Object arg1 ) {
Privilege n0=(Privilege) arg0;
Privilege n1=(Privilege) arg1;
return n0.getOrderNum()-n1.getOrderNum();
}
});
}
int i=0;
for( Iterator iter=list.iterator(); iter.hasNext(); ) {
Node node=(Node ) iter.next();
if( i>0 ) {
buff.append( ",\r\n" );
}
buff.append( "{id:'" )
.append( node.getId() )
.append( "',name:\"" )
.append( getNodeName( node ) )
.append( "\",pId:'" )
.append( node.getPid() )
.append( "'" )
.append( ",isLeaf:'" )
.append( node.getIsLeaf()?"1":"0" )
.append( "'" )
.append( node.getIsLeaf()?"":",type:'group',iconSkin:'group'" )
.append( "}");
i++;
}
buff.append( "]" );
return buff.toString();
}
public abstract Node getNode( HttpServletRequest req );
public abstract Node getNode( String name );
public abstract void addNode( Object node ) throws EntityExistException;
public int getId( HttpServletRequest req ) {
// id values are n0, n1...
String strId=req.getParameter( "id" );
if( StringUtil.isEmpty( strId ) ) {
return 0;
} else {
return Integer.parseInt( strId.substring( 1 ) );
}
}
public abstract void deleteNode( int id );
public abstract void updateNode( Object node ) throws EntityExistException;
public int getPosition( HttpServletRequest req ) {
return WebUtil.getIntParameter( req, "position", 0 );
}
public int getParentId( HttpServletRequest req ) {
// parentId values are n0, n1...
String strId=req.getParameter( "parentId" );
if( StringUtil.isEmpty( strId ) ) {
return 0;
} else {
return Integer.parseInt( strId.substring( 1 ) );
}
}
public abstract void moveNode( int parentId, int id, int position );
public abstract String getContextMenuPage();
public abstract Node getNode( int id );
public abstract String getModifyPage();
public abstract String getTreeType();
public void movePrivilege(HttpServletRequest req){}
public String getCopyPage() {
return DEFAULT_COPY_PAGE;
}
public abstract void copyNode( Object node ) throws EntityExistException;
}