541 lines
22 KiB
Java
541 lines
22 KiB
Java
package convwatch;
|
|
|
|
import java.sql.Connection;
|
|
import java.util.StringTokenizer;
|
|
import java.util.ArrayList;
|
|
import helper.OSHelper;
|
|
|
|
// import convwatch.DBHelper;
|
|
|
|
public class DB extends DBHelper
|
|
{
|
|
private static DB m_aDB = null;
|
|
|
|
// private ctor
|
|
private DB()
|
|
{
|
|
}
|
|
|
|
private static synchronized DB getDB()
|
|
{
|
|
if (m_aDB == null)
|
|
{
|
|
m_aDB = new DB();
|
|
}
|
|
return m_aDB;
|
|
}
|
|
|
|
private String m_sSourceVersion;
|
|
private String m_sDestinationVersion;
|
|
private String m_sDocumentPool;
|
|
private String m_sEnvironment;
|
|
private String m_sDocID;
|
|
private String m_sDBDistinct;
|
|
|
|
public static void init(String _sDBInfoString)
|
|
{
|
|
if (_sDBInfoString == null) return;
|
|
getDB().fillVariables(_sDBInfoString);
|
|
getDB().updatestate_status("source started");
|
|
}
|
|
|
|
public static void test()
|
|
{
|
|
getDB().sql_test();
|
|
}
|
|
|
|
public static void source_start()
|
|
{
|
|
getDB().updatestate_status("source started");
|
|
}
|
|
|
|
public static void source_finished()
|
|
{
|
|
getDB().updatestate_status( "source finished");
|
|
}
|
|
|
|
public static void source_failed(String _sMessage)
|
|
{
|
|
getDB().updatestate_status("source failed");
|
|
getDB().updateinfo_status(_sMessage);
|
|
}
|
|
|
|
public static void destination_start()
|
|
{
|
|
getDB().updatestate_status("destination started");
|
|
}
|
|
|
|
public static void destination_finished()
|
|
{
|
|
getDB().updatestate_status("PASSED-OK");
|
|
}
|
|
|
|
public static void destination_failed(String _sStatus, String _sMessage)
|
|
{
|
|
getDB().updatestate_status(_sStatus);
|
|
getDB().updateinfo_status(_sMessage);
|
|
}
|
|
public static void writeNumberOfPages(int _nPages)
|
|
{
|
|
getDB().updatepagecount_documents(_nPages);
|
|
}
|
|
public static void writeErrorFile(String _sErrorFile)
|
|
{
|
|
getDB().updateerrorfile_status(_sErrorFile);
|
|
}
|
|
public static void writeHTMLFile(String _sHTMLFile)
|
|
{
|
|
getDB().updatehtmlfile_status(_sHTMLFile);
|
|
}
|
|
|
|
public static void writeToDB(String _sFilename,
|
|
String _sBasename,
|
|
String _sFileFormat,
|
|
String _sBuildID,
|
|
String _sSourceType,
|
|
int _nResolution )
|
|
{
|
|
GlobalLogWriter.get().println("DB: Filename:" + _sFilename);
|
|
GlobalLogWriter.get().println("DB: Basename:" + _sBasename);
|
|
GlobalLogWriter.get().println("DB: FileFormat:" + _sFileFormat);
|
|
GlobalLogWriter.get().println("DB: BuildID:" + _sBuildID);
|
|
GlobalLogWriter.get().println("DB: SourceType:" + _sSourceType);
|
|
GlobalLogWriter.get().println("DB: Resolution:" + _nResolution);
|
|
}
|
|
|
|
private String getEnvironment()
|
|
{
|
|
if (OSHelper.isWindows())
|
|
{
|
|
return "wntmsci";
|
|
}
|
|
else if ( OSHelper.isSolarisIntel())
|
|
{
|
|
return "unxsoli";
|
|
}
|
|
else if ( OSHelper.isSolarisSparc())
|
|
{
|
|
return "unxsols";
|
|
}
|
|
else if ( OSHelper.isLinuxIntel())
|
|
{
|
|
return "unxlngi";
|
|
}
|
|
else
|
|
{
|
|
GlobalLogWriter.get().println("DB: Unknown environment.");
|
|
GlobalLogWriter.get().println("DB: os.name := " + System.getProperty("os.name").toLowerCase());
|
|
GlobalLogWriter.get().println("DB: os.arch := " + System.getProperty("os.arch"));
|
|
return "";
|
|
}
|
|
}
|
|
|
|
// fill some db access important variables with values given out of a simple string
|
|
// DOC_COMPARATOR_DB_INFO_STRING=p:m220,c:m224,d:demo_lla,src:m220,dest:m224,doc:demo_lla,id:294,distinct:81
|
|
|
|
private void fillVariables(String _sInfo)
|
|
{
|
|
fillDBConnection(_sInfo);
|
|
m_sEnvironment = getEnvironment();
|
|
|
|
StringTokenizer aTokenizer = new StringTokenizer(_sInfo,",",false);
|
|
while (aTokenizer.hasMoreTokens())
|
|
{
|
|
String sPart = aTokenizer.nextToken();
|
|
if (sPart.startsWith("p:"))
|
|
{
|
|
m_sSourceVersion = sPart.substring(2);
|
|
GlobalLogWriter.get().println("DB: source version: " + m_sSourceVersion);
|
|
}
|
|
else if (sPart.startsWith("src:"))
|
|
{
|
|
m_sSourceVersion = sPart.substring(4);
|
|
GlobalLogWriter.get().println("DB: source version: " + m_sSourceVersion);
|
|
}
|
|
else if (sPart.startsWith("c:"))
|
|
{
|
|
m_sDestinationVersion = sPart.substring(2);
|
|
GlobalLogWriter.get().println("DB: destination version: " + m_sDestinationVersion);
|
|
}
|
|
else if (sPart.startsWith("dest:"))
|
|
{
|
|
m_sDestinationVersion = sPart.substring(5);
|
|
GlobalLogWriter.get().println("DB: destination version: " + m_sDestinationVersion);
|
|
}
|
|
else if (sPart.startsWith("d:"))
|
|
{
|
|
m_sDocumentPool = sPart.substring(2);
|
|
GlobalLogWriter.get().println("DB: documentpool version: " + m_sDocumentPool);
|
|
}
|
|
else if (sPart.startsWith("doc:"))
|
|
{
|
|
m_sDocumentPool = sPart.substring(4);
|
|
GlobalLogWriter.get().println("DB: documentpool version: " + m_sDocumentPool);
|
|
}
|
|
else if (sPart.startsWith("id:"))
|
|
{
|
|
m_sDocID = sPart.substring(3);
|
|
GlobalLogWriter.get().println("DB: docid: " + m_sDocID);
|
|
}
|
|
else if (sPart.startsWith("distinct:"))
|
|
{
|
|
m_sDBDistinct = sPart.substring(9);
|
|
GlobalLogWriter.get().println("DB: distinct: " + m_sDBDistinct);
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
}
|
|
|
|
// public static void insertinto_file(String _sFilename,
|
|
// String _sBasename,
|
|
// String _sFileFormat,
|
|
// String _sBuildID,
|
|
// String _sSourceType,
|
|
// int _nResolution )
|
|
// {
|
|
// Connection aCon = new ShareConnection().getConnection();
|
|
//
|
|
// String sFilename = _sFilename.replace('\\', '/');
|
|
//
|
|
// String sDeleteOld = "DELETE FROM file WHERE filename = " + Quote(sFilename);
|
|
// ExecSQL(aCon, sDeleteOld);
|
|
//
|
|
// String sValueLine = "type, filename, basename, fileformat, buildid, resolution, date";
|
|
// StringBuffer aDataLine = new StringBuffer();
|
|
// aDataLine.append( Quote(_sSourceType) ) . append( sComma ) .
|
|
// append( Quote( sFilename) ) . append( sComma ) .
|
|
// append( Quote( _sBasename) ) . append( sComma ) .
|
|
// append( Quote( _sFileFormat) ) . append( sComma ) .
|
|
// append( Quote( _sBuildID) ) . append( sComma ) .
|
|
// append( _nResolution) . append( sComma ) .
|
|
// append( Quote( today() ) );
|
|
//
|
|
// SQLinsertValues(aCon, "file", sValueLine, aDataLine.toString());
|
|
// }
|
|
|
|
// public static void updatestate_currentdocs(String _sFilename,
|
|
// String _sState)
|
|
// {
|
|
// Connection aCon = new ShareConnection().getConnection();
|
|
//
|
|
// String sFilename = _sFilename.replace('\\', '/');
|
|
//
|
|
// // String sDeleteOld = "DELETE FROM file WHERE filename = " + Quote(sFilename);
|
|
// // ExecSQL(aCon, sDeleteOld);
|
|
//
|
|
// String sSet = "state=" + Quote(_sState);
|
|
// String sWhere = getWhereClause() + sAND + "name=" + Quote(sFilename);
|
|
// SQLupdateValue( aCon, "currentdocs", sSet, sWhere );
|
|
// }
|
|
|
|
private void sql_test()
|
|
{
|
|
String sUUID = getDBDistinct();
|
|
System.out.println("UUID: " + sUUID);
|
|
}
|
|
|
|
public ArrayList QuerySQL(Connection _aCon, String _sSQL)
|
|
{
|
|
java.sql.Statement oStmt = null;
|
|
Connection oCon = null;
|
|
ArrayList aResultList = new ArrayList();
|
|
try
|
|
{
|
|
oStmt = _aCon.createStatement();
|
|
|
|
java.sql.ResultSet aResultSet = oStmt.executeQuery(_sSQL);
|
|
java.sql.ResultSetMetaData aResultSetMetaData = aResultSet.getMetaData();
|
|
|
|
int nColumnCount = aResultSetMetaData.getColumnCount(); // java sql starts with '1'
|
|
// String[] aColumnName = new String[nColumnCount];
|
|
// for(int i=1;i<nColumnCount;i++)
|
|
// {
|
|
// String aColumnName[i - 1] = aResultSetMetaData.getColumnName(i);
|
|
// }
|
|
|
|
while( aResultSet.next() )
|
|
{
|
|
StringBuffer aResult = new StringBuffer();
|
|
try
|
|
{
|
|
Object aObj = null;
|
|
|
|
|
|
aResult.append("sqlresult: ");
|
|
for (int i=1;i<=nColumnCount;i++)
|
|
{
|
|
String sColumnName = aResultSetMetaData.getColumnName(i);
|
|
aResult.append(sColumnName).append("=");
|
|
String sValue;
|
|
int nSQLType = aResultSetMetaData.getColumnType(i);
|
|
switch(nSQLType)
|
|
{
|
|
case java.sql.Types.VARCHAR:
|
|
sValue = "'" + aResultSet.getString(i) + "'";
|
|
break;
|
|
case java.sql.Types.INTEGER:
|
|
{
|
|
int nValue = aResultSet.getInt(i);
|
|
sValue = String.valueOf(nValue);
|
|
break;
|
|
}
|
|
|
|
default:
|
|
sValue = "UNSUPPORTED TYPE";
|
|
}
|
|
aResult.append(sValue).append(", ");
|
|
// String sName = aObj.getClass().getName();
|
|
// System.out.println("sqlresult: Class name: " + sName);
|
|
}
|
|
String sResult = aResult.toString();
|
|
aResultList.add(sResult);
|
|
// System.out.println(sResult);
|
|
}
|
|
catch (java.sql.SQLException e)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
catch (java.sql.SQLException e)
|
|
{
|
|
String sError = e.getMessage();
|
|
GlobalLogWriter.get().println("DB: Original SQL error: " + sError);
|
|
// throw new ValueNotFoundException("Cant execute SQL: " + _sSQL);
|
|
}
|
|
return aResultList;
|
|
}
|
|
|
|
private void updatestate_status(String _sStatus)
|
|
{
|
|
Connection aCon = new ShareConnection().getConnection();
|
|
|
|
// String sInfo = _sInfo.replace('\\', '/');
|
|
|
|
// String sDeleteOld = "DELETE FROM file WHERE filename = " + Quote(sFilename);
|
|
// ExecSQL(aCon, sDeleteOld);
|
|
|
|
String sSet = "state=" + Quote(_sStatus);
|
|
String sWhere = getWhereClause();
|
|
if (sWhere.length() > 0)
|
|
{
|
|
SQLupdateValue( aCon, "status", sSet, sWhere );
|
|
}
|
|
}
|
|
private void updateinfo_status(String _sInfo)
|
|
{
|
|
Connection aCon = new ShareConnection().getConnection();
|
|
|
|
// String sInfo = _sInfo.replace('\\', '/');
|
|
|
|
// String sDeleteOld = "DELETE FROM file WHERE filename = " + Quote(sFilename);
|
|
// ExecSQL(aCon, sDeleteOld);
|
|
|
|
String sSet = "info=" + Quote(_sInfo);
|
|
String sWhere = getWhereClause();
|
|
SQLupdateValue( aCon, "status", sSet, sWhere );
|
|
}
|
|
private void updateerrorfile_status(String _sErrorFile)
|
|
{
|
|
Connection aCon = new ShareConnection().getConnection();
|
|
|
|
String sErrorFile = _sErrorFile.replace('\\', '/');
|
|
|
|
String sSet = "errorfile=" + Quote(sErrorFile);
|
|
String sWhere = getWhereClause();
|
|
SQLupdateValue( aCon, "status", sSet, sWhere );
|
|
}
|
|
private void updatehtmlfile_status(String _sHtmlFile)
|
|
{
|
|
Connection aCon = new ShareConnection().getConnection();
|
|
|
|
String sHtmlFile = _sHtmlFile.replace('\\', '/');
|
|
|
|
String sSet = "htmlfile=" + Quote(sHtmlFile);
|
|
String sWhere = getWhereClause();
|
|
SQLupdateValue( aCon, "status", sSet, sWhere );
|
|
}
|
|
private void updatepagecount_documents(int _nPageCount)
|
|
{
|
|
Connection aCon = new ShareConnection().getConnection();
|
|
|
|
String sSet = "pagecount=" + _nPageCount;
|
|
String sWhere = getWhereClause();
|
|
SQLupdateValue( aCon, "documents", sSet, sWhere );
|
|
|
|
}
|
|
|
|
|
|
private String getWhereClause()
|
|
{
|
|
StringBuffer aWhereClause = new StringBuffer();
|
|
// WHERE environment='' and referenceversion='' and currentversion='' and documentpool=''
|
|
// aWhere.append( "environment" ). append(sEqual) . append(Quote(m_sEnvironment)) .
|
|
// append(sAND) .
|
|
// append( "referenceversion" ). append(sEqual) . append(Quote(m_sSourceVersion)) .
|
|
// append(sAND) .
|
|
// append( "currentversion" ). append(sEqual) . append(Quote(m_sDestinationVersion)) .
|
|
// append(sAND) .
|
|
// append( "documentpool" ). append(sEqual) . append(Quote(m_sDocumentPool));
|
|
boolean bAND = false;
|
|
if (m_sDocID != null)
|
|
{
|
|
aWhereClause.append( "docid" ). append(sEqual) . append(m_sDocID);
|
|
bAND = true;
|
|
}
|
|
if (bAND)
|
|
{
|
|
aWhereClause.append(sAND);
|
|
}
|
|
if (m_sDBDistinct != null)
|
|
{
|
|
aWhereClause.append( "dbdistinct2" ). append(sEqual) . append(Quote(m_sDBDistinct));
|
|
}
|
|
return aWhereClause.toString();
|
|
}
|
|
|
|
private String getDBDistinct()
|
|
{
|
|
Connection aCon = new ShareConnection().getConnection();
|
|
|
|
String sSQL = "SELECT uuid()";
|
|
ArrayList aResultList = QuerySQL(aCon, sSQL);
|
|
|
|
for (int i=0;i<aResultList.size();i++)
|
|
{
|
|
String sResult = (String)aResultList.get(i);
|
|
|
|
StringTokenizer aTokenizer = new StringTokenizer(sResult,",",false);
|
|
while (aTokenizer.hasMoreTokens())
|
|
{
|
|
String sToken = aTokenizer.nextToken();
|
|
// System.out.println("PART: " + sToken);
|
|
int nIndex = sToken.indexOf("uuid()=");
|
|
// System.out.println("Index " + nIndex);
|
|
int nIndexTuettel = sToken.indexOf("'", nIndex);
|
|
// System.out.println("IndexTuettel " + nIndexTuettel);
|
|
int nIndexTuettel2 = sToken.lastIndexOf("'");
|
|
// System.out.println("IndexTuettel2 " + nIndexTuettel2);
|
|
String sUuid = sToken.substring(nIndexTuettel + 1, nIndexTuettel2);
|
|
// if (sPart.startsWith("p:"))
|
|
// {
|
|
// m_sSourceVersion = sPart.substring(2);
|
|
// GlobalLogWriter.get().println("DB: source version: " + m_sSourceVersion);
|
|
// }
|
|
return sUuid;
|
|
}
|
|
// System.out.println(sResult);
|
|
}
|
|
|
|
return "0";
|
|
}
|
|
|
|
public static void insertinto_documentcompare(String _sSourceVersion, String _sSourceName, String _sSourceCreatorType,
|
|
String _sDestinationVersion, String _sDestinationName, String _sDestinationCreatorType,
|
|
String _sDocumentPoolDir, String _sDocumentPoolName, String _sMailAddress,
|
|
String _sSpecial, String _sParentDistinct)
|
|
{
|
|
getDB().insertinto_documentcompare_impl( _sSourceVersion, _sSourceName, _sSourceCreatorType,
|
|
_sDestinationVersion, _sDestinationName, _sDestinationCreatorType,
|
|
_sDocumentPoolDir, _sDocumentPoolName, _sMailAddress,
|
|
_sSpecial, _sParentDistinct);
|
|
}
|
|
|
|
private void insertinto_documentcompare_impl(String _sSourceVersion, String _sSourceName, String _sSourceCreatorType,
|
|
String _sDestinationVersion, String _sDestinationName, String _sDestinationCreatorType,
|
|
String _sDocumentPoolDir, String _sDocumentPoolName, String _sMailAddress,
|
|
String _sSpecial, String _sParentDistinct)
|
|
{
|
|
// $sSQLInsert = "INSERT INTO documentcompare
|
|
if (_sParentDistinct == null)
|
|
{
|
|
_sParentDistinct = "";
|
|
}
|
|
|
|
Connection aCon = new ShareConnection().getConnection();
|
|
|
|
String sValueLine="dbdistinct2, environment, sourceversion, sourcename, sourcecreatortype, destinationversion, destinationname, destinationcreatortype, documentpoolpath, documentpool, mailfeedback, state, special, parentdistinct, startdate";
|
|
String sDocumentPoolDir = _sDocumentPoolDir.replace('\\', '/');
|
|
StringBuffer aDataLine = new StringBuffer();
|
|
aDataLine.append( Quote(getDBDistinct()) ) . append( sComma ) .
|
|
append( Quote( getEnvironment()) ) . append( sComma ) .
|
|
append( Quote( _sSourceVersion) ) . append( sComma ) .
|
|
append( Quote( _sSourceName) ) . append( sComma ) .
|
|
append( Quote( _sSourceCreatorType ) ) . append( sComma ) .
|
|
append( Quote( _sDestinationVersion) ) . append( sComma ) .
|
|
append( Quote( _sDestinationName) ) . append( sComma ) .
|
|
append( Quote( _sDestinationCreatorType ) ) . append( sComma ) .
|
|
append( Quote( sDocumentPoolDir) ) . append( sComma ) .
|
|
append( Quote( _sDocumentPoolName) ) . append( sComma ) .
|
|
append( Quote( _sMailAddress) ) . append( sComma ) .
|
|
append( Quote( "new" )) . append ( sComma ) .
|
|
append( Quote( _sSpecial ) ) . append( sComma ) .
|
|
append( Quote( _sParentDistinct ) ) . append( sComma ) .
|
|
append( Quote( today() ));
|
|
|
|
SQLinsertValues(aCon, "documentcompare", sValueLine, aDataLine.toString());
|
|
}
|
|
|
|
// public static void filesRemove(String _sDBInfoString)
|
|
// {
|
|
// if (_sDBInfoString == null) return;
|
|
// fillVariables(_sDBInfoString);
|
|
//
|
|
// Connection aCon = new ShareConnection().getConnection();
|
|
//
|
|
// String sDeleteSQL = "DELETE FROM currentdocs WHERE " + getWhereClause();
|
|
//
|
|
// ExecSQL(aCon, sDeleteSQL);
|
|
// }
|
|
//
|
|
// public static void fileInsert(String _sDBInfoString,
|
|
// String _sFilename,
|
|
// String _sRemovePath)
|
|
// {
|
|
// if (_sDBInfoString == null) return;
|
|
// fillVariables(_sDBInfoString);
|
|
//
|
|
// String sFilename = _sFilename.replace('\\', '/');
|
|
//
|
|
// Connection aCon = new ShareConnection().getConnection();
|
|
//
|
|
// String sValueLine = "environment, referenceversion, currentversion, documentpool, name, state";
|
|
// StringBuffer aDataLine = new StringBuffer();
|
|
// aDataLine.append( Quote(m_sEnvironment) ) . append( sComma ) .
|
|
// append( Quote( m_sSourceVersion) ) . append( sComma ) .
|
|
// append( Quote( m_sDestinationVersion) ) . append( sComma ) .
|
|
// append( Quote( m_sDocumentPool) ) . append( sComma ) .
|
|
// append( Quote( sFilename) ) . append( sComma ) .
|
|
// append( Quote( "undone"));
|
|
//
|
|
// SQLinsertValues(aCon, "currentdocs", sValueLine, aDataLine.toString());
|
|
// }
|
|
|
|
|
|
// public static void insertinto_file(String _sFilename, String _sFileFormat, String _sBuildID)
|
|
// {
|
|
// Connection aCon = new ShareConnection().getConnection();
|
|
//
|
|
// String sValueLine = "type, filename, fileformat, buildid, date";
|
|
// StringBuffer aDataLine = new StringBuffer();
|
|
// aDataLine.append( "1" ) . append( sComma ) .
|
|
// append( Quote( _sFilename) ) . append( sComma ) .
|
|
// append( Quote( _sFileFormat) ) . append( sComma ) .
|
|
// append( Quote( _sBuildID) ) . append( sComma ) .
|
|
// append( Quote( today() ) );
|
|
//
|
|
// SQLinsertValues(aCon, "file", sValueLine, aDataLine.toString());
|
|
// }
|
|
|
|
// public static void main( String[] args )
|
|
// {
|
|
//
|
|
// String _sFilename = "";
|
|
// String _sFileFormat = "";
|
|
// String _sBuildID = "";
|
|
//
|
|
// // insertinto_file("c:\temp\test.txt", "test", "txt", "nix", "", 0);
|
|
// fillVariables("p:m128,c:m134,d:demo");
|
|
// }
|
|
}
|