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}