[Schmitzm-commits] r2118 - trunk/schmitzm-db/src/main/java/de/schmitzm/postgres

scm-commit at wald.intevation.org scm-commit at wald.intevation.org
Wed Oct 31 17:13:41 CET 2012


Author: alfonx
Date: 2012-10-31 17:13:41 +0100 (Wed, 31 Oct 2012)
New Revision: 2118

Modified:
   trunk/schmitzm-db/src/main/java/de/schmitzm/postgres/PGUtil.java
Log:
Weitere Signatur f?\195?\188r 	/**
	 * @see #addIndex(Connection, String, String, String, boolean, String, String, boolean, Double)
	 * 
	 *      Der Name des Index wird aus der/den Columns und einem Postfix "_idx" automatisch erstellt.
	 */
	public static void addIndex

Modified: trunk/schmitzm-db/src/main/java/de/schmitzm/postgres/PGUtil.java
===================================================================
--- trunk/schmitzm-db/src/main/java/de/schmitzm/postgres/PGUtil.java	2012-10-31 12:13:38 UTC (rev 2117)
+++ trunk/schmitzm-db/src/main/java/de/schmitzm/postgres/PGUtil.java	2012-10-31 16:13:41 UTC (rev 2118)
@@ -13,15 +13,14 @@
 import de.schmitzm.lang.LangUtil;
 
 /**
- * Hilfsmethoden für PostgreSQL. Die Dependency soll nur {@link Connection}
- * sein. In Hibernate kann über #doWork eine {@link Connection} erhalten werden.
+ * Hilfsmethoden für PostgreSQL. Die Dependency soll nur {@link Connection} sein. In Hibernate kann über #doWork eine
+ * {@link Connection} erhalten werden.
  */
 public class PGUtil {
 	static final Logger log = Logger.getLogger(PGUtil.class);
 
 	/**
-	 * PostgreSQL Privilegien die per Grant einer Tabelle zugeordnet werden
-	 * können.<br/>
+	 * PostgreSQL Privilegien die per Grant einer Tabelle zugeordnet werden können.<br/>
 	 * 
 	 * @see http://www.postgresql.org/docs/9.1/static/sql-grant.html
 	 */
@@ -147,8 +146,7 @@
 	// }
 
 	/**
-	 * Liefert ein {@link PGPostGisMetadata} Objekt für die angefragte
-	 * Geometry-Spalte in der angegebenen Tabelle.
+	 * Liefert ein {@link PGPostGisMetadata} Objekt für die angefragte Geometry-Spalte in der angegebenen Tabelle.
 	 * 
 	 * @param tablename
 	 *            (auch als Schema.Tablename erlaubt)
@@ -171,7 +169,7 @@
 		s.setString(1, schema);
 		s.setString(2, tablename);
 		s.setString(3, geoCol);
-		
+
 		try {
 			rs = s.executeQuery();
 			if (rs.next()) {
@@ -188,8 +186,7 @@
 	}
 
 	/**
-	 * Liefert ein {@link PGPostGisMetadata} Objekt für die erste
-	 * Geometry-Spalte in der angegebenen Tabelle.
+	 * Liefert ein {@link PGPostGisMetadata} Objekt für die erste Geometry-Spalte in der angegebenen Tabelle.
 	 * 
 	 * @param tablename
 	 *            (auch als Schema.Tablename erlaubt)
@@ -262,8 +259,8 @@
 	/**
 	 * @param binding
 	 *            Eine "einfache" Javaklasse, die in PG abgebildet werden soll.
-	 * @return einen PG-spezifischen Datentypenamen für einen Javatyp zurück,
-	 *         z.b. "double precision" für <code>Double.class</code>
+	 * @return einen PG-spezifischen Datentypenamen für einen Javatyp zurück, z.b. "double precision" für
+	 *         <code>Double.class</code>
 	 */
 	public static String getColTypeName(Class<?> binding) {
 
@@ -297,8 +294,7 @@
 	}
 
 	/**
-	 * Liefert <code>true</code> wenn ein Schema mit dem Namen in der PG
-	 * Datenbank existiert.
+	 * Liefert <code>true</code> wenn ein Schema mit dem Namen in der PG Datenbank existiert.
 	 */
 	public static boolean existsSchema(Connection c, String schemaname)
 			throws SQLException {
@@ -314,8 +310,7 @@
 	}
 
 	/**
-	 * Liefert eine Liste der Rollen in denen der Übergebenen USER (Login role)
-	 * ist. <br/>
+	 * Liefert eine Liste der Rollen in denen der Übergebenen USER (Login role) ist. <br/>
 	 * Tested with PG 8.4
 	 */
 	public static List<String> listRolesForUser(Connection c, String username)
@@ -354,8 +349,8 @@
 	}
 
 	/**
-	 * Liste aller Tabellennamen in diesem Schema, ohne die Schemaangabe im
-	 * Namen. (Also 'anreden' und nicht 'public.anreden') <br/>
+	 * Liste aller Tabellennamen in diesem Schema, ohne die Schemaangabe im Namen. (Also 'anreden' und nicht
+	 * 'public.anreden') <br/>
 	 * Tested with PG 8.4
 	 * 
 	 * @param schemaname
@@ -381,9 +376,8 @@
 	/**
 	 * Liefert eine Liste alle Spaltennamen in einer Tabelle.
 	 * 
-	 * ACHTUNG! Diese Methode schaut gerade nur auf den Tabellennamen! Das
-	 * SChema wird ignoriert. Es gibt also probleme, wenn der selbe Tabellenname
-	 * noch in einem anderen Schema existiert.
+	 * ACHTUNG! Diese Methode schaut gerade nur auf den Tabellennamen! Das SChema wird ignoriert. Es gibt also probleme,
+	 * wenn der selbe Tabellenname noch in einem anderen Schema existiert.
 	 * 
 	 * @param tableName
 	 *            darf auch schema-informationen enthalten.
@@ -413,9 +407,8 @@
 	/**
 	 * Liefdert eine Liste alle Spaltenin einer Tabelle.
 	 * 
-	 * ACHTUNG! Diese Methode schaut gerade nur auf den Tabellennamen! Das
-	 * SChema wird ignoriert. Es gibt also probleme, wenn der selbe Tabellenname
-	 * noch in einem anderen Schema existiert.
+	 * ACHTUNG! Diese Methode schaut gerade nur auf den Tabellennamen! Das SChema wird ignoriert. Es gibt also probleme,
+	 * wenn der selbe Tabellenname noch in einem anderen Schema existiert.
 	 * 
 	 * @param tableName
 	 *            darf auch schema-informationen enthalten.
@@ -563,14 +556,11 @@
 	 * @param parameters
 	 *            Parameter der Funcktion, kann <code>null</code> sein.
 	 * @param returns
-	 *            z.B. <code>TRIGGER</code> oder <code>SETOF bigint</code> oder
-	 *            "void"
+	 *            z.B. <code>TRIGGER</code> oder <code>SETOF bigint</code> oder "void"
 	 * @param declare
 	 *            Declare block oder <code>null</code>
 	 * @param plCommands
-	 *            z.B. NEW.kpk_kreis =
-	 *            NEW.risiko_soz+NEW.risiko_emo+NEW.risiko_moti
-	 *            +NEW.risiko_spr+NEW.risiko_wohl;
+	 *            z.B. NEW.kpk_kreis = NEW.risiko_soz+NEW.risiko_emo+NEW.risiko_moti +NEW.risiko_spr+NEW.risiko_wohl;
 	 */
 	public static void createOrReplaceFunction(Connection c, String name,
 			String parameters, String returns, String declare, String plCommands)
@@ -596,8 +586,7 @@
 	}
 
 	/**
-	 * Erstellt einen <code>FOR EACH ROW EXECUTE PROCEDURE</code> trigger für
-	 * eine Tabelle
+	 * Erstellt einen <code>FOR EACH ROW EXECUTE PROCEDURE</code> trigger für eine Tabelle
 	 * 
 	 * @param c
 	 * @param triggerName
@@ -632,8 +621,7 @@
 	 * @param idxNamePostfix
 	 *            e.g. 'idx1'
 	 * @param unique
-	 *            <code>true</code> if the columns are unique. A UNIQUE INDEX
-	 *            will be created.
+	 *            <code>true</code> if the columns are unique. A UNIQUE INDEX will be created.
 	 */
 	public static void addIndex(Connection c, final String tableName,
 			final String columns, String idxPostfix, final boolean unique)
@@ -643,12 +631,27 @@
 	}
 
 	/**
-	 * Liefert eine Liste aller Indexnamen die für eine Tabelle existieren. Der
-	 * Tabellenname wird mit <code>like</code> verglichen, darf also
-	 * <code>%</code> enthalten.<br/>
-	 * Achtung: Diese abfrage ist nicht Schema-Spezifisch. Eine schema. Angabe
-	 * vor dem tabellennamen wird automatisch entfernt.
+	 * @see #addIndex(Connection, String, String, String, boolean, String, String, boolean, Double)
+	 * 
+	 *      Der Name des Index wird aus der/den Columns und einem Postfix "_idx" automatisch erstellt.
 	 */
+	public static void addIndex(Connection c, final String tableName,
+			final String columns,
+			final boolean unique,
+			String tablespace,
+			String type,
+			boolean forceRecreationIfExistsAlready, Double fillFactor)
+			throws SQLException {
+		addIndex(c, tableName, columns, columns.replaceAll("[\\s.]", "_") + "_idx", unique, tablespace, type,
+				forceRecreationIfExistsAlready, fillFactor);
+	}
+
+	/**
+	 * Liefert eine Liste aller Indexnamen die für eine Tabelle existieren. Der Tabellenname wird mit <code>like</code>
+	 * verglichen, darf also <code>%</code> enthalten.<br/>
+	 * Achtung: Diese abfrage ist nicht Schema-Spezifisch. Eine schema. Angabe vor dem tabellennamen wird automatisch
+	 * entfernt.
+	 */
 	public static List<String> listIndexesForTable(Connection c,
 			String tableName) throws SQLException {
 		Statement s = c.createStatement();
@@ -685,21 +688,16 @@
 	 * @param idxNamePostfix
 	 *            e.g. 'idx1'
 	 * @param unique
-	 *            <code>true</code> if the columns are unique. A UNIQUE INDEX
-	 *            will be created.
+	 *            <code>true</code> if the columns are unique. A UNIQUE INDEX will be created.
 	 * @param tablespace
-	 *            <code>null</code> oder der name des tablespace in dem der
-	 *            Index liegen soll.
+	 *            <code>null</code> oder der name des tablespace in dem der Index liegen soll.
 	 * @param type
-	 *            <code>null</code> für DB default oder "hash" oder "btree" oder
-	 *            "gin" etc...
+	 *            <code>null</code> für DB default oder "hash" oder "btree" oder "gin" etc...
 	 * @param forceRecreationIfExistsAlready
-	 *            wenn <code>true</code> dann werden der Index vorher gedroppt
-	 *            falls er exisitert.
+	 *            wenn <code>true</code> dann werden der Index vorher gedroppt falls er exisitert.
 	 * @param fillFactor
-	 *            Wert von >0. -> 1. Bei .5 wird für den Index doppelt so viel
-	 *            Platz reserviert wie aktuell benötig, um auf weiteres Wachstum
-	 *            der Tabelle ohne Indexfragmentierung reagieren zu können.
+	 *            Wert von >0. -> 1. Bei .5 wird für den Index doppelt so viel Platz reserviert wie aktuell benötig, um
+	 *            auf weiteres Wachstum der Tabelle ohne Indexfragmentierung reagieren zu können.
 	 */
 	public static void addIndex(Connection c, final String tableName,
 			final String columns, String idxPostfix, final boolean unique,
@@ -829,8 +827,8 @@
 	}
 
 	/**
-	 * Fügt einen Benutzer zu einer Rolle hinzu. Wenn der benutzer bereits in
-	 * der Rolle enthalten ist, wird keine Exception geschmisssen.
+	 * Fügt einen Benutzer zu einer Rolle hinzu. Wenn der benutzer bereits in der Rolle enthalten ist, wird keine
+	 * Exception geschmisssen.
 	 * 
 	 * @throws SQLException
 	 */
@@ -841,9 +839,8 @@
 	}
 
 	/**
-	 * Der : (Doppelpunkt) hat in PSQL eine besondere Bedeutung. Er wind mit
-	 * dieser methode escaped. Diese Methode sollte mit
-	 * <code>like E'"+PGUtil.escape(...)+"'</code> verwendet werden.
+	 * Der : (Doppelpunkt) hat in PSQL eine besondere Bedeutung. Er wind mit dieser methode escaped. Diese Methode
+	 * sollte mit <code>like E'"+PGUtil.escape(...)+"'</code> verwendet werden.
 	 */
 	public static String escape(String key) {
 		key = key.replaceAll(":", "\\:");
@@ -856,11 +853,9 @@
 	 * @param c
 	 *            DB-Verbindung
 	 * @param dbName
-	 *            Name der Datenbank fuer die die Sessions gezaehlt werden (kann
-	 *            {@code null} sein)
+	 *            Name der Datenbank fuer die die Sessions gezaehlt werden (kann {@code null} sein)
 	 * @param userName
-	 *            Name des Users fuer den die Sessions gezaehlt werden (kann
-	 *            {@code null} sein)
+	 *            Name des Users fuer den die Sessions gezaehlt werden (kann {@code null} sein)
 	 */
 	public static int getOpenSessionCount(Connection c, String dbName,
 			String userName) throws SQLException {
@@ -873,14 +868,11 @@
 	 * @param c
 	 *            DB-Verbindung
 	 * @param dbName
-	 *            Name der Datenbank fuer die die Sessions gezaehlt werden (kann
-	 *            {@code null} sein)
+	 *            Name der Datenbank fuer die die Sessions gezaehlt werden (kann {@code null} sein)
 	 * @param userName
-	 *            Name des Users fuer den die Sessions gezaehlt werden (kann
-	 *            {@code null} sein)
+	 *            Name des Users fuer den die Sessions gezaehlt werden (kann {@code null} sein)
 	 * @param queryLike
-	 *            like-Beindung auf die Query die in der Session ausgeführt
-	 *            wird, oder <code>null</code>
+	 *            like-Beindung auf die Query die in der Session ausgeführt wird, oder <code>null</code>
 	 */
 	public static int getOpenSessionCount(Connection c, String dbName,
 			String userName, String queryLike) throws SQLException {
@@ -915,9 +907,8 @@
 	}
 
 	/**
-	 * Liefert <code>true</code> wenn eine Spalte mit dem Namen in der
-	 * angegebenen Tabelle existiert. Die Tablle darf optional mit "schema."
-	 * prefixiert werden.
+	 * Liefert <code>true</code> wenn eine Spalte mit dem Namen in der angegebenen Tabelle existiert. Die Tablle darf
+	 * optional mit "schema." prefixiert werden.
 	 */
 	public static boolean existsColumn(Connection c, String tableName,
 			String columnName) throws SQLException {
@@ -1004,9 +995,8 @@
 	}
 
 	/**
-	 * Wenn der übergebene durch die PID identifizierte Process blockiert ist,
-	 * dann wird die PID des (ersten?) blockierenden Prozess zurückgeliefert.
-	 * Sonst wird <code>null</code> geliefert.
+	 * Wenn der übergebene durch die PID identifizierte Process blockiert ist, dann wird die PID des (ersten?)
+	 * blockierenden Prozess zurückgeliefert. Sonst wird <code>null</code> geliefert.
 	 * 
 	 * @param blockedPid
 	 * @return blockingPid oder <code>null</code>
@@ -1030,22 +1020,17 @@
 	}
 
 	/**
-	 * Liefert eine Liste der aktuell laufenden Queries und ihrere Laufzeiten
-	 * zurück. Der 2. Teil der Rückgabepaare ist ein String der einem PG
-	 * Interval entspricht. Dieses kann mit der Klasse PGInterval geparst
-	 * werden.<br/>
+	 * Liefert eine Liste der aktuell laufenden Queries und ihrere Laufzeiten zurück. Der 2. Teil der Rückgabepaare ist
+	 * ein String der einem PG Interval entspricht. Dieses kann mit der Klasse PGInterval geparst werden.<br/>
 	 * 
 	 * @param datName
-	 *            <code>null</code> oder der Datenbankname, auf den die Abfrage
-	 *            gefiltert werden soll.
+	 *            <code>null</code> oder der Datenbankname, auf den die Abfrage gefiltert werden soll.
 	 * 
 	 * @param minSecondsRunning
-	 *            <code>null</code> oder die zurückgegebenen Anfragen müssen
-	 *            mindestens soviele Sekunden schon laufen.
+	 *            <code>null</code> oder die zurückgegebenen Anfragen müssen mindestens soviele Sekunden schon laufen.
 	 * 
 	 * @param filter
-	 *            0 = kein Filter, 1=Ohne IDLE, 2=Ohne IDLE und ohne 'IDLE in
-	 *            Transaction'
+	 *            0 = kein Filter, 1=Ohne IDLE, 2=Ohne IDLE und ohne 'IDLE in Transaction'
 	 */
 	static public List<SqlQueryStat> listQueries(Connection c, String datName,
 			Integer minSecondsRunning, int filter) throws SQLException {



More information about the Schmitzm-commits mailing list