Как найти размер узла jcr, включая его дочерние узлы?

Я использую Jackrabbit 2.8.0 и JCR 2.0, я разрабатываю проект для организации, чтобы ее пользователи могли хранить свои документы и каталоги в цифровом формате, используя свою учетную запись пользователя. Я хочу дать ограничение размера квоты для всех пользователей. Для отслеживания размера я пытаюсь получить размер любого узла JCR, включая его дочерние узлы. Любая помощь будет очень полезна. заранее спасибо

//jcr session after login to repository with user credentials            
Session jcrsession = sessions.getSession();
Node root = jcrsession.getRootNode();

//added a file type node to root            
file = root.addNode(fileName, Config.EDMS_DOCUMENT);
file.setProperty(Config.EDMS_SIZE, filesize);
InputStream isss= new ByteArrayInputStream(decodedBaseData);
Binary myBinary = valueFactory.createBinary(isss);
file.addMixin("mix:referenceable");

//added a node which will contain binary file           
Node resNode = file.addNode(Config.EDMS_CONTENT,"edms:resource");
    try {
          //added binary data to node
          resNode.setProperty("jcr:data",myBinary);
        } catch (IOException e) {
                e.printStackTrace();
        }finally{
                myBinary.dispose();
                isss.close();
        }
jcrsession.save();

это то, как я добавляю узлы типа документа, и теперь я хочу получить размер (в килобайтах) узла, который может иметь несколько дочерних узлов типа папок или файлов.

1 ответ

JCR Property.getLength() Метод указан в [1], чтобы вернуть длину двоичного свойства в байтах, так что если у вас есть resNode как указано выше, resNode.getProperty("jcr:data").getLength() должен вернуть двоичный размер.

Затем вы можете ходить по дереву с Node.getNodes() рекурсивно вычислить общий размер.

Обратите внимание, что getLength() может вернуть -1, если реализация не может определить длину, поэтому вам придется проверить наличие возможных ограничений в используемой реализации JCR и реализации хранилища файлов.

[1] https://www.day.com/maven/jsr170/javadocs/jcr-2.0/javax/jcr/Property.html

Другие вопросы по тегам