java/jdbc-loopback-driver/src/info/globalcode/jdbc/loopback/ResultSetMetaData.java
author František Kučera <franta-hg@frantovo.cz>
Tue, 26 Feb 2019 18:19:49 +0100
branchv_0
changeset 236 a3ec71fa8e17
parent 171 701ec4db43fb
permissions -rw-r--r--
Avoid reusing/rewriting the DB connection properties. There was weird random errors while testing connection to multiple DB in parallel when one of them was meta connection to same DB connection. Two kinds of exception: 1) missing password 2) „Passing DB password as CLI parameter is insecure!“
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
171
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     1
/**
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     2
 * SQL-DK
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     3
 * Copyright © 2014 František Kučera (frantovo.cz)
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     4
 *
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     5
 * This program is free software: you can redistribute it and/or modify
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     7
 * the Free Software Foundation, either version 3 of the License, or
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     8
 * (at your option) any later version.
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     9
 *
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    13
 * GNU General Public License for more details.
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    14
 *
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    16
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    17
 */
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    18
package info.globalcode.jdbc.loopback;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    19
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    20
import java.sql.SQLException;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    21
import java.util.ArrayList;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    22
import java.util.List;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    23
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    24
/**
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    25
 *
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    26
 * @author Ing. František Kučera (frantovo.cz)
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    27
 */
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    28
public class ResultSetMetaData extends AbstractResultSetMetaData {
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    29
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    30
	private List<ColumnDescriptor> columns = new ArrayList<>();
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    31
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    32
	public void addColumn(ColumnDescriptor cd) {
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    33
		columns.add(cd);
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    34
	}
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    35
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    36
	@Override
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    37
	public int getColumnCount() throws SQLException {
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    38
		return columns.size();
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    39
	}
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    40
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    41
	@Override
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    42
	public String getColumnLabel(int column) throws SQLException {
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    43
		return columns.get(column - 1).label;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    44
	}
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    45
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    46
	@Override
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    47
	public String getColumnName(int column) throws SQLException {
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    48
		return columns.get(column - 1).name;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    49
	}
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    50
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    51
	@Override
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    52
	public int getColumnType(int column) throws SQLException {
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    53
		return columns.get(column - 1).type;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    54
	}
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    55
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    56
	@Override
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    57
	public String getColumnTypeName(int column) throws SQLException {
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    58
		return columns.get(column - 1).typeName;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    59
	}
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    60
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    61
	public static class ColumnDescriptor {
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    62
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    63
		private final int type;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    64
		private final String typeName;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    65
		private final String label;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    66
		private final String name;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    67
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    68
		public ColumnDescriptor(int type, String typeName, String label, String name) {
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    69
			this.type = type;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    70
			this.typeName = typeName;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    71
			this.label = label;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    72
			this.name = name;
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    73
		}
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    74
	}
701ec4db43fb JDBC loopback driver: first version
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    75
}