001/* 002 * Copyright 2019 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 */ 016package org.ametys.plugins.repository.data.ametysobject; 017 018import java.io.IOException; 019import java.util.Map; 020 021import org.ametys.plugins.repository.AmetysObject; 022import org.ametys.plugins.repository.data.UnknownDataException; 023import org.ametys.plugins.repository.data.external.ExternalizableDataProvider.ExternalizableDataStatus; 024import org.ametys.plugins.repository.data.external.ExternalizableDataProviderExtensionPoint; 025import org.ametys.plugins.repository.data.holder.ModifiableModelAwareDataHolder; 026import org.ametys.plugins.repository.data.holder.group.impl.ModifiableModelAwareComposite; 027import org.ametys.plugins.repository.data.holder.group.impl.ModifiableModelAwareRepeater; 028import org.ametys.plugins.repository.data.repositorydata.ModifiableRepositoryData; 029import org.ametys.runtime.model.ViewItemContainer; 030import org.ametys.runtime.model.exception.BadDataPathCardinalityException; 031import org.ametys.runtime.model.exception.BadItemTypeException; 032import org.ametys.runtime.model.exception.UndefinedItemPathException; 033 034/** 035 * Model aware {@link AmetysObject} that can handle modifiable data. 036 */ 037public interface ModifiableModelAwareDataAwareAmetysObject extends ModelAwareDataAwareAmetysObject, ModifiableModelAwareDataHolder 038{ 039 @Override 040 public ModifiableModelAwareDataHolder getDataHolder(); 041 042 @Override 043 public default ModifiableModelAwareComposite getComposite(String compositePath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 044 { 045 return getDataHolder().getComposite(compositePath); 046 } 047 048 @Override 049 public default ModifiableModelAwareComposite getLocalComposite(String compositePath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 050 { 051 return getDataHolder().getLocalComposite(compositePath); 052 } 053 054 @Override 055 public default ModifiableModelAwareComposite getExternalComposite(String compositePath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 056 { 057 return getDataHolder().getExternalComposite(compositePath); 058 } 059 060 @Override 061 public default ModifiableModelAwareRepeater getRepeater(String repeaterPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 062 { 063 return getDataHolder().getRepeater(repeaterPath); 064 } 065 066 @Override 067 public default ModifiableModelAwareRepeater getLocalRepeater(String repeaterPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 068 { 069 return getDataHolder().getLocalRepeater(repeaterPath); 070 } 071 072 @Override 073 public default ModifiableModelAwareRepeater getExternalRepeater(String repeaterPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 074 { 075 return getDataHolder().getExternalRepeater(repeaterPath); 076 } 077 078 public default ModifiableModelAwareComposite getComposite(String compositePath, boolean createNew) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 079 { 080 return getDataHolder().getComposite(compositePath, createNew); 081 } 082 083 public default ModifiableModelAwareComposite getLocalComposite(String compositePath, boolean createNew) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 084 { 085 return getDataHolder().getLocalComposite(compositePath, createNew); 086 } 087 088 public default ModifiableModelAwareComposite getExternalComposite(String compositePath, boolean createNew) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 089 { 090 return getDataHolder().getExternalComposite(compositePath, createNew); 091 } 092 093 public default ModifiableModelAwareRepeater getRepeater(String repeaterPath, boolean createNew) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 094 { 095 return getDataHolder().getRepeater(repeaterPath, createNew); 096 } 097 098 public default ModifiableModelAwareRepeater getLocalRepeater(String repeaterPath, boolean createNew) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 099 { 100 return getDataHolder().getLocalRepeater(repeaterPath, createNew); 101 } 102 103 public default ModifiableModelAwareRepeater getExternalRepeater(String repeaterPath, boolean createNew) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 104 { 105 return getDataHolder().getExternalRepeater(repeaterPath, createNew); 106 } 107 108 public default boolean synchronizeValues(Map<String, Object> values, ExternalizableDataProviderExtensionPoint externalizableDataProviderEP, boolean useDefaultFromModel) throws UndefinedItemPathException, BadItemTypeException, IOException 109 { 110 return getDataHolder().synchronizeValues(values, externalizableDataProviderEP, useDefaultFromModel); 111 } 112 113 public default boolean synchronizeValues(ViewItemContainer viewItemContainer, Map<String, Object> values, ExternalizableDataProviderExtensionPoint externalizableDataProviderEP, boolean useDefaultFromModel) throws UndefinedItemPathException, BadItemTypeException, IOException 114 { 115 return getDataHolder().synchronizeValues(viewItemContainer, values, externalizableDataProviderEP, useDefaultFromModel); 116 } 117 118 public default void setValue(String dataPath, Object value) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 119 { 120 getDataHolder().setValue(dataPath, value); 121 } 122 123 public default void setLocalValue(String dataPath, Object localValue) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 124 { 125 getDataHolder().setLocalValue(dataPath, localValue); 126 } 127 128 public default void setExternalValue(String dataPath, Object externalValue) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 129 { 130 getDataHolder().setExternalValue(dataPath, externalValue); 131 } 132 133 public default void setStatus(String dataPath, ExternalizableDataStatus status) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 134 { 135 getDataHolder().setStatus(dataPath, status); 136 } 137 138 public default void removeValue(String dataPath) throws IllegalArgumentException, UndefinedItemPathException, UnknownDataException, BadDataPathCardinalityException 139 { 140 getDataHolder().removeValue(dataPath); 141 } 142 143 public default void removeLocalValue(String dataPath) throws IllegalArgumentException, UndefinedItemPathException, UnknownDataException, BadDataPathCardinalityException 144 { 145 getDataHolder().removeLocalValue(dataPath); 146 } 147 148 public default void removeExternalValue(String dataPath) throws IllegalArgumentException, UndefinedItemPathException, UnknownDataException, BadDataPathCardinalityException 149 { 150 getDataHolder().removeExternalValue(dataPath); 151 } 152 153 public default ModifiableRepositoryData getRepositoryData() 154 { 155 return getDataHolder().getRepositoryData(); 156 } 157}