public class ModelManager
extends java.lang.Object
hipergate Data Model Manager
This class is used for programatically creating the full underlying data model for hipergate Java packages.
It may be used as an alternative method to database dumps for initial data loading, or, also, as a tool for porting the data model to a new DBMS in a structured way.
Constructor and Description |
---|
ModelManager() |
Modifier and Type | Method and Description |
---|---|
void |
activateLog(boolean bActivate) |
void |
bulkLoad(java.lang.String sTableName,
java.lang.String sFilePath,
java.lang.String sEncoding)
Load a delimited text file into a database table
|
void |
clear()
Clear internal operation log
|
void |
cloneContacts(java.lang.String sContactsFilter,
java.lang.String sTargetWorkArea,
java.lang.String sNewOwnerId)
Clone a set of Contacts
Contacts are cloned by following instructions contained in contact_clon.xml file.
|
java.lang.String |
cloneWorkArea(java.lang.String sOriginWorkArea,
java.lang.String sTargetWorkArea)
Create a clone of a WorkArea
WorkAreas are cloned by following instructions contained in
com/knowgate/hipergate/datamodel/scripts/dbms/workarea_clon.xml file.
|
void |
connect(java.lang.String sDriver,
java.lang.String sUrl,
java.lang.String sSch,
java.lang.String sUsr,
java.lang.String sPwd)
Connect to database
Connection autocommit is set to ON.
|
boolean |
create(java.lang.String sModuleName)
Create a functional module
|
boolean |
createAll()
Create all modules
The created modules will be (in order):
kernel, lookups, security, jobs, categories, thesauri, products, addrbook,
forums, crm, projtrack, lists, webbuilder, shops, billing, hipermail, training
|
java.lang.String |
createCategoriesForUser(java.lang.String sUserId)
Create default categories for a user
Internally executes scripts/user_categories_create.js Java BeanShell Script contained
inside JAR file under com/knowgate/hipergate/datamodel.
|
boolean |
createDefaultDatabase()
Create a default database ready for use
All modules for the full suite will be created at the new database.
|
int |
createDomain(java.lang.String sDomainNm)
Create New Domain
Internally executes scripts/domain_create.js Java BeanShell Script contained
inside JAR file under com/knowgate/hipergate/datamodel.
|
void |
disconnect()
Disconnect from database
|
boolean |
drop(java.lang.String sModuleName)
Drop a functional module
|
boolean |
dropAll()
Drop all modules
The created modules will be (in order):
example, marketing, training, hipermail, billing, shops, webbuilder,
lists, projtrack, crm, forums, addrbook, products, thesauri, categories,
jobs, security, lookups, kernel
|
int |
dropDomain(java.lang.String sDomainNm)
Drop Domain
Drop a Domain, all its WorkAreas and associated data.
|
java.lang.String |
dropWorkArea(java.lang.String sDomainDotWorkAreaNm,
java.util.Properties oProps)
Drop WorkArea
THIS METHOD DROPS ALL WORKAREA DATA.
|
void |
executeSQLScript(java.lang.String sScriptSource,
java.lang.String sDelimiter) |
int |
fixTranslationColumns() |
java.sql.Connection |
getConnection()
Get reference to opened database connection
|
java.lang.String |
getEncoding() |
java.lang.String |
getResourceAsString(java.lang.String sResourcePath,
java.lang.String sEncoding)
Get an embedded resource file as a String
|
static void |
main(java.lang.String[] argv)
Method for calling ModelManager from the command line
Usage:
java com.knowgate.hipergate.datamodel.ModelManager /etc/hipergate.cnf command module [domain_name|domain_name.workarea_name] [verbose] Path "/etc/hipergate.cnf" must point to where hipergate.cnf file is located. |
void |
recompileOrcl()
Re-compile invalid objects for an Oracle database
|
java.lang.String |
report()
Print internal operation log to a String
|
void |
scriptData(java.lang.String sTableName,
java.lang.String sWhere,
java.lang.String sFilePath)
Create INSERT SQL statements for the data of a table
|
void |
setConnection(java.sql.Connection oJDBCConn)
Assign an external conenction to ModelManager
Use this method when ModelManager must not connect itself to database but
reuse an already existing connection.
|
void |
setEncoding(java.lang.String sCharset) |
boolean |
stopOnError()
Get whether or not create() and drop() methods will stop on error
|
void |
stopOnError(boolean bStop)
Set whether or not create() and drop() methods should stop on error
|
java.lang.String |
translate(java.lang.String sSQL)
Translate SQL statement for a particular DBMS
|
void |
truncate(java.lang.String sTableName)
Truncate table
|
void |
upgrade(java.lang.String sOldVersion,
java.lang.String sNewVersion,
java.util.Properties oProps) |
public void activateLog(boolean bActivate)
public java.lang.String getEncoding()
public void setEncoding(java.lang.String sCharset)
public void stopOnError(boolean bStop)
Set whether or not create() and drop() methods should stop on error
bStop
- true=stop on error, false=don not stoppublic boolean stopOnError()
Get whether or not create() and drop() methods will stop on error
public void connect(java.lang.String sDriver, java.lang.String sUrl, java.lang.String sSch, java.lang.String sUsr, java.lang.String sPwd) throws java.sql.SQLException, java.lang.ClassNotFoundException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException
Connect to database
Connection autocommit is set to ON.sDriver
- JDBC driver class namesUrl
- Database URLsUsr
- Database UsersPwd
- Database Passwordjava.sql.SQLException
java.lang.ClassNotFoundException
- If class for JDBC driver is not foundjava.lang.IllegalStateException
- If already connected to databasejava.lang.UnsupportedOperationException
- If DBMS is not recognized,
currently only Oracle, Microsoft SQL Server and PostgreSQL are recognized.public void disconnect() throws java.sql.SQLException
Disconnect from database
java.sql.SQLException
public void setConnection(java.sql.Connection oJDBCConn) throws java.sql.SQLException, java.lang.UnsupportedOperationException, java.lang.NullPointerException
Assign an external conenction to ModelManager
Use this method when ModelManager must not connect itself to database but reuse an already existing connection.oJDBCConn
- Database Connectionjava.sql.SQLException
java.lang.UnsupportedOperationException
- If DBMS is not recognizedjava.lang.NullPointerException
- if oJDBCConn is nullpublic void clear()
public java.sql.Connection getConnection()
public java.lang.String report()
public java.lang.String translate(java.lang.String sSQL) throws java.lang.NullPointerException
Translate SQL statement for a particular DBMS
sSQL
- SQL to be translatedjava.lang.NullPointerException
- if sSQL is nullpublic void bulkLoad(java.lang.String sTableName, java.lang.String sFilePath, java.lang.String sEncoding) throws java.sql.SQLException, java.io.IOException, java.io.FileNotFoundException, java.io.UnsupportedEncodingException, java.lang.NumberFormatException, java.lang.ArrayIndexOutOfBoundsException, java.text.ParseException
sTableName
- String Fully qualified table namesFilePath
- String File PathsEncoding
- String File Character encodingjava.sql.SQLException
java.text.ParseException
java.lang.NumberFormatException
java.io.IOException
java.io.FileNotFoundException
java.io.UnsupportedEncodingException
java.lang.ArrayIndexOutOfBoundsException
public void truncate(java.lang.String sTableName) throws java.sql.SQLException
sTableName
- String Table namejava.sql.SQLException
public void executeSQLScript(java.lang.String sScriptSource, java.lang.String sDelimiter) throws java.sql.SQLException, java.lang.InterruptedException, java.lang.IllegalArgumentException
java.sql.SQLException
java.lang.InterruptedException
java.lang.IllegalArgumentException
public boolean create(java.lang.String sModuleName) throws java.lang.IllegalStateException, java.sql.SQLException, java.io.FileNotFoundException, java.io.IOException
Create a functional module
sModuleName
- Name of module to create { kernel | lookups | security |
jobs | thesauri | categories | products | addrbook | webbuilder | crm |
lists | shops | projtrack | billing | hipermail | marketing }java.lang.IllegalStateException
- If not connected to databasejava.io.FileNotFoundException
- If any of the internal files for module is not foundjava.sql.SQLException
java.io.IOException
public boolean drop(java.lang.String sModuleName) throws java.lang.IllegalStateException, java.sql.SQLException, java.io.FileNotFoundException, java.io.IOException
Drop a functional module
sModuleName
- Name of module to drop { kernel | lookups | security |
jobs | thesauri | categories | products | addrbook | webbuilder | crm |
lists | shops | projtrack | billing | hipermail }java.lang.IllegalStateException
java.sql.SQLException
java.io.FileNotFoundException
java.io.IOException
public boolean createAll() throws java.lang.IllegalStateException, java.sql.SQLException, java.io.FileNotFoundException, java.io.IOException
Create all modules
The created modules will be (in order): kernel, lookups, security, jobs, categories, thesauri, products, addrbook, forums, crm, projtrack, lists, webbuilder, shops, billing, hipermail, trainingjava.io.FileNotFoundException
- If any of the internal files for modules are not foundjava.lang.IllegalStateException
java.sql.SQLException
java.io.IOException
public boolean dropAll() throws java.lang.IllegalStateException, java.sql.SQLException, java.io.FileNotFoundException, java.io.IOException
Drop all modules
The created modules will be (in order): example, marketing, training, hipermail, billing, shops, webbuilder, lists, projtrack, crm, forums, addrbook, products, thesauri, categories, jobs, security, lookups, kerneljava.lang.IllegalStateException
java.sql.SQLException
java.io.FileNotFoundException
java.io.IOException
public boolean createDefaultDatabase() throws java.io.FileNotFoundException, java.io.IOException, java.sql.SQLException, bsh.EvalError, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.ClassNotFoundException, org.xml.sax.SAXException
Create a default database ready for use
All modules for the full suite will be created at the new database.java.io.FileNotFoundException
- If any of the internal files for modules are not foundbsh.EvalError
- Java BeanShell script domain_create.js as a syntax errororg.xml.sax.SAXException
- Parsing error at file workarea_clon.xmljava.lang.InstantiationException
- SAX parser is not properly installedjava.lang.IllegalAccessException
- SAX parser is not properly installedjava.lang.ClassNotFoundException
- SAX parser is not properly installedjava.io.IOException
java.sql.SQLException
public void scriptData(java.lang.String sTableName, java.lang.String sWhere, java.lang.String sFilePath) throws java.sql.SQLException, java.io.IOException
sTableName
- Table NamesWhere
- SQL filter clausesFilePath
- Path for file where INSERT statements are to be writtenjava.sql.SQLException
java.io.IOException
public java.lang.String getResourceAsString(java.lang.String sResourcePath, java.lang.String sEncoding) throws java.io.FileNotFoundException, java.io.IOException
Get an embedded resource file as a String
sResourcePath
- Relative path at JAR file from com/knowgate/hipergate/datamodel/ModelManagersEncoding
- Character encoding for resource if it is a text file.java.io.FileNotFoundException
java.io.IOException
public void recompileOrcl() throws java.sql.SQLException
Re-compile invalid objects for an Oracle database
java.sql.SQLException
java.io.FileNotFoundException
java.io.IOException
public void cloneContacts(java.lang.String sContactsFilter, java.lang.String sTargetWorkArea, java.lang.String sNewOwnerId) throws java.sql.SQLException, java.io.IOException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.io.IOException, java.lang.ClassNotFoundException, org.xml.sax.SAXException
Clone a set of Contacts
Contacts are cloned by following instructions contained in contact_clon.xml file.sContactsFilter
- WHERE clause of contacts to be cloned, for cloning just one contact use "gu_contact='GUID_OF_CONTACT'"sTargetWorkArea
- GUID of WorkArea where new contact is to be writtensNewOwner
- GUID of user (from k_users table) that will be the new owner of the contact or nulljava.sql.SQLException
java.io.IOException
- XML definition file for cloning not foundjava.lang.InstantiationException
- SAX parser is not properly installedjava.lang.IllegalAccessException
- SAX parser is not properly installedjava.lang.ClassNotFoundException
- SAX parser is not properly installedorg.xml.sax.SAXException
- Parsing error at file workarea_clon.xmljava.io.IOException
public java.lang.String cloneWorkArea(java.lang.String sOriginWorkArea, java.lang.String sTargetWorkArea) throws java.sql.SQLException, java.io.IOException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.ClassNotFoundException, org.xml.sax.SAXException
Create a clone of a WorkArea
WorkAreas are cloned by following instructions contained in com/knowgate/hipergate/datamodel/scripts/dbms/workarea_clon.xml file.sOriginWorkArea
- String of the form domain_name.workarea_name,
for example "MODEL.default_workarea"sTargetWorkArea
- String of the form domain_name.workarea_name,
for example "TEST1.devel_workarea"java.sql.SQLException
- Most probably raised because data at model_default workarea is corruptedjava.lang.InstantiationException
- SAX parser is not properly installedjava.lang.IllegalAccessException
- SAX parser is not properly installedjava.lang.ClassNotFoundException
- SAX parser is not properly installedorg.xml.sax.SAXException
- Parsing error at file workarea_clon.xmljava.io.IOException
WorkArea.delete(JDCConnection,String)
public java.lang.String dropWorkArea(java.lang.String sDomainDotWorkAreaNm, java.util.Properties oProps) throws java.sql.SQLException, java.io.IOException, java.lang.Exception
Drop WorkArea
THIS METHOD DROPS ALL WORKAREA DATA. USE IT WITH CARE.sDomainDotWorkAreaNm
- Domain Name and WorkArea Name with a middle dot. Domain_Name.WorkArea_NameoProps
- Environment properties (as readed from hipergate.cnf)java.sql.SQLException
java.io.IOException
java.lang.Exception
(JDCConnection,String,java.util.Properties)
public int dropDomain(java.lang.String sDomainNm) throws bsh.EvalError, java.sql.SQLException, java.io.IOException
Drop Domain
Drop a Domain, all its WorkAreas and associated data.sDomainNm
- Name of domain to be droped.bsh.EvalError
java.sql.SQLException
java.io.IOException
ACLDomain.delete(JDCConnection,int);
public int createDomain(java.lang.String sDomainNm) throws bsh.EvalError, java.io.IOException, java.io.FileNotFoundException, java.sql.SQLException
Create New Domain
Internally executes scripts/domain_create.js Java BeanShell Script contained inside JAR file under com/knowgate/hipergate/datamodel.sDomainNm
- New Domain Namebsh.EvalError
- Java BeanShell script domain_create.js as a syntax errorjava.io.IOException
java.io.FileNotFoundException
java.sql.SQLException
public java.lang.String createCategoriesForUser(java.lang.String sUserId) throws java.io.IOException, java.io.FileNotFoundException, java.sql.SQLException
Create default categories for a user
Internally executes scripts/user_categories_create.js Java BeanShell Script contained inside JAR file under com/knowgate/hipergate/datamodel.sUserId
- User GUIDbsh.EvalError
- Java BeanShell script user_categories_create.js as a syntax errorjava.io.IOException
java.io.FileNotFoundException
java.sql.SQLException
public void upgrade(java.lang.String sOldVersion, java.lang.String sNewVersion, java.util.Properties oProps) throws java.lang.IllegalStateException, java.sql.SQLException, java.io.FileNotFoundException, java.io.IOException
java.lang.IllegalStateException
java.sql.SQLException
java.io.FileNotFoundException
java.io.IOException
public int fixTranslationColumns() throws java.sql.SQLException
java.sql.SQLException
public static void main(java.lang.String[] argv)
Method for calling ModelManager from the command line
Usage:argv
- Array of Strings with 3 to 6 elements