1 /* 2 * Copyright 2001,2004 The Apache Software Foundation. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package org.apache.commons.scaffold.util; 18 19 20 import java.util.Collection; 21 22 import org.apache.commons.scaffold.lang.ResourceException; 23 24 25 /** 26 * Base class for scrolling searches. 27 * 28 * @author Ted Husted 29 * @version $Revision: 155464 $ $Date: 2005-02-26 13:26:54 +0000 (Sat, 26 Feb 2005) $ 30 */ 31 public interface ScrollerBean { 32 33 34 /** 35 * The relative position of the first entry in this set. 36 * @return the position to start this set 37 */ 38 public Integer getScrollFrom(); 39 40 public void setScrollFrom(Integer scrollFrom); 41 42 43 /** 44 * The number of entries before the first entry in the set 45 * (One less than scrollFrom) [0]. 46 * @return Offset to next entry 47 */ 48 public Integer scrollOffset(); 49 50 51 /** 52 * The number of entries to return [Scroller.SCROLL_ROWS]. 53 * @return Entries per page. 54 */ 55 public int scrollRows(); 56 57 58 /** 59 * Returns the String to use to retrieve the 60 * appropriate query to count the entries matching this search. 61 * Must be overridden or provide functionality. 62 * @return Value of count key 63 */ 64 public String countKey(); 65 66 67 /** 68 * Returns whether this search takes a parameter 69 * (eg primary key) [false]. 70 * Override this method to return true and 71 * <code>getParameter</code> to return the 72 * required parameter. 73 * @return True if this search uses a parameter 74 */ 75 public boolean hasParameter(); 76 77 78 /** 79 * Returns the value used in the search [null]. 80 * This can be the literal value used in the 81 * query or (if hasParameter==false) a description 82 * of what the search returns. 83 * Must be overridden or provide functionality. 84 * @return Value of search parameter 85 */ 86 public Object searchValue(); 87 88 89 /** 90 * Returns whether this search uses the LIKE 91 * operator so that other methods know to 92 * wrap <code>searchValue</code> in a call to 93 * <code>like</code> [false]. 94 * @return True if this search uses the LIKE operator 95 */ 96 public boolean isLike(); 97 98 99 /** 100 * The total number of entries in search list. 101 * The default behavior returns a "like" search count 102 * of entries matching the searchKey. 103 * Override to provide functionality. 104 * @return total entries 105 * @exception May throw an exception on data access error 106 */ 107 public int entryCount() throws ResourceException; 108 109 110 /** 111 * Returns the String to use to retrieve the 112 * appropriate query for this search. 113 * Must be overridden or provide functionality. 114 * @return Value of command key 115 */ 116 public String commandKey(); 117 118 119 /** 120 * Returns the name of the property being matched 121 * with the <code>searchValue</code>. 122 * Default method returns null. 123 * Must be overridden or provide functionality. 124 * @return The search property 125 */ 126 public String searchProperty(); 127 128 129 /** 130 * Returns a label to the property being searched. 131 * This can be the property name or a more 132 * descriptive legend. 133 * Default method returns <code>searchProperty</code>. 134 * Must be overridden or provide functionality. 135 * @return The label for the search property 136 */ 137 public String searchLabel(); 138 139 140 /** 141 * Whether to branch to "failure" if list returns zero entries. 142 */ 143 public boolean failsOnEmpty (); 144 145 146 /** 147 * Returns the message token for an empty result 148 * [Tokens.DATA_ACCESS_EMPTY]. 149 * May be used when isFailOnEmpty is true. 150 * @return Message token for an empty result. 151 */ 152 public String tokenEmptyMessage(); 153 154 155 /** 156 * Returns the dispatch token for an empty result 157 * [Tokens.FAILURE]. 158 * May be used when isFailOnEmpty is true. 159 * @return Message token for an empty result. 160 */ 161 public String tokenEmptyDispatch(); 162 163 164 /** 165 * Return the array of parameters needed to select the 166 * entries for this set. 167 * @param parameter The additional parameter needed to select 168 * this set, if any. 169 */ 170 public Object[] scrollerParams(String parameter); 171 172 173 /** 174 * Returns the collection representing the result of the Search [null]. 175 * The default behavior performs a "like" search for the parameter 176 * Override for an other search type. 177 * Subclasses may ignor parameter argument 178 * when <code>isParameter</code> is false. 179 * @param target Bean to use for entries 180 * @param parameter Value to use to match entries 181 * @return Collection with the result of the search 182 */ 183 public Collection result(Object target, Object parameter) 184 throws ResourceException; 185 186 187 /** 188 * Return new scroller using the 189 * current starting point (getScrollFrom), 190 * the default limit (set.SCROLL_ROWS), 191 * and current count from Access (countCurrent). 192 * @return new Scroller using current and default settings. 193 * @exception ResourceException on data access error 194 */ 195 public Scroller newScroller(int entries) throws ResourceException; 196 197 198 /** 199 * Setup the legend for the result list. 200 * Default behavior is to use the <code>searchLabel</code> 201 * and <code>searchValue</code> (if any). 202 */ 203 public void listLegend(ResultList list); 204 205 206 /** 207 * Invoke business logic; return result. 208 */ 209 public ProcessResult scrollerSearch() throws Exception; 210 211 212 } // end ScrollerBean