Script - Contar todas las subcarpetas hijas
Cuenta todas las carpetas hijas y subcarpetas de forma recursiva dentro de la carpeta de primer nivel (carpetas hijas de okm:root).
import java.util.ArrayList;import java.util.List;
import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;
import com.openkm.api.OKMFolder;import com.openkm.bean.Folder;import com.openkm.util.ContextWrapper;
class Util {
public int childCount(String uuid) { String qsUUIDList = "select uuid from NodeFolder nf where nf.parent=:parent"; Session session = null; Transaction tx = null; int value = 0; List uuidList = new ArrayList();
try { SessionFactory sessionFactory = ContextWrapper.getContext().getBean(SessionFactory.class);
session = sessionFactory.openSession(); tx = session.beginTransaction(); Query q = session.createQuery(qsUUIDList).setCacheable(true); q.setString("parent", uuid); uuidList = q.list(); tx.commit(); value = uuidList.size(); print(value);
} catch (HibernateException e) { tx.rollback(); } finally { session.close(); }
for (Object childUuid : uuidList) { value = value + childCount((String) childUuid); } return value; }}
OKMFolder okmFolder = ContextWrapper.getContext().getBean(OKMFolder.class);Util util = new Util();// /okm:root = 151f3a54-f370-47d6-801a-d20faecec180for (Folder fld : okmFolder.getChildren(null, "151f3a54-f370-47d6-801a-d20faecec180")) { print(fld.getPath() + "->" + util.childCount(fld.getUuid()) + "<br/>");}