public static List<Criterion> getSelectedCriterions(DefaultMutableTreeNode root) {
    List<Criterion> res = new LinkedList<Criterion>();

    DefaultMutableTreeNode leaf = root.getFirstLeaf();
    do {
      res.add(((DisplayedCriterion) leaf.getUserObject()).getCriterion());
      leaf = leaf.getNextLeaf();
    } while (leaf != null);

    return res;
  }
  /**
   * Obtiene los nodos seleccionados de un jtree creando una hash de Capas/Atributos
   *
   * @param jtreeAtributes
   * @return
   */
  private Map<String, List<String>> getLayersAtributesList(JTree jtreeAtributes) {
    Map<String, List<String>> tablaCapasAtributos = new HashMap<String, List<String>>();
    List<String> listaAtr = null;
    String nombreCapa = null;
    String nombreAtributo = null;
    DefaultTreeModel model = (DefaultTreeModel) jtreeAtributes.getModel();
    DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
    DefaultMutableTreeNode chosen = (DefaultMutableTreeNode) root.getFirstChild();
    DefaultMutableTreeNode leaf = null;
    CheckBoxNode checkNode = null;
    for (int i = 0; i < root.getChildCount(); i++) {
      nombreCapa = chosen.toString();
      leaf = chosen.getFirstLeaf();
      for (int j = 0; j < chosen.getLeafCount(); j++) {
        checkNode = (CheckBoxNode) leaf.getUserObject();
        nombreAtributo = checkNode.getText();
        // testeamos si el atributo está seleccionado
        if (checkNode.isSelected()) {
          if (tablaCapasAtributos.containsKey(nombreCapa)) {
            listaAtr = tablaCapasAtributos.get(nombreCapa);
          } else {
            listaAtr = new ArrayList<String>();
          }
          listaAtr.add(nombreAtributo);
          tablaCapasAtributos.put(nombreCapa, listaAtr);
        }
        leaf = leaf.getNextLeaf();
      }
      // si no hay ningun atributo seleccionado guardamos unicamente la capa
      if (!tablaCapasAtributos.containsKey(nombreCapa)) {
        tablaCapasAtributos.put(nombreCapa, null);
      }
      chosen = chosen.getNextSibling();
    }

    return tablaCapasAtributos;
  }