blob: fbb9c24597c445c1d7b41d96134a330482c139e0 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.oxm.mappings.compositeobject.self.plsqlcallmodel;
import static java.lang.Integer.MIN_VALUE;
public class PLSQLargument{
public static final Integer IN = 1;
public static final Integer OUT = 2;
public static final Integer INOUT = 3;
public String name;
public int index = MIN_VALUE;
public int direction = IN;
public int length = 255; //default from the EJB 3.0 spec.
public int precision = MIN_VALUE;
public int scale = MIN_VALUE;
public boolean cursorOutput = false;
public DatabaseTypeWrapper databaseTypeWrapper;
public PLSQLargument() {
}
public PLSQLargument(String name, DatabaseType databaseType) {
this(name, -1, IN, databaseType);
}
public PLSQLargument(String name, int index, int direction, DatabaseType databaseType) {
this.name = name;
this.index = index;
this.direction = direction;
if (!databaseType.isComplexDatabaseType() && databaseType.isJDBCType()) {
databaseTypeWrapper = new JDBCTypeWrapper(databaseType);
}
else if (!databaseType.isComplexDatabaseType() && !databaseType.isJDBCType()) {
databaseTypeWrapper = new SimplePLSQLTypeWrapper(databaseType);
}
else if (databaseType.isComplexDatabaseType()) {
databaseTypeWrapper = new ComplexPLSQLTypeWrapper(databaseType);
}
}
public PLSQLargument(String name, int index, int direction, DatabaseType databaseType,
int length) {
this(name, index, direction, databaseType);
this.length = length;
}
public PLSQLargument(String name, int index, int direction, DatabaseType databaseType,
int precision, int scale) {
this(name, index, direction, databaseType);
this.precision = precision;
this.scale = scale;
}
public void useNamedCursorOutputAsResultSet() {
cursorOutput = true;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(name);
sb.append('{');
if (direction == IN) {
sb.append("IN");
}
else if (direction == INOUT) {
sb.append("INOUT");
}
else if (direction == OUT) {
sb.append("OUT");
}
sb.append(',');
sb.append(index);
sb.append('}');
return sb.toString();
}
public boolean equals(Object obj) {
PLSQLargument pArg = null;
try {
pArg = (PLSQLargument) obj;
} catch (ClassCastException ccex) {
return false;
}
if (!pArg.name.equals(this.name)) {
return false;
}
if (pArg.direction != this.direction) {
return false;
}
if (pArg.index != this.index) {
return false;
}
if (!pArg.databaseTypeWrapper.equals(this.databaseTypeWrapper)) {
return false;
}
return true;
}
}