001/* 002 * Copyright 2018 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.holder.group; 017 018import java.util.Collection; 019import java.util.List; 020import java.util.Map; 021import java.util.Optional; 022 023import org.xml.sax.ContentHandler; 024import org.xml.sax.SAXException; 025 026import org.ametys.plugins.repository.data.DataComment; 027import org.ametys.plugins.repository.data.external.ExternalizableDataProvider.ExternalizableDataStatus; 028import org.ametys.plugins.repository.data.holder.ModelAwareDataHolder; 029import org.ametys.plugins.repository.data.holder.ModifiableDataHolder; 030import org.ametys.runtime.model.ModelItem; 031import org.ametys.runtime.model.ModelItemContainer; 032import org.ametys.runtime.model.ViewItemAccessor; 033import org.ametys.runtime.model.exception.BadDataPathCardinalityException; 034import org.ametys.runtime.model.exception.BadItemTypeException; 035import org.ametys.runtime.model.exception.NotUniqueTypeException; 036import org.ametys.runtime.model.exception.UndefinedItemPathException; 037import org.ametys.runtime.model.exception.UnknownTypeException; 038import org.ametys.runtime.model.type.DataContext; 039 040/** 041 * Interface for model aware composites 042 */ 043public interface ModelAwareComposite extends ModelAwareDataHolder, Composite 044{ 045 @Override 046 public default ModelAwareComposite getComposite(String compositePath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 047 { 048 return getDefaultDataHolder().getComposite(compositePath); 049 } 050 051 @Override 052 public default ModelAwareComposite getLocalComposite(String compositePath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 053 { 054 return getDefaultDataHolder().getLocalComposite(compositePath); 055 } 056 057 @Override 058 public default ModelAwareComposite getExternalComposite(String compositePath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 059 { 060 return getDefaultDataHolder().getExternalComposite(compositePath); 061 } 062 063 @Override 064 public default ModelAwareRepeater getRepeater(String repeaterPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 065 { 066 return getDefaultDataHolder().getRepeater(repeaterPath); 067 } 068 069 @Override 070 public default ModelAwareRepeater getLocalRepeater(String repeaterPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 071 { 072 return getDefaultDataHolder().getLocalRepeater(repeaterPath); 073 } 074 075 @Override 076 public default ModelAwareRepeater getExternalRepeater(String repeaterPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 077 { 078 return getDefaultDataHolder().getExternalRepeater(repeaterPath); 079 } 080 081 @Override 082 public default <T> T getValue(String dataPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 083 { 084 return getDefaultDataHolder().getValue(dataPath); 085 } 086 087 @Override 088 public default <T> T getValue(String dataPath, boolean allowMultiValuedPathSegments) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 089 { 090 return getDefaultDataHolder().getValue(dataPath, allowMultiValuedPathSegments); 091 } 092 093 @Override 094 public default <T> T getValue(String dataPath, boolean useDefaultFromModel, T defaultValue) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 095 { 096 return getDefaultDataHolder().getValue(dataPath, useDefaultFromModel, defaultValue); 097 } 098 099 @Override 100 public default <T> T getLocalValue(String dataPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 101 { 102 return getDefaultDataHolder().getLocalValue(dataPath); 103 } 104 105 @Override 106 public default <T> T getExternalValue(String dataPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException 107 { 108 return getDefaultDataHolder().getExternalValue(dataPath); 109 } 110 111 @Override 112 public default ExternalizableDataStatus getStatus(String dataPath) throws IllegalArgumentException, UndefinedItemPathException, BadDataPathCardinalityException 113 { 114 return getDefaultDataHolder().getStatus(dataPath); 115 } 116 117 @Override 118 public default List<DataComment> getComments(String dataName) throws IllegalArgumentException, UndefinedItemPathException 119 { 120 return getDefaultDataHolder().getComments(dataName); 121 } 122 123 public default boolean hasValue(String dataPath) throws IllegalArgumentException, BadDataPathCardinalityException 124 { 125 return getDefaultDataHolder().hasValue(dataPath); 126 } 127 128 @Override 129 public default boolean hasLocalValue(String dataPath) throws IllegalArgumentException, BadDataPathCardinalityException 130 { 131 return getDefaultDataHolder().hasLocalValue(dataPath); 132 } 133 134 @Override 135 public default boolean hasExternalValue(String dataPath) throws IllegalArgumentException, BadDataPathCardinalityException 136 { 137 return getDefaultDataHolder().hasExternalValue(dataPath); 138 } 139 140 @Override 141 public default boolean hasValueOrEmpty(String dataPath) throws IllegalArgumentException 142 { 143 return getDefaultDataHolder().hasValueOrEmpty(dataPath); 144 } 145 146 @Override 147 public default boolean hasLocalValueOrEmpty(String dataPath) throws IllegalArgumentException, BadDataPathCardinalityException 148 { 149 return getDefaultDataHolder().hasLocalValueOrEmpty(dataPath); 150 } 151 152 @Override 153 public default boolean hasExternalValueOrEmpty(String dataPath) throws IllegalArgumentException, BadDataPathCardinalityException 154 { 155 return getDefaultDataHolder().hasExternalValueOrEmpty(dataPath); 156 } 157 158 @Override 159 public default boolean hasComments(String dataName) throws IllegalArgumentException, UndefinedItemPathException 160 { 161 return getDefaultDataHolder().hasComments(dataName); 162 } 163 164 @Override 165 public default Collection< ? extends ModelItemContainer> getModel() 166 { 167 return getDefaultDataHolder().getModel(); 168 } 169 170 @Override 171 public default ModelItem getDefinition(String path) throws IllegalArgumentException, UndefinedItemPathException 172 { 173 return getDefaultDataHolder().getDefinition(path); 174 } 175 176 @Override 177 public default boolean hasDefinition(String path) throws IllegalArgumentException 178 { 179 return getDefaultDataHolder().hasDefinition(path); 180 } 181 182 @Override 183 public default Collection<String> getDataNames() 184 { 185 return getDefaultDataHolder().getDataNames(); 186 } 187 188 @Override 189 public default void copyTo(ModifiableDataHolder dataHolder) throws UndefinedItemPathException, BadItemTypeException, UnknownTypeException, NotUniqueTypeException 190 { 191 getDefaultDataHolder().copyTo(dataHolder); 192 } 193 194 public default void dataToSAX(ContentHandler contentHandler, ViewItemAccessor viewItemAccessor, DataContext context) throws SAXException, BadItemTypeException 195 { 196 getDefaultDataHolder().dataToSAX(contentHandler, viewItemAccessor, context); 197 } 198 199 public default void dataToSAXForEdition(ContentHandler contentHandler, ViewItemAccessor viewItemAccessor, DataContext context) throws SAXException, BadItemTypeException 200 { 201 getDefaultDataHolder().dataToSAXForEdition(contentHandler, viewItemAccessor, context); 202 } 203 204 public default Map<String, Object> dataToJSON(ViewItemAccessor viewItemAccessor, DataContext context) throws BadItemTypeException 205 { 206 return getDefaultDataHolder().dataToJSON(viewItemAccessor, context); 207 } 208 209 public default Map<String, Object> dataToJSONForEdition(ViewItemAccessor viewItemAccessor, DataContext context) throws BadItemTypeException 210 { 211 return getDefaultDataHolder().dataToJSONForEdition(viewItemAccessor, context); 212 } 213 214 public default Map<String, Object> dataToMap(ViewItemAccessor viewItemAccessor, DataContext context) 215 { 216 return getDefaultDataHolder().dataToMap(viewItemAccessor, context); 217 } 218 219 @Override 220 public default Optional<? extends ModelAwareDataHolder> getParentDataHolder() 221 { 222 return getDefaultDataHolder().getParentDataHolder(); 223 } 224 225 @Override 226 public default ModelAwareDataHolder getRootDataHolder() 227 { 228 return getDefaultDataHolder().getRootDataHolder(); 229 } 230 231 @Override 232 public ModelAwareDataHolder getDefaultDataHolder(); 233}