java 将数据字典(父子结构)绑定成List集合(第二种写法)

public void test(){
           AbstractDMO theDMO = (AbstractDMO)DMOProxy.getDMO(AbstractDMO.class);
            EntityStateDMO stateDMO = (EntityStateDMO)DMOProxy.getDMO(EntityStateDMO.class);
            AbstractDMO otherDMO = (AbstractDMO)this.syncer.getDMO(AbstractDMO.class);
            List<Department> equips = theDMO.getObjects("FROM Department");
            List<Department> otherEquips = otherDMO.getObjects("FROM Department");
            List<Department> tops = new ArrayList();
            Map cache = new HashMap();
            for (Department department : equips) {
                //为原数据库的每一个Department,创建一个集合,以department为key,new ArrayList()为value以用来存子集
              cache.put(department, new ArrayList());
            }
            Iterator it = cache.entrySet().iterator();
            while (it.hasNext()) {
              Map.Entry entry = (Map.Entry)it.next();
              //得到key
              Department obj = (Department)entry.getKey();
              if (obj.getParent() != null) {
                  //如果父不为空的话,根据父来得到子集
                List list = (List)cache.get(obj.getParent());
                System.out.println("obj=="+obj.getName()+"\t"+obj.getParent().getName());
               list.add(obj);
              } else {
                tops.add(obj);
              }
            }
            System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4");
            for (Object entry : cache.keySet()) {
                System.out.println("key"+"\t"+entry+"\t value"+cache.get(entry));
            }

            List children;
            for (int i = 0; i < tops.size(); i++) {
              children = (List)cache.get(tops.get(i));
              if (children.size() > 0) {
                tops.addAll(children);
              }
            }
            //此时已将数据库当中的数据导成集合了!
           System.out.println("正在同步【单位信息】...");
            try {
              syncer.beginTransaction();
              for (Department depart : tops) {
                if (!otherEquips.contains(depart)) {
                  otherDMO.addObject(depart);
                }
                stateDMO.saveEntityState(depart, -2147483648);
              }
              syncer.endTransaction();
              System.out.println("【单位信息】同步完成.");
            } catch (Exception es) {
              syncer.rollback();
              log.error(es);
              System.out.println("同步【单位信息】出现异常,详情请查看日志!");
            }
    }
发布了8 篇原创文章 · 获赞 3 · 访问量 3795

猜你喜欢

转载自blog.csdn.net/u014298444/article/details/77930253