| /* |
| * Copyright (c) 1998, 2020 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: |
| // Mike Norman - from Proof-of-concept, become production code |
| package dbws.testing.shadowddlgeneration.oldjpub; |
| |
| //javase imports |
| import java.sql.SQLException; |
| import java.util.ArrayList; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| //EclipseLink imports |
| import dbws.testing.shadowddlgeneration.oldjpub.SqlReflector; |
| |
| public class FieldInfo { |
| |
| public String fieldName; |
| public String fieldTypeName; |
| public String fieldTypeSubname; |
| public String fieldTypeOwner; |
| public String fieldTypeMod; |
| public String fieldMethodName; |
| public String fieldMethodNo; |
| public String fieldPackageName; |
| public String fieldCharacterSetName; |
| public int fieldSequence; |
| public int fieldDataLevel; |
| public int fieldDataLength; |
| public int fieldDataPrecision; |
| public int fieldDataScale; |
| public int fieldNo; |
| |
| public FieldInfo(AllTypeAttrs r) throws SQLException { |
| fieldName = r.attrName; |
| fieldTypeName = r.attrTypeName; |
| fieldTypeSubname = null; |
| fieldTypeOwner = r.attrTypeOwner; |
| fieldTypeMod = r.attrTypeMod; |
| fieldMethodName = null; |
| fieldMethodNo = null; |
| fieldPackageName = null; |
| fieldSequence = -1; |
| fieldDataLevel = -1; |
| fieldDataLength = r.attrLength; |
| fieldDataPrecision = r.attrPrecision; |
| fieldDataScale = r.attrScale; |
| fieldNo = r.attrNo; |
| fieldCharacterSetName = r.characterSetName; |
| } |
| |
| public FieldInfo(UserArguments r) throws SQLException { |
| fieldNo = r.POSITION; |
| fieldName = r.ARGUMENT_NAME; |
| fieldTypeOwner = r.TYPE_OWNER; |
| fieldTypeName = r.TYPE_NAME; |
| if (SqlReflector.isNull(fieldTypeName)) { |
| fieldTypeName = r.DATA_TYPE; |
| } |
| if ("PL/SQL BOOLEAN".equalsIgnoreCase(fieldTypeName)) { |
| fieldTypeName = "BOOLEAN"; |
| } |
| fieldTypeSubname = r.TYPE_SUBNAME; |
| fieldTypeMod = ""; |
| if ("REF".equalsIgnoreCase(r.DATA_TYPE) || "PL/SQL RECORD".equalsIgnoreCase(r.DATA_TYPE) |
| || "PL/SQL TABLE".equalsIgnoreCase(r.DATA_TYPE) |
| || "VARRAY".equalsIgnoreCase(r.DATA_TYPE) || "TABLE".equalsIgnoreCase(r.DATA_TYPE)) { |
| fieldTypeMod = r.DATA_TYPE; |
| } |
| fieldPackageName = r.PACKAGE_NAME; |
| fieldMethodName = r.OBJECT_NAME; |
| fieldMethodNo = r.OVERLOAD; |
| fieldSequence = r.sequence; |
| fieldDataLevel = -1; |
| if ("PL/SQL RECORD".equalsIgnoreCase(r.DATA_TYPE)) { |
| fieldDataLength = 0; |
| } |
| else { |
| fieldDataLength = r.DATA_LENGTH; |
| } |
| fieldDataPrecision = r.DATA_PRECISION; |
| fieldDataScale = r.DATA_SCALE; |
| fieldCharacterSetName = r.CHARACTER_SET_NAME; |
| } |
| |
| public static List<FieldInfo> getFieldInfo(Iterator<ViewRow> iter) throws SQLException { |
| ArrayList<ViewRow> v = new ArrayList<ViewRow>(); |
| while (iter.hasNext()) { |
| v.add(iter.next()); |
| } |
| return getFieldInfo(v); |
| } |
| |
| public static List<FieldInfo> getFieldInfo(ArrayList<ViewRow> v) throws SQLException { |
| ArrayList<FieldInfo> a = new ArrayList<FieldInfo>(); |
| for (int i = 0; i < v.size(); i++) { |
| ViewRow vr = v.get(i); |
| if (vr.isUserArguments() || vr.isAllArguments()) { |
| UserArguments userArguments = (UserArguments)vr; |
| a.add(new FieldInfo(userArguments)); |
| } |
| else if (vr.isAllTypeAttrs()) { |
| AllTypeAttrs allTypeAttrs = (AllTypeAttrs)vr; |
| a.add(new FieldInfo(allTypeAttrs)); |
| } |
| } |
| return a; |
| } |
| } |