src/Pure/General/postgresql.scala
author wenzelm
Wed, 08 Feb 2017 21:04:18 +0100
changeset 65000 b28bd9dfe108
child 65002 0c44e3e9126f
permissions -rw-r--r--
minimal support for PostgreSQL databases;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
65000
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/General/postgresql.scala
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
     3
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
     4
Support for PostgreSQL databases.
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
     5
*/
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
     6
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
     7
package isabelle
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
     8
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
     9
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    10
import java.sql.{DriverManager, Connection}
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    11
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    12
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    13
object PostgreSQL
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    14
{
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    15
  /** database connection **/
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    16
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    17
  val default_host = "localhost"
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    18
  val default_port = 5432
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    19
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    20
  def open_database(
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    21
    user: String,
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    22
    password: String,
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    23
    database: String = "",
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    24
    host: String = "",
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    25
    port: Int = default_port): Database =
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    26
  {
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    27
    require(user != "")
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    28
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    29
    val spec =
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    30
      (if (host != "") host else "localhost") +
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    31
      (if (port != default_port) ":" + port else "") + "/" +
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    32
      (if (database != "") database else user)
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    33
    val connection = DriverManager.getConnection("jdbc:postgresql://" + spec, user, password)
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    34
    new Database(spec, connection)
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    35
  }
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    36
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    37
  class Database private[PostgreSQL](spec: String, val connection: Connection)
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    38
  {
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    39
    override def toString: String = spec
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    40
  }
b28bd9dfe108 minimal support for PostgreSQL databases;
wenzelm
parents:
diff changeset
    41
}