001: //==============================================================================
002: //===
003: //=== McKoiDB
004: //===
005: //==============================================================================
006: //=== Copyright (C) 2001-2007 Food and Agriculture Organization of the
007: //=== United Nations (FAO-UN), United Nations World Food Programme (WFP)
008: //=== and United Nations Environment Programme (UNEP)
009: //===
010: //=== This program is free software; you can redistribute it and/or modify
011: //=== it under the terms of the GNU General Public License as published by
012: //=== the Free Software Foundation; either version 2 of the License, or (at
013: //=== your option) any later version.
014: //===
015: //=== This program is distributed in the hope that it will be useful, but
016: //=== WITHOUT ANY WARRANTY; without even the implied warranty of
017: //=== MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
018: //=== General Public License for more details.
019: //===
020: //=== You should have received a copy of the GNU General Public License
021: //=== along with this program; if not, write to the Free Software
022: //=== Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
023: //===
024: //=== Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
025: //=== Rome - Italy. email: geonetwork@osgeo.org
026: //==============================================================================
027:
028: package org.fao.geonet.util;
029:
030: import com.mckoi.database.control.DBConfig;
031: import com.mckoi.database.control.DBController;
032: import com.mckoi.database.control.DBSystem;
033: import com.mckoi.database.control.DefaultDBConfig;
034: import com.mckoi.database.control.TCPJDBCServer;
035: import java.io.File;
036: import java.io.IOException;
037: import java.net.InetAddress;
038:
039: //==============================================================================
040:
041: public class McKoiDB {
042: private String _configFile;
043: private DBSystem _database;
044: private TCPJDBCServer _server;
045:
046: //---------------------------------------------------------------------------
047: //---
048: //--- API methods
049: //---
050: //---------------------------------------------------------------------------
051:
052: public void setConfigFile(String file) {
053: _configFile = file;
054: }
055:
056: //---------------------------------------------------------------------------
057:
058: public void start() throws Exception {
059: DBConfig config = getDBConfig();
060:
061: DBController controller = DBController.getDefault();
062: _database = controller.startDatabase(config);
063:
064: _server = new TCPJDBCServer(_database);
065: _server.start();
066: }
067:
068: //---------------------------------------------------------------------------
069:
070: public void start(String address) throws Exception {
071:
072: DBConfig config = getDBConfig();
073:
074: int port = Integer
075: .parseInt(config.getValue("jdbc_server_port"));
076:
077: DBController controller = DBController.getDefault();
078: _database = controller.startDatabase(config);
079:
080: _server = new TCPJDBCServer(_database, InetAddress
081: .getByName(address), port);
082: _server.start();
083: }
084:
085: //---------------------------------------------------------------------------
086:
087: public void stop() {
088: _server.stop();
089: _database.close();
090: }
091:
092: //---------------------------------------------------------------------------
093:
094: public void create(String username, String password)
095: throws Exception {
096: DBConfig config = getDBConfig();
097:
098: DBController controller = DBController.getDefault();
099: DBSystem database = controller.createDatabase(config, username,
100: password);
101:
102: database.close();
103: }
104:
105: //---------------------------------------------------------------------------
106: //---
107: //--- Private methods
108: //---
109: //---------------------------------------------------------------------------
110:
111: private DBConfig getDBConfig() throws Exception {
112: if (_configFile == null)
113: throw new NullPointerException("ConfigFile not specified.");
114:
115: File configFile = new File(_configFile).getAbsoluteFile();
116: File rootFile = configFile.getParentFile();
117:
118: DefaultDBConfig config = new DefaultDBConfig(rootFile);
119:
120: try {
121: config.loadFromFile(configFile);
122: return config;
123: } catch (IOException ex) {
124: throw new Exception("Unable to open the db.conf file", ex);
125: }
126: }
127: }
128:
129: //==============================================================================
|