/* See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * Esri Inc. licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Single request support classes. * <p/> * Classes found in this package help to implement <i>Request Pattern</i> * commonly used in the application. <i>Request Pattern</i> is a standard way * to obtain required information from the underlying database, perform action * on the selected group of records, or generally, define any kind of request * which can be invoked regardles the data source (it doesn't have to be * database records to be modified). Request can be a <i>query request</i> * or <i>action request</i> depending whether it doesn't or does modify data. * <p/> * There are several important elements of the pattern: * <ul> * <li><i>Record</i> - a record of data</li> * <li><i>Records</i> - collection of records</li> * <li><i>QueryCriteria</i> - selection criteria for the unmodyfying query</li> * <li><i>QuryResul</i>t - result of invoked query (usually: records)</li> * <li><i>ActionCriteria</i> - selection criteria for the modyfying request</li> * <li><i>ActionResult</i> - result of the invoked action (usually: number of * the affected records)</li> * <li><i>DaoRequest</i> - data access object abstract implementation</li> * </ul> * There are also several minor classes defined, facilitiating sorting feature * implementation, filters, hybrid criteria and request. * <p/> * Suggested way of implementing <i>Request Pattern</i> is to create class of * the request inherited from <i>DaoRequest</i>, which have arbitrary * <i>action</i> method for example: <code>execute()</code>. This method will * read <i>query criteria</i> or <i>action criteria</i> depending of the * category of the request, than performs request logic and places result in * either <i>query result</i> or <i>action result</i>. * <p/> * It is advised to keep each result in the servlet <i>request</i> scope, where * criteria may be placed in <i>session</i> scope. */ package com.esri.gpt.framework.request;