Script - Recursive repository traversal

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.openkm.api.OKMDocument;
import com.openkm.api.OKMFolder;
import com.openkm.api.OKMRepository;
import com.openkm.bean.Document;
import com.openkm.bean.Folder;
import com.openkm.util.ContextWrapper;
 
Logger log = LoggerFactory.getLogger("com.openkm.scripting");
int MAX_DEPTH = Integer.MAX_VALUE;
 
void nodeTask(String uuid, int depth) throws Exception {
    OKMFolder okmFolder = ContextWrapper.getContext().getBean(OKMFolder.class);
    OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class);

    for (Document doc : okmDocument.getChildren(null, uuid)) {
        log.info("Document: {}", doc.getPath());
        print("Document: " + doc.getPath() + "<br>");
    }

    for (Folder fld : okmFolder.getChildren(null, uuid)) {
        log.info("Folder: {}", fld.getPath());
        print("Document: " + fld.getPath() + "<br>");

        if (depth < MAX_DEPTH) {
            nodeTask(fld.getUuid(), depth + 1);
        }
    }
}
 
log.info("***** Process BEGIN *****");
try {
    OKMRepository okmRepository = ContextWrapper.getContext().getBean(OKMRepository.class);
    String fldPath = "/okm:root";
    String fldUuid = okmRepository.getNodeUuid(null, fldPath);
    nodeTask(fldUuid, 0);
} catch (Exception e) {
    print(e.getMessage());
}
log.info("***** Process END *****");

 

Table of contents [ Hide Show ]