java output a tree for a format
I want to use java to output a tree for JQuery Dynatree, but failed.

    public class Category {
    	String name;
    	
    	Category parentCategory;
    
    	public Category(String name, Category parentCategory) {
    		super();
    		this.name = name;
    		this.parentCategory = parentCategory;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public Category getParentCategory() {
    		return parentCategory;
    	}
    
    	public void setParentCategory(Category parentCategory) {
    		this.parentCategory = parentCategory;
    	}
    }

Main class

    import java.util.ArrayList;
    import java.util.List;
    
    public class Main {
    
    	static Category root;
    	static Category category1;
    	static Category category11;
    	static Category category12;
    	static Category category2;
    	static Category category21;
    	static Category category22;
    	
    	static Category category3;
    	
    	public static void main(String[] args) {
    		 root = new Category("root", null);
    		
    		 category1 = new Category("c1", root);
    		 category11 = new Category("c11", category1);
    		 category12 = new Category("c12", category1);
    		
    		 category2 = new Category("c2", root);
    		 category21 = new Category("c21", category2);
    		 category22 = new Category("c22", category2);	
    		 
    		 category3 = new Category("c3", root);
    		 
    		 print(root);
    	}
    	
    	public static void print(Category category){	
    		List<Category> childList = getChild(category);
    		
    		if(category.getParentCategory() == null){ //root
    			System.out.println("{title:"+category.getName()+",key:"+category.getName()+",");
    		}
    		else {
    			//if(childList.size()==0){
    			//	System.out.println("{title:"+category.getName()+",key:"+category.getName()+",");
    			//}
    		//	else {
    				System.out.println("children:[{title:"+category.getName()+",key:"+category.getName()+",");
    		//	}			
    		}			
    		
    		if(childList.size()==0) return;
    		for(Category child : childList){
    			print(child);
    		}	
    		System.out.println("}]");
    		System.out.println("}");
    	}
    	
    	public static List<Category> getChild(Category category){
    		List<Category> childList = new ArrayList<Category>();
    		if("root".equals(category.getName())){
    			childList.add(category1);
    			childList.add(category2);
    			childList.add(category3);
    			
    			return childList;
    		}
    		
    		if("c1".equals(category.getName())){
    			childList.add(category11);
    			childList.add(category12);
    			
    			return childList;			
    		}
    		
    		if("c2".equals(category.getName())){
    			childList.add(category21);
    			childList.add(category22);
    			
    			return childList;			
    		}
    		
    		return childList;// empty
    		
    	}
    
    }


my output is not correct, it should be this:

     {title: "root", key: "root", 
          children: [
            {title: "c1", activate: true,
              children: [
                {title: "c11", key: "c11" },
                {title: "c12", key: "c12" }
              ]
            },
            {title: "c2", select: true,
              children: [
                {title: "c21", key: "c21" },
                {title: "c22", key: "c22" }
              ]
            },
            {title: "c3", hideCheckbox: true }       
          ]
        }

My code has bug, how to fix it ? or using this design, is it possible to get this result ?

Thanks
java output a tree for a format
===

I want to use java to output a tree for JQuery Dynatree, but failed.

    public class Category {
    	String name;
    	
    	Category parentCategory;
    
    	public Category(String name, Category parentCategory) {
    		super();
    		this.name = name;
    		this.parentCategory = parentCategory;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public Category getParentCategory() {
    		return parentCategory;
    	}
    
    	public void setParentCategory(Category parentCategory) {
    		this.parentCategory = parentCategory;
    	}
    }

Main class

    import java.util.ArrayList;
    import java.util.List;
    
    public class Main {
    
    	static Category root;
    	static Category category1;
    	static Category category11;
    	static Category category12;
    	static Category category2;
    	static Category category21;
    	static Category category22;
    	
    	static Category category3;
    	
    	public static void main(String[] args) {
    		 root = new Category("root", null);
    		
    		 category1 = new Category("c1", root);
    		 category11 = new Category("c11", category1);
    		 category12 = new Category("c12", category1);
    		
    		 category2 = new Category("c2", root);
    		 category21 = new Category("c21", category2);
    		 category22 = new Category("c22", category2);	
    		 
    		 category3 = new Category("c3", root);
    		 
    		 print(root);
    	}
    	
    	public static void print(Category category){	
    		List<Category> childList = getChild(category);
    		
    		if(category.getParentCategory() == null){ //root
    			System.out.println("{title:"+category.getName()+",key:"+category.getName()+",");
    		}
    		else {
    			//if(childList.size()==0){
    			//	System.out.println("{title:"+category.getName()+",key:"+category.getName()+",");
    			//}
    		//	else {
    				System.out.println("children:[{title:"+category.getName()+",key:"+category.getName()+",");
    		//	}			
    		}			
    		
    		if(childList.size()==0) return;
    		for(Category child : childList){
    			print(child);
    		}	
    		System.out.println("}]");
    		System.out.println("}");
    	}
    	
    	public static List<Category> getChild(Category category){
    		List<Category> childList = new ArrayList<Category>();
    		if("root".equals(category.getName())){
    			childList.add(category1);
    			childList.add(category2);
    			childList.add(category3);
    			
    			return childList;
    		}
    		
    		if("c1".equals(category.getName())){
    			childList.add(category11);
    			childList.add(category12);
    			
    			return childList;			
    		}
    		
    		if("c2".equals(category.getName())){
    			childList.add(category21);
    			childList.add(category22);
    			
    			return childList;			
    		}
    		
    		return childList;// empty
    		
    	}
    
    }


my output is not correct, it should be this:

     {title: "root", key: "root", 
          children: [
            {title: "c1", activate: true,
              children: [
                {title: "c11", key: "c11" },
                {title: "c12", key: "c12" }
              ]
            },
            {title: "c2", select: true,
              children: [
                {title: "c21", key: "c21" },
                {title: "c22", key: "c22" }
              ]
            },
            {title: "c3", hideCheckbox: true }       
          ]
        }

My code has bug, how to fix it ? or using this design, is it possible to get this result ?

Thanks