001/* 002 * Copyright 2010 Anyware Services 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 017package org.ametys.plugins.repository; 018 019import java.util.List; 020 021/** 022 * Copiable {@link AmetysObject}. 023 */ 024public interface CopiableAmetysObject extends AmetysObject 025{ 026 /** 027 * Copy the current {@link AmetysObject} to the given object. Be careful, this method save changes. 028 * @param parent The parent of the new object. Can not be null. 029 * @param name Name of the new object. Can be null. If null, the new name will be get from the copied object 030 * @return the created object 031 * @throws AmetysRepositoryException if an error occurs. 032 */ 033 AmetysObject copyTo(ModifiableTraversableAmetysObject parent, String name) throws AmetysRepositoryException; 034 035 /** 036 * Copy the current {@link AmetysObject} to the given object if it is not in the restriction list. Be careful, this method save changes. 037 * @param parent The parent of the new object. Can not be null. 038 * @param name Name of the new object. Can be null. If null, the new name will be get from the copied object 039 * @param restrictTo A restrict list of {@link CopiableAmetysObject} authorized to be copied 040 * @return the created object 041 * @throws AmetysRepositoryException if an error occurs. 042 */ 043 AmetysObject copyTo(ModifiableTraversableAmetysObject parent, String name, List<String> restrictTo) throws AmetysRepositoryException; 044}