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.core.api.CoreSession; 008import org.nuxeo.ecm.core.api.DocumentModel; 009import org.nuxeo.ecm.core.api.DocumentRef; 010import org.nuxeo.ecm.quota.size.QuotaAware; 011import org.nuxeo.ecm.quota.size.QuotaAwareDocumentFactory; 012 013@Operation(id = SetQuotaInfoOperation.ID, category = "Quotas", label = "Set max Quota size for the target DocumentModel", description = "Set the maximum size of the target DocumentModel, use -1 to make Quota checks innative") 014public class SetQuotaInfoOperation { 015 016 public static final String ID = "Quotas.SetMaxSize"; 017 018 @Context 019 protected CoreSession session; 020 021 @Param(name = "targetSize", required = true) 022 protected Long targetSize; 023 024 @Param(name = "documentRef", required = false) 025 protected DocumentRef documentRef; 026 027 @OperationMethod() 028 public Long run(DocumentModel doc) { 029 QuotaAware qa = doc.getAdapter(QuotaAware.class); 030 if (qa == null) { 031 qa = QuotaAwareDocumentFactory.make(doc, false); 032 } 033 qa.setMaxQuota(targetSize, true); 034 return qa.getMaxQuota(); 035 } 036 037 @OperationMethod() 038 public Long run(DocumentRef docRef) { 039 return run(session.getDocument(docRef)); 040 } 041 042 @OperationMethod() 043 public Long run() { 044 return run(documentRef); 045 } 046 047}