package railo.runtime.util; import railo.runtime.PageContext; import railo.runtime.type.Collection; import railo.runtime.type.Query; import railo.runtime.type.QueryColumn; /** * Query Stack */ public interface QueryStack { /** * adds a Query to the Stack * @param query */ public abstract void addQuery(Query query); /** * removes a Query from Stack */ public abstract void removeQuery(); /** * @return returns if stack is empty or not */ public abstract boolean isEmpty(); /** * loop over all Queries and return value at first ocurrence * @param key column name of the value to get * @return value * @deprecated use instead <code>{@link #getDataFromACollection(PageContext,String)}</code> */ public abstract Object getDataFromACollection(String key); /** * loop over all Queries and return value at first ocurrence * @param key column name of the value to get * @return value */ public abstract Object getDataFromACollection(PageContext pc,String key); /** * loop over all Queries and return value at first ocurrence * @param key column name of the value to get * @return value * @deprecated use instead <code>{@link #getDataFromACollection(PageContext,Collection.Key)}</code> */ public abstract Object getDataFromACollection(Collection.Key key); /** * loop over all Queries and return value at first ocurrence * @param key column name of the value to get * @return value */ public abstract Object getDataFromACollection(PageContext pc,Collection.Key key); /** * loop over all Queries and return value as QueryColumn at first ocurrence * @param key column name of the value to get * @return value */ public abstract QueryColumn getColumnFromACollection(String key); /** * loop over all Queries and return value as QueryColumn at first ocurrence * @param key column name of the value to get * @return value */ public abstract QueryColumn getColumnFromACollection(Collection.Key key); /** * clear the collection stack */ public abstract void clear(); /** * @return returns all queries in the stack */ public Query[] getQueries(); public QueryStack duplicate(boolean deepCopy); }