Flex tree xml 데이터 원본


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                layout="absolute"
                verticalAlign="middle"
                backgroundColor="white" creationComplete="init();">
    <mx:Script>
        <![CDATA[
        import hessian.service.FlexTestService;
        import mx.collections.ICollectionView;
        import mx.collections.XMLListCollection;
        import mx.controls.Alert;
        import mx.controls.Tree;
        import mx.events.ListEvent;
        import mx.rpc.events.ResultEvent;
        import mx.managers.PopUpManager;

        var noteId:String;

        //          tree
        private function init():void {
            getTree();
        }
        //  tree item click  
        private function tree_itemClick(evt:ListEvent):void {
            var item:Object = Tree(evt.currentTarget).selectedItem;
            if (tree.dataDescriptor.isBranch(item)) {
                tree.expandItem(item, !tree.isItemOpen(item), true);
            }
        }
        //tree item       (     )
        private function tree_labelFunc(item:XML):String {
            var children:ICollectionView;
            var suffix:String = "";
            if (tree.dataDescriptor.isBranch(item)) {
                children = tree.dataDescriptor.getChildren(item);
                suffix = " (" + children.length + ")";
            }
            return item[tree.labelField] + suffix;
        }

        [Bindable]
        public var selectedNode:XML;
        // tree  change      
        public function treeChanged(event:Event):void {
            //         xml,  selectedNode,as     
            selectedNode = Tree(event.target).selectedItem as XML;
            noteId = selectedNode.@sid;
        }
        //  tree   
        public function getTree():void {
            //  service         
            var service:FlexTestService = new FlexTestService(result);
            service.getTree();
        }

        var returnString:String;
        var treeDate:XML

        //    
        public function result(data:Object):void {
            //java         String  
            returnString = data as String;
            //  returnString    xml,      
            treeDate = new XML(returnString);
            //    xml     tree 
            tree.dataProvider = treeDate;
        }
        //      
        public function delNote():void {
            var service:FlexTestService = new FlexTestService(result);
            service.delNote(noteId);
        }
        //      
        public function addNote():void {
            var service:FlexTestService = new FlexTestService(result);
            service.addNote(noteId, nodeName.text);
        }
        //     
        public function updateNote():void {
            var service:FlexTestService = new FlexTestService(result);
            service.updateNote(noteId, nodeName.text);
        }
        ]]>
    </mx:Script>

    <mx:Tree id="tree"
             showRoot="false"
             labelField="@label"
             labelFunction="tree_labelFunc"
             width="258"
             rowCount="6"
             itemClick="tree_itemClick(event);" x="301" y="205" height="208" change="treeChanged(event);"/>
    <mx:Button width="98" height="31" click="addNote();" x="374" y="440" label="  " fontSize="16"/>
    <mx:Button width="98" height="31" click="updateNote();" x="374" y="482" label="  " fontSize="16"/>
    <mx:Button width="98" height="31" click="delNote();" x="374" y="521" label="  " fontSize="16"/>
    <mx:TextArea text="      : {selectedNode.@label}" x="576" y="207" height="206" width="261"/>
    <mx:Text x="576" y="482" text="    " fontSize="14" fontWeight="bold"/>
    <mx:TextInput id="nodeName" x="660" y="479" fontSize="16"/>
</mx:Application>



package hessian.service {
import mx.rpc.AsyncToken;
import mx.controls.Alert;

import hessian.client.HessianService;


public class FlexTestService extends BaseService {

    private static var _userService : HessianService;

    //  java   ,        java        
    protected static function getFlexTestService():HessianService {
        if (!_userService) {
            _userService = new HessianService("http://localhost/remoting/testService");
        }
        return _userService;
    }

    public function FlexTestService(resultCallback:Function = null, faultCallback:Function = null) {
        super(resultCallback, faultCallback);
    }

    //  tree  
    public function getTree():void {
        var token:AsyncToken = getFlexTestService().getTree.send();
        token.addResponder(this);
    }
    //    
    public function addNote(sid:String, name:String):void {
        var token:AsyncToken = getFlexTestService().addNode.send(sid, name);
        token.addResponder(this);
    }
    //    
    public function delNote(sid:String):void {
        var token:AsyncToken = getFlexTestService().delNode.send(sid);
        token.addResponder(this);
    }
    //    
    public function updateNote(sid:String, name:String):void {
        var token:AsyncToken = getFlexTestService().updateNode.send(sid, name);
        token.addResponder(this);
    }
  }
}


package net.shopin.api;

import net.shopin.view.CatalogVO;

import java.util.List;

public interface TestService {
    /**
     *       
     * @return
     */
    String getTree();
    /**
     *     
     * @return
     */
    String addNode(String sid,String name);
    /**
     *     
     * @return
     */
    String delNode(String sid);
    /**
     *     
     * @return
     */
    String updateNode(String sid,String name);
}



package net.shopin.business;

import com.shopin.modules.orm.hibernate.SimpleHibernateDao;
import com.shopin.modules.utils.DozerMapper;
import java.util.List;
import java.util.ArrayList;
import net.shopin.entity.Catalog;
import net.shopin.entity.ProductList;
import net.shopin.api.TestService;
import net.shopin.view.CatalogVO;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;
import org.hibernate.SessionFactory;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.apache.commons.lang.ObjectUtils;

@Transactional
@Component("testService")
public class TestServiceImpl implements TestService {
    private SimpleHibernateDao<Catalog, Long> testDao;
    @Autowired
    public void setSessionFactory(SessionFactory sessionFactory) {
        testDao = new SimpleHibernateDao<Catalog, Long>(sessionFactory, Catalog.class);
    }

    @Transactional(readOnly = true)
    public String getTree() {
        Catalog catalog = testDao.findByUnique("sid", Long.parseLong("1"));
        Criteria criteria = testDao.createCriteria();
        criteria.add(Restrictions.eq("fatherNodeId", catalog));
        List<Catalog> list = criteria.list();
        String tree = listToxml(list);
        return tree;
    }

    private List<Catalog> getSonNode(String sid) {
//        System.out.println("--------getSonNode-----------");
        String hql = "from Catalog as o where o.fatherNodeId = ? ";
        Catalog catalog = testDao.findByUnique("sid", Long.parseLong(sid));
        List<Catalog> list = testDao.find(hql, catalog);
        return list;
    }

    // list     XML
    private String listToxml(List flist) {
        ArrayList list = (ArrayList) flist;
        String treedata = "<treeRoot>
"; treedata = CreateXmlNode(list, 1L, treedata); treedata = treedata + "</treeRoot>
"; // System.out.println(treedata); return treedata; } /** * list to Xml */ private String CreateXmlNode(List<Catalog> list, Long nodepid, String cratedata) { for (int a = 0; a < list.size(); a++) { Catalog fsort = (Catalog) list.get(a); if ((fsort.getFatherNodeId().getSid().toString()).equals(nodepid.toString())) { List<Catalog> lists = getSonNode(fsort.getSid().toString()); if (lists.size() > 0) { cratedata = cratedata + "<second label=\"" + fsort.getFatherNodeId().getNodeName() + "-" + fsort.getNodeName() + "\" sid=\"" + fsort.getSid() + "\">
"; cratedata = CreateXmlNode(lists, fsort.getSid(), cratedata); cratedata = cratedata + "</second>
"; } else { cratedata = cratedata + "<third label=\"" + fsort.getFatherNodeId().getNodeName() + "-" + fsort.getNodeName() + "\" sid=\"" + fsort.getSid() + "\"/>
"; } } } return cratedata; } public String addNode(String sid, String name) { Catalog catalog = testDao.findByUnique("sid", Long.parseLong(sid)); Catalog newCatalog = new Catalog(); newCatalog.setNodeName(name); newCatalog.setFatherNodeId(catalog); testDao.save(newCatalog); String data = getTree(); return data; } public String delNode(String sid) { if (getSonNode(sid).size() > 0) { System.out.println(" "); } else { String hql = "from Catalog as o where o.sid = ? "; Catalog catalog = testDao.findByUnique("sid", Long.parseLong(sid)); testDao.delete(catalog); } String data = getTree(); return data; } public String updateNode(String sid, String name) { String hql = "from Catalog as o where o.sid = ? "; Catalog catalog = testDao.findByUnique("sid", Long.parseLong(sid)); catalog.setNodeName(name); testDao.save(catalog); String data = getTree(); return data; } }

좋은 웹페이지 즐겨찾기