added initial database install script to conferencing module; debugged database
installer system
This commit is contained in:
parent
cb7b327da8
commit
4a305dcd91
|
@ -317,6 +317,7 @@
|
||||||
</javac>
|
</javac>
|
||||||
<copy todir="workingarea/conferencing-module">
|
<copy todir="workingarea/conferencing-module">
|
||||||
<fileset dir="src/conferencing-module" includes="**/*.properties"/>
|
<fileset dir="src/conferencing-module" includes="**/*.properties"/>
|
||||||
|
<fileset dir="src/conferencing-module" includes="**/*.xml"/>
|
||||||
</copy>
|
</copy>
|
||||||
<mkdir dir="workingarea/conferencing-module/resources"/>
|
<mkdir dir="workingarea/conferencing-module/resources"/>
|
||||||
<copy todir="workingarea/conferencing-module/resources">
|
<copy todir="workingarea/conferencing-module/resources">
|
||||||
|
|
|
@ -17,11 +17,14 @@
|
||||||
*/
|
*/
|
||||||
package com.silverwrist.venice.conf.module;
|
package com.silverwrist.venice.conf.module;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
import java.security.Principal;
|
import java.security.Principal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import com.silverwrist.util.*;
|
||||||
import com.silverwrist.dynamo.Namespaces;
|
import com.silverwrist.dynamo.Namespaces;
|
||||||
import com.silverwrist.dynamo.except.*;
|
import com.silverwrist.dynamo.except.*;
|
||||||
import com.silverwrist.dynamo.iface.*;
|
import com.silverwrist.dynamo.iface.*;
|
||||||
|
import com.silverwrist.dynamo.module.DatabaseInstaller;
|
||||||
import com.silverwrist.dynamo.module.ModuleConfigurationData;
|
import com.silverwrist.dynamo.module.ModuleConfigurationData;
|
||||||
import com.silverwrist.dynamo.security.SecurityReferenceMonitor;
|
import com.silverwrist.dynamo.security.SecurityReferenceMonitor;
|
||||||
import com.silverwrist.dynamo.util.*;
|
import com.silverwrist.dynamo.util.*;
|
||||||
|
@ -45,6 +48,7 @@ public class ModuleMain implements ModuleFunctions, UseCount
|
||||||
private static final QualifiedNameKey NAME =
|
private static final QualifiedNameKey NAME =
|
||||||
new QualifiedNameKey(ConfNamespaces.CONFERENCING_NAMESPACE,"Venice.conferencing");
|
new QualifiedNameKey(ConfNamespaces.CONFERENCING_NAMESPACE,"Venice.conferencing");
|
||||||
private static final String RESOURCES = "com.silverwrist.venice.conf.module.ModuleMessages";
|
private static final String RESOURCES = "com.silverwrist.venice.conf.module.ModuleMessages";
|
||||||
|
private static final String INITSCRIPT = "database-init-${name}.xml";
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------------
|
||||||
* Attributes
|
* Attributes
|
||||||
|
@ -66,6 +70,29 @@ public class ModuleMain implements ModuleFunctions, UseCount
|
||||||
{ // do nothing
|
{ // do nothing
|
||||||
} // end constructor
|
} // end constructor
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Internal operations
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static final InputStream getInstallScript(DatabaseInstaller dinst, DynamoLog log) throws ModuleException
|
||||||
|
{
|
||||||
|
String resname = StringUtils.replaceOnce(INITSCRIPT,"${name}",dinst.getDatabaseType());
|
||||||
|
log.debug("Loading database init script " + resname);
|
||||||
|
InputStream script = ModuleMain.class.getResourceAsStream(resname);
|
||||||
|
if (script==null)
|
||||||
|
{ // whoops! script isn't there!
|
||||||
|
log.error("Unable to find database init script " + resname);
|
||||||
|
ModuleException me = new ModuleException(ModuleMain.class,"ModuleMessages","no.db.script");
|
||||||
|
me.setParameter(0,resname);
|
||||||
|
throw me;
|
||||||
|
|
||||||
|
} // end if
|
||||||
|
|
||||||
|
return script;
|
||||||
|
|
||||||
|
} // end getInstallScript
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------------
|
||||||
* Implementations from interface ModuleFunctions
|
* Implementations from interface ModuleFunctions
|
||||||
*--------------------------------------------------------------------------------
|
*--------------------------------------------------------------------------------
|
||||||
|
@ -157,6 +184,11 @@ public class ModuleMain implements ModuleFunctions, UseCount
|
||||||
|
|
||||||
ResourceBundle bun = ResourceBundle.getBundle(RESOURCES);
|
ResourceBundle bun = ResourceBundle.getBundle(RESOURCES);
|
||||||
|
|
||||||
|
// Install the database tables we need.
|
||||||
|
DatabaseInstaller dinst = (DatabaseInstaller)(services.queryService(DatabaseInstaller.class));
|
||||||
|
dinst.runInstallScript(getInstallScript(dinst,log),log);
|
||||||
|
log.info("Database install script executed successfully");
|
||||||
|
|
||||||
try
|
try
|
||||||
{ // Install our community menu options.
|
{ // Install our community menu options.
|
||||||
CommunityMenuInstaller comm_menu = new CommunityMenuInstaller(services);
|
CommunityMenuInstaller comm_menu = new CommunityMenuInstaller(services);
|
||||||
|
@ -244,6 +276,11 @@ public class ModuleMain implements ModuleFunctions, UseCount
|
||||||
|
|
||||||
} // end catch
|
} // end catch
|
||||||
|
|
||||||
|
// Uninstall our database tables.
|
||||||
|
DatabaseInstaller dinst = (DatabaseInstaller)(services.queryService(DatabaseInstaller.class));
|
||||||
|
dinst.runUninstallScript(getInstallScript(dinst,log),log);
|
||||||
|
log.info("Database uninstall script executed successfully");
|
||||||
|
|
||||||
} // end uninstall
|
} // end uninstall
|
||||||
|
|
||||||
public DynamicObject getProvidedObject(String namespace, String name) throws ModuleException
|
public DynamicObject getProvidedObject(String namespace, String name) throws ModuleException
|
||||||
|
|
|
@ -21,3 +21,4 @@ install.service.fail=Failed to install community service object: {0}
|
||||||
uninstall.service.fail=Failed to uninstall community service object: {0}
|
uninstall.service.fail=Failed to uninstall community service object: {0}
|
||||||
install.cmenu.fail=Failed to install community menu items: {0}
|
install.cmenu.fail=Failed to install community menu items: {0}
|
||||||
uninstall.cmenu.fail=Failed to uninstall community menu items: {0}
|
uninstall.cmenu.fail=Failed to uninstall community menu items: {0}
|
||||||
|
no.db.script=Unable to find the database initialization script "{0}."
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
The contents of this file are subject to the Mozilla Public License Version 1.1
|
||||||
|
(the "License"); you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
||||||
|
|
||||||
|
Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
||||||
|
WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||||
|
language governing rights and limitations under the License.
|
||||||
|
|
||||||
|
The Original Code is the Venice Web Communities System.
|
||||||
|
|
||||||
|
The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||||
|
for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||||
|
Copyright (C) 2003 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
-->
|
||||||
|
<database-info>
|
||||||
|
<command>
|
||||||
|
<install log="Creating conference table"><![CDATA[
|
||||||
|
CREATE TABLE conferences (
|
||||||
|
confid INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||||
|
createdate DATETIME NOT NULL,
|
||||||
|
lastupdate DATETIME NULL,
|
||||||
|
aclid INT NOT NULL DEFAULT -1,
|
||||||
|
highest_topic SMALLINT NOT NULL DEFAULT 0,
|
||||||
|
name VARCHAR(128) NOT NULL,
|
||||||
|
INDEX by_name (name)
|
||||||
|
);
|
||||||
|
]]></install>
|
||||||
|
<uninstall log="Dropping conference table"><![CDATA[
|
||||||
|
DROP TABLE conferences;
|
||||||
|
]]></uninstall>
|
||||||
|
</command>
|
||||||
|
<command>
|
||||||
|
<install log="Creating conference properties table"><![CDATA[
|
||||||
|
CREATE TABLE conf_props (
|
||||||
|
confid INT NOT NULL,
|
||||||
|
nsid INT NOT NULL,
|
||||||
|
prop_name VARCHAR(255) BINARY NOT NULL,
|
||||||
|
prop_value VARCHAR(255),
|
||||||
|
PRIMARY KEY (confid, nsid, prop_name)
|
||||||
|
);
|
||||||
|
]]></install>
|
||||||
|
<uninstall log="Dropping conference properties table"><![CDATA[
|
||||||
|
DROP TABLE conf_props;
|
||||||
|
]]></uninstall>
|
||||||
|
</command>
|
||||||
|
<command>
|
||||||
|
<install log="Creating conference linking table"><![CDATA[
|
||||||
|
CREATE TABLE conf_links (
|
||||||
|
cid INT NOT NULL,
|
||||||
|
confid INT NOT NULL,
|
||||||
|
sequence INT NOT NULL,
|
||||||
|
hide TINYINT NOT NULL DEFAULT 0,
|
||||||
|
PRIMARY KEY (cid, confid),
|
||||||
|
UNIQUE INDEX reverse (confid, cid),
|
||||||
|
INDEX by_display (cid, sequence)
|
||||||
|
);
|
||||||
|
]]></install>
|
||||||
|
<uninstall log="Dropping conference linking table"><![CDATA[
|
||||||
|
DROP TABLE conf_links;
|
||||||
|
]]></uninstall>
|
||||||
|
</command>
|
||||||
|
<command>
|
||||||
|
<install log="Creating conference aliases table"><![CDATA[
|
||||||
|
CREATE TABLE conf_alias (
|
||||||
|
confid INT NOT NULL,
|
||||||
|
alias VARCHAR(64) NOT NULL PRIMARY KEY,
|
||||||
|
prime TINYINT NOT NULL DEFAULT 0,
|
||||||
|
INDEX by_confid (confid)
|
||||||
|
);
|
||||||
|
]]></install>
|
||||||
|
<uninstall log="Dropping conference aliases table"><![CDATA[
|
||||||
|
DROP TABLE conf_alias;
|
||||||
|
]]></uninstall>
|
||||||
|
</command>
|
||||||
|
</database-info>
|
|
@ -195,7 +195,15 @@ class InstallerImpl implements DatabaseInstaller
|
||||||
finally
|
finally
|
||||||
{ // make sure we shut down the connection before we go
|
{ // make sure we shut down the connection before we go
|
||||||
SQLUtils.shutdown(stmt);
|
SQLUtils.shutdown(stmt);
|
||||||
SQLUtils.shutdown(conn);
|
try
|
||||||
|
{ // return this connection to the pool
|
||||||
|
if (conn!=null)
|
||||||
|
m_pool.releaseConnection(conn);
|
||||||
|
|
||||||
|
} // end try
|
||||||
|
catch (DatabaseException e)
|
||||||
|
{ // ignore the error
|
||||||
|
} // end catch
|
||||||
|
|
||||||
} // end finally
|
} // end finally
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user