/* * * Copyright 2003,2004 The Watermill Team * * This file is part of Watermill. * * Watermill is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Watermill is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Watermill; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */package Watermill.relational;import Watermill.kernel.*;import java.sql.*;public class RManager extends Manager { public Connection connection; public RManager(){ String dbName=Constant.masterDBname; String dbUser=Constant.masterDBuser; String dbPassword=Constant.masterDBpassword; try { Class.forName("org.postgresql.Driver"); //load the driver connection=DriverManager.getConnection("jdbc:postgresql:"+dbName, dbUser, dbPassword); DatabaseMetaData dbmd = connection.getMetaData(); //get MetaData to confirm connection Msg.debug("Connection to "+dbmd.getDatabaseProductName()+" "+ dbmd.getDatabaseProductVersion()+" successful."); } catch (Exception e){ Msg.fatal(e.getMessage()); } pools=new Pools(new RPersistantMap(connection,Constant.poolTableName)); users=new Users(new RPersistantMap(connection,Constant.usersTableName)); broadcast=new BroadCast(new RPairPersistantMap(connection,Constant.broadCastTableName)); } public Document getDocument(String dbname,String dbuser,String dbPassword){ return new DB(dbname,dbuser,dbPassword); } public Document duplicate(Document source,String targetDbName,UserData u){ try{ Statement stm=connection.createStatement(); String query="create database "+targetDbName; Msg.debug(query); stm.execute(query); Process psql=null; String command="/bin/bash -c \"/usr/bin/pg_dump -U "+Constant.masterDBuser+" "+Constant.masterDBname+" | /usr/bin/psql -U "+Constant.masterDBuser+" "+targetDbName+"\""; command="pg_dump -U "+Constant.masterDBuser+" -f "+Constant.masterDBname+".sql "+Constant.masterDBname; Msg.debug(command); psql=Runtime.getRuntime().exec(command); psql.waitFor(); command="psql -U "+Constant.masterDBuser+" "+targetDbName+" -f "+Constant.masterDBname+".sql"; Msg.debug(command); psql=Runtime.getRuntime().exec(command); psql.waitFor(); return new DB(targetDbName,Constant.masterDBuser,Constant.masterDBpassword); }catch(Throwable e){Msg.fatal(e);return null;} }}