001: /*******************************************************************************
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: *******************************************************************************/package org.ofbiz.entity.util;
019:
020: import java.sql.ResultSet;
021:
022: /**
023: * Contains a number of variables used to select certain advanced finding options.
024: */
025: public class EntityFindOptions implements java.io.Serializable {
026:
027: /** Type constant from the java.sql.ResultSet object for convenience */
028: public static final int TYPE_FORWARD_ONLY = ResultSet.TYPE_FORWARD_ONLY;
029:
030: /** Type constant from the java.sql.ResultSet object for convenience */
031: public static final int TYPE_SCROLL_INSENSITIVE = ResultSet.TYPE_SCROLL_INSENSITIVE;
032:
033: /** Type constant from the java.sql.ResultSet object for convenience */
034: public static final int TYPE_SCROLL_SENSITIVE = ResultSet.TYPE_SCROLL_SENSITIVE;
035:
036: /** Concurrency constant from the java.sql.ResultSet object for convenience */
037: public static final int CONCUR_READ_ONLY = ResultSet.CONCUR_READ_ONLY;
038:
039: /** Concurrency constant from the java.sql.ResultSet object for convenience */
040: public static final int CONCUR_UPDATABLE = ResultSet.CONCUR_UPDATABLE;
041:
042: protected boolean specifyTypeAndConcur = true;
043: protected int resultSetType = TYPE_FORWARD_ONLY;
044: protected int resultSetConcurrency = CONCUR_READ_ONLY;
045: protected int fetchSize = -1;
046: protected int maxRows = -1;
047: protected boolean distinct = false;
048:
049: /** Default constructor. Defaults are as follows:
050: * specifyTypeAndConcur = true
051: * resultSetType = TYPE_FORWARD_ONLY
052: * resultSetConcurrency = CONCUR_READ_ONLY
053: * distinct = false
054: * maxRows = 0 (all rows)
055: */
056: public EntityFindOptions() {
057: }
058:
059: public EntityFindOptions(boolean specifyTypeAndConcur,
060: int resultSetType, int resultSetConcurrency, int fetchSize,
061: int maxRows, boolean distinct) {
062: this .specifyTypeAndConcur = specifyTypeAndConcur;
063: this .resultSetType = resultSetType;
064: this .resultSetConcurrency = resultSetConcurrency;
065: this .fetchSize = fetchSize;
066: this .maxRows = maxRows;
067: this .distinct = distinct;
068: }
069:
070: public EntityFindOptions(boolean specifyTypeAndConcur,
071: int resultSetType, int resultSetConcurrency,
072: boolean distinct) {
073: this (specifyTypeAndConcur, resultSetType, resultSetConcurrency,
074: -1, -1, distinct);
075: }
076:
077: /** If true the following two parameters (resultSetType and resultSetConcurrency) will be used to specify
078: * how the results will be used; if false the default values for the JDBC driver will be used
079: */
080: public boolean getSpecifyTypeAndConcur() {
081: return specifyTypeAndConcur;
082: }
083:
084: /** If true the following two parameters (resultSetType and resultSetConcurrency) will be used to specify
085: * how the results will be used; if false the default values for the JDBC driver will be used
086: */
087: public void setSpecifyTypeAndConcur(boolean specifyTypeAndConcur) {
088: this .specifyTypeAndConcur = specifyTypeAndConcur;
089: }
090:
091: /** Specifies how the ResultSet will be traversed. Available values: ResultSet.TYPE_FORWARD_ONLY,
092: * ResultSet.TYPE_SCROLL_INSENSITIVE or ResultSet.TYPE_SCROLL_SENSITIVE. See the java.sql.ResultSet JavaDoc for
093: * more information. If you want it to be fast, use the common default: ResultSet.TYPE_FORWARD_ONLY.
094: */
095: public int getResultSetType() {
096: return resultSetType;
097: }
098:
099: /** Specifies how the ResultSet will be traversed. Available values: ResultSet.TYPE_FORWARD_ONLY,
100: * ResultSet.TYPE_SCROLL_INSENSITIVE or ResultSet.TYPE_SCROLL_SENSITIVE. See the java.sql.ResultSet JavaDoc for
101: * more information. If you want it to be fast, use the common default: ResultSet.TYPE_FORWARD_ONLY.
102: */
103: public void setResultSetType(int resultSetType) {
104: this .resultSetType = resultSetType;
105: }
106:
107: /** Specifies whether or not the ResultSet can be updated. Available values:
108: * ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE. Should pretty much always be
109: * ResultSet.CONCUR_READ_ONLY with the Entity Engine.
110: */
111: public int getResultSetConcurrency() {
112: return resultSetConcurrency;
113: }
114:
115: /** Specifies whether or not the ResultSet can be updated. Available values:
116: * ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE. Should pretty much always be
117: * ResultSet.CONCUR_READ_ONLY with the Entity Engine.
118: */
119: public void setResultSetConcurrency(int resultSetConcurrency) {
120: this .resultSetConcurrency = resultSetConcurrency;
121: }
122:
123: /** Specifies the fetch size for this query. -1 will fall back to datasource settings. */
124: public int getFetchSize() {
125: return fetchSize;
126: }
127:
128: /** Specifies the fetch size for this query. -1 will fall back to datasource settings. */
129: public void setFetchSize(int fetchSize) {
130: this .fetchSize = fetchSize;
131: }
132:
133: /** Specifies the max number of rows to return, 0 means all rows. */
134: public int getMaxRows() {
135: return maxRows;
136: }
137:
138: /** Specifies the max number of rows to return, 0 means all rows. */
139: public void setMaxRows(int maxRows) {
140: this .maxRows = maxRows;
141: }
142:
143: /** Specifies whether the values returned should be filtered to remove duplicate values. */
144: public boolean getDistinct() {
145: return distinct;
146: }
147:
148: /** Specifies whether the values returned should be filtered to remove duplicate values. */
149: public void setDistinct(boolean distinct) {
150: this.distinct = distinct;
151: }
152: }
|