001/* 002 * (C) Copyright 2006-2011 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 * bstefanescu 018 */ 019package org.nuxeo.ecm.automation.core.operations.services; 020 021import org.nuxeo.ecm.automation.core.Constants; 022import org.nuxeo.ecm.automation.core.annotations.Context; 023import org.nuxeo.ecm.automation.core.annotations.Operation; 024import org.nuxeo.ecm.automation.core.annotations.OperationMethod; 025import org.nuxeo.ecm.automation.core.annotations.Param; 026import org.nuxeo.ecm.automation.core.collectors.DocumentModelCollector; 027import org.nuxeo.ecm.core.api.CoreSession; 028import org.nuxeo.ecm.core.api.DocumentModel; 029import org.nuxeo.ecm.platform.relations.api.DocumentRelationManager; 030 031/** 032 * @author Nuxeo 033 */ 034@Operation(id = DeleteRelation.ID, category = Constants.CAT_SERVICES, label = "Delete Relation", description = "Delete a relation between 2 documents. The subject of the relation will be the input of the operation and the object of the relation will be retrieved from the context using the 'object' field. The 'predicate' field specifies the relation predicate (When using a known predicate, use the full URL like 'purl.org/dc/terms/IsBasedOn', unknown predicates will be treated as plain strings and be the same on the subject and object). The 'outgoing' flag indicates the direction of the relation - the default is false which means the relation will go from the input object to the object specified as 'object' parameter. Return back the subject document.", aliases = { "Relations.DeleteRelation" }) 035public class DeleteRelation { 036 037 public static final String ID = "Document.DeleteRelation"; 038 039 @Context 040 protected CoreSession session; 041 042 @Context 043 protected DocumentRelationManager relations; 044 045 @Param(name = "object") 046 protected DocumentModel object; 047 048 @Param(name = "predicate") 049 protected String predicate; 050 051 @Param(name = "outgoing", required = false, values = "false") 052 protected boolean outgoing = false; 053 054 @OperationMethod(collector = DocumentModelCollector.class) 055 public DocumentModel run(DocumentModel doc) { 056 relations.deleteRelation(session, doc, object, predicate, outgoing); 057 return doc; 058 } 059}