001package org.nuxeo.ecm.quota.automation;
002
003import org.nuxeo.ecm.automation.core.annotations.Context;
004import org.nuxeo.ecm.automation.core.annotations.Operation;
005import org.nuxeo.ecm.automation.core.annotations.OperationMethod;
006import org.nuxeo.ecm.automation.core.annotations.Param;
007import org.nuxeo.ecm.automation.jaxrs.JsonAdapter;
008import org.nuxeo.ecm.core.api.CoreSession;
009import org.nuxeo.ecm.core.api.DocumentModel;
010import org.nuxeo.ecm.core.api.DocumentRef;
011import org.nuxeo.ecm.quota.size.QuotaAware;
012
013@Operation(id = GetQuotaInfoOperation.ID, category = "Quotas", label = "Get Quota info", description = "Returns the Quota Infos (innerSize, totalSize and maxQuota) for a DocumentModel")
014public class GetQuotaInfoOperation {
015
016    public static final String ID = "Quotas.GetInfo";
017
018    @Context
019    protected CoreSession session;
020
021    @Param(name = "documentRef", required = false)
022    protected DocumentRef documentRef;
023
024    @OperationMethod()
025    public JsonAdapter run(DocumentModel doc) {
026        QuotaAware qa = doc.getAdapter(QuotaAware.class);
027        if (qa == null) {
028            return new TestableJsonAdapter(new SimpleQuotaInfo());
029        } else {
030            return new TestableJsonAdapter(new SimpleQuotaInfo(qa.getQuotaInfo()));
031        }
032    }
033
034    @OperationMethod()
035    public JsonAdapter run(DocumentRef docRef) {
036        return run(session.getDocument(docRef));
037    }
038
039    @OperationMethod()
040    public JsonAdapter run() {
041        return run(documentRef);
042    }
043
044}