treeのjsonの生成方法


詳細
この間、仕事で木を使う必要がありました.この点は、フロントでextでよく実現しましたが、このtreeのstoreのこのjsonはバックグラウンドでスペルを書くのに少し頭がかかりました.以下にまとめてみると、使いやすい方法を見つけました.
△ああ、親たち、これらのコードでは、データは異なるデータソースから得られるので、コードにはデータソースを切り替えるコードが体現されています.データソースを切り替える必要がなければ、これをする必要はありません.sqlの構成とリストに戻るだけでいいです.
sql:

public List FindComboTreeDataBySubjectId(String subjectId, List paramList,List constantValue) {
		//         
		String pmsSql = reportPermissionService.getPmsSql(constantValue);
		Subject pmsSubject = reportPermissionService.getPmsSubject();
		
		Subject subject = this.subjectDomainService.getSubject(subjectId);
		if(subject==null||"".equals(subject)){
			return new ArrayList();
		}
		
		String subTable = subject.getSubTable();
		String ds = subject.getDataSource().toString();
		//          
		HotSwappableTargetSource swapper = (HotSwappableTargetSource)app.getBean("swappableDataSource");
		DataSource dataSource = (DataSource)app.getBean(ds);
		swapper.swap(dataSource);
		//      
		List result = new ArrayList();	
		String sql = "SELECT ID AS COMPANYID, ID,PID,NAME,NODETYPE,YEARMONTH FROM "+subTable+" WHERE 1=1 ";
		if(pmsSubject !=null && pmsSubject.getDataSource().toString().equals(ds) && pmsSql !=""){
			sql = "SELECT T.ID AS COMPANYID,T.ID,T.PID,T.NAME,T.NODETYPE,T.YEARMONTH, DECODE(PMS.ID,NULL,0,1) AS PERMIS FROM "+subTable + " T LEFT JOIN" + pmsSql + " ON T.ID = PMS.ID WHERE 1=1 ";
		}
		
		if(paramList != null){
			Iterator paramItem = paramList.iterator();
			while(paramItem.hasNext()){
				String param = paramItem.next().toString();
				if(!"".equals(param)||param!="")
					sql +=" and "+param+" ";
			}
		}
		sql = "SELECT T.*,LEVEL FROM ("+ sql + ")T start with t.pid is null connect by prior t.id = t.PID order by level,T.NAME desc";
		SQLQuery query = getSession().createSQLQuery(sql);
		List list = query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
		return list;

	}

json

public String FindTreeDataBySubjectId(String subjectId,List paramList,List constantValue){
		List list=componentDataDomainService.FindComboTreeDataBySubjectId(subjectId, paramList,constantValue);
		String treeString=getChildren(list,"");
		if("".equals(treeString)||treeString==""){
			treeString="";
		}else{
			treeString=treeString.replace("children:[,", "children:[");
			treeString=treeString.substring(1, treeString.length());//       
		}
		treeString="{companyId:'0',id:'0',text:' ',expanded:'true',children:["+treeString+"]}";
		return treeString;
	}
	/**
	 *      ,        
	 * @param list     
	 * @param pId    
	 * @return  :D  :D  :D  :D 
	 * @DATE:2012-8-31 @TIME:   14:20:58
	 */
	@SuppressWarnings("rawtypes")
	private String getChildren(List list,String pId){
		StringBuffer treeStore = new StringBuffer();
		for(int i=0;i