com.sun.gjc.spi.base.CacheObjectKey Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of payara-micro Show documentation
Show all versions of payara-micro Show documentation
Micro Distribution of the Payara Project
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
package com.sun.gjc.spi.base;
import java.util.Arrays;
/**
*
* @author Shalini M
*/
public class CacheObjectKey {
public static final String CALLABLE_STATEMENT = "CS";
public static final String PREPARED_STATEMENT = "PS";
protected String sql = null;
protected String statementType = null;
protected int resultSetType;
protected int resultSetConcurrency;
protected int resultSetHoldability;
protected int autoGeneratedKeys;
protected int[] columnIndexes;
protected String[] columnNames;
/**
* Get the value of columnNames
*
* @return the value of columnNames
*/
public String[] getColumnNames() {
return columnNames;
}
/**
* Set the value of columnNames
*
* @param columnNames new value of columnNames
*/
public void setColumnNames(String[] columnNames) {
this.columnNames = columnNames;
}
/**
* Get the value of columnIndexes
*
* @return the value of columnIndexes
*/
public int[] getColumnIndexes() {
return columnIndexes;
}
/**
* Set the value of columnIndexes
*
* @param columnIndexes new value of columnIndexes
*/
public void setColumnIndexes(int[] columnIndexes) {
this.columnIndexes = columnIndexes;
}
public CacheObjectKey(String sql, String statementType,
int resultSetType, int resultSetConcurrency) {
this.sql = sql;
this.statementType = statementType;
this.resultSetType = resultSetType;
this.resultSetConcurrency = resultSetConcurrency;
}
public CacheObjectKey(String sql, String statementType,
int resultSetType, int resultSetConcurrency,
int resultSetHoldability) {
this.sql = sql;
this.statementType = statementType;
this.resultSetType = resultSetType;
this.resultSetConcurrency = resultSetConcurrency;
this.resultSetHoldability = resultSetHoldability;
}
public CacheObjectKey(String sql, String statementType,
int[] columnIndexes) {
this.sql = sql;
this.statementType = statementType;
this.columnIndexes = columnIndexes;
}
public CacheObjectKey(String sql, String statementType,
String[] columnNames) {
this.sql = sql;
this.statementType = statementType;
this.columnNames = columnNames;
}
public CacheObjectKey(String sql, String statementType,
int autoGeneratedKeys) {
this.sql = sql;
this.statementType = statementType;
this.autoGeneratedKeys = autoGeneratedKeys;
}
public int getAutoGeneratedKeys() {
return autoGeneratedKeys;
}
public void setAutoGeneratedKeys(int autoGeneratedKeys) {
this.autoGeneratedKeys = autoGeneratedKeys;
}
/**
* Get the value of resultSetConcurrency
*
* @return the value of resultSetConcurrency
*/
public int getResultSetConcurrency() {
return resultSetConcurrency;
}
/**
* Set the value of resultSetConcurrency
*
* @param resultSetConcurrency new value of resultSetConcurrency
*/
public void setResultSetConcurrency(int resultSetConcurrency) {
this.resultSetConcurrency = resultSetConcurrency;
}
/**
* Get the value of resultSetType
*
* @return the value of resultSetType
*/
public int getResultSetType() {
return resultSetType;
}
/**
* Set the value of resultSetType
*
* @param resultSetType new value of resultSetType
*/
public void setResultSetType(int resultSetType) {
this.resultSetType = resultSetType;
}
/**
* Get the value of resultSetHoldability
*
* @return the value of resultSetHoldability
*/
public int getResultSetHoldability() {
return resultSetHoldability;
}
/**
* Set the value of resultSetHoldability
*
* @param resultSetHoldability new value of resultSetHoldability
*/
public void setResultSetHoldability(int resultSetHoldability) {
this.resultSetHoldability = resultSetHoldability;
}
public CacheObjectKey() {
}
/**
* Check for the equality of the CacheObjectKey with the object passed by
* 1. comparing the sql string values
* 2. comparing the statement type values
* 3. comapring the getClass() values
* @param obj obj which is to be checked against this object
* @return boolean
*/
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final CacheObjectKey other = (CacheObjectKey) obj;
if (this.sql == null || other.sql == null || !this.sql.equals(other.sql)) {
return false;
}
if (this.statementType == null || other.statementType == null ||
!this.statementType.equals(other.statementType)) {
return false;
}
if (this.resultSetType != other.resultSetType) {
return false;
}
if (this.resultSetConcurrency != other.resultSetConcurrency) {
return false;
}
if (this.resultSetHoldability != other.resultSetHoldability) {
return false;
}
if(CacheObjectKey.PREPARED_STATEMENT.equals(other.statementType)) {
if (this.autoGeneratedKeys != other.autoGeneratedKeys) {
return false;
}
//Iterate through the columnNames/columnIndexes to see if equal
if(this.columnIndexes != null && other.columnIndexes != null) {
if (!Arrays.equals(this.columnIndexes, other.columnIndexes)) {
return false;
}
}
if(this.columnNames != null && other.columnNames != null) {
if(!Arrays.equals(this.columnNames, other.columnNames)) {
return false;
}
}
}
return true;
}
/**
* Generate hashCode for this object using the sql and statementType fields
* @return has integer value
*/
@Override
public int hashCode() {
int hash = 7;
hash = 41 * hash + (this.sql != null ? this.sql.hashCode() : 0);
hash = 41 * hash + (this.statementType != null ? this.statementType.hashCode() : 0);
hash = 41 * hash + this.resultSetType;
hash = 41 * hash + this.resultSetConcurrency;
hash = 41 * hash + this.resultSetHoldability;
if(CacheObjectKey.PREPARED_STATEMENT.equals(this.statementType)) {
hash = 41 * hash + this.autoGeneratedKeys;
if(this.columnIndexes != null) {
for(int i : this.columnIndexes) {
hash = 41 * hash + ((Integer) i).hashCode();
}
}
if(this.columnNames != null) {
for(String str : columnNames) {
hash = 41 * hash + str.hashCode();
}
}
}
return hash;
}
/**
* Get the value of statementType
*
* @return the value of statementType
*/
public String getStatementType() {
return statementType;
}
/**
* Set the value of statementType
*
* @param statementType new value of statementType
*/
public void setStatementType(String statementType) {
this.statementType = statementType;
}
/**
* Get the value of sql
*
* @return the value of sql
*/
public String getSql() {
return sql;
}
/**
* Set the value of sql
*
* @param sql new value of sql
*/
public void setSql(String sql) {
this.sql = sql;
}
}