| /* |
| * 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; |
| } |
| } |