001/*
002 * (C) Copyright 2016 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 *
016 * Contributors:
017 *     Thibaud Arguillere
018 *     Ricardo Dias
019 */
020
021package org.nuxeo.ecm.automation.core.operations.document;
022
023import org.nuxeo.ecm.automation.core.Constants;
024import org.nuxeo.ecm.automation.core.annotations.Context;
025import org.nuxeo.ecm.automation.core.annotations.Operation;
026import org.nuxeo.ecm.automation.core.annotations.OperationMethod;
027import org.nuxeo.ecm.automation.core.annotations.Param;
028import org.nuxeo.ecm.automation.core.collectors.DocumentModelCollector;
029import org.nuxeo.ecm.core.api.CoreSession;
030import org.nuxeo.ecm.core.api.DocumentModel;
031
032/**
033 * @since 8.3
034 */
035@Operation(id = RemoveFacet.ID, category = Constants.CAT_DOCUMENT, label = "Remove Facet", description = "Removes the facet from the document. <p>WARNING: The save parameter is true by default, which means the document is saved in the database after removing the facet. It must be set to false when the operation is used in the context of an event that will fail if the document is saved (empty document created, about to create, before modification, ...).</p>", aliases = { "Document.RemoveFacet" })
036public class RemoveFacet {
037
038    public static final String ID = "Document.RemoveFacet";
039
040    @Param(name = "facet", required = true)
041    protected String facet = "";
042
043    @Param(name = "save", required = false, values = { "true" })
044    protected boolean save = true;
045
046    @Context
047    protected CoreSession session;
048
049    @OperationMethod(collector = DocumentModelCollector.class)
050    public DocumentModel run(DocumentModel input) {
051        input.removeFacet(facet);
052        if (save) {
053            input = session.saveDocument(input);
054        }
055        return input;
056    }
057
058}