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}