private void createTagXML(Element element, TreeItemDecorator<TagEntity> tag) {
   Element tagElement = element.addElement("tag");
   tagElement.addElement("name").setText(tag.getEntity().getName());
   String title = tag.getEntity().getTitle();
   if (StringUtils.isEmpty(title)) {
     title = tag.getEntity().getName();
   }
   tagElement.addElement("title").setText(title);
   for (TreeItemDecorator<TagEntity> child : tag.getChildren()) {
     createTagXML(tagElement, child);
   }
 }
 private List<TreeItemDecorator<TagEntity>> getTagTreeRoots() {
   List<TagEntity> tags = getDao().getTagDao().select();
   Map<Long, TreeItemDecorator<TagEntity>> buf = new HashMap<Long, TreeItemDecorator<TagEntity>>();
   for (TagEntity tag : tags) {
     buf.put(tag.getId(), new TreeItemDecorator<TagEntity>(tag, null));
   }
   List<TreeItemDecorator<TagEntity>> roots = new ArrayList<TreeItemDecorator<TagEntity>>();
   for (Long id : buf.keySet()) {
     TreeItemDecorator<TagEntity> tag = buf.get(id);
     if (tag.getEntity().getParent() == null) {
       roots.add(tag);
     } else {
       TreeItemDecorator<TagEntity> parent = buf.get(tag.getEntity().getParent());
       if (parent != null) {
         parent.getChildren().add(tag);
         tag.setParent(parent);
       }
     }
   }
   return roots;
 }