diff src/main/java/nl/cwi/monetdb/util/Exporter.java @ 0:a5a898f6886c

Copy of MonetDB java directory changeset e6e32756ad31.
author Sjoerd Mullender <sjoerd@acm.org>
date Wed, 21 Sep 2016 09:34:48 +0200 (2016-09-21)
parents
children 57978db4ee57 17fbaf2635bb
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/main/java/nl/cwi/monetdb/util/Exporter.java
@@ -0,0 +1,77 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0.  If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V.
+ */
+
+package nl.cwi.monetdb.util;
+
+import java.io.*;
+import java.sql.*;
+import java.util.Arrays;
+
+
+public abstract class Exporter {
+	protected PrintWriter out;
+	protected boolean useSchema;
+
+	protected Exporter(PrintWriter out) {
+		this.out = out;
+	}
+
+	public abstract void dumpSchema(
+			DatabaseMetaData dbmd,
+			String type,
+			String catalog,
+			String schema,
+			String name) throws SQLException;
+
+	public abstract void dumpResultSet(ResultSet rs) throws SQLException;
+
+	public abstract void setProperty(int type, int value) throws Exception;
+	public abstract int getProperty(int type) throws Exception;
+	
+	//=== shared utilities
+	
+	public void useSchemas(boolean use) {
+		useSchema = use;
+	}
+	
+	/**
+	 * returns the given string between two double quotes for usage as
+	 * identifier such as column or table name in SQL queries.
+	 *
+	 * @param in the string to quote
+	 * @return the quoted string
+	 */
+	protected static String dq(String in) {
+		return "\"" + in.replaceAll("\\\\", "\\\\\\\\").replaceAll("\"", "\\\\\"") + "\"";
+	}
+
+	/**
+	 * returns the given string between two single quotes for usage as
+	 * string literal in SQL queries.
+	 *
+	 * @param in the string to quote
+	 * @return the quoted string
+	 */
+	protected static String q(String in) {
+		return "'" + in.replaceAll("\\\\", "\\\\\\\\").replaceAll("'", "\\\\'") + "'";
+	}
+
+	/**
+	 * Simple helper function to repeat a given character a number of
+	 * times.
+	 *
+	 * @param chr the character to repeat
+	 * @param cnt the number of times to repeat chr
+	 * @return a String holding cnt times chr
+	 */
+	protected static String repeat(char chr, int cnt) {
+		char[] buf = new char[cnt];
+		Arrays.fill(buf, chr);
+		return new String(buf);
+	}
+}