newF = utils.getOfficeTemp((XMultiServiceFactory)Param.getMSF())+tableName+".dbf";
} while (!utils.overwriteFile((XMultiServiceFactory)Param.getMSF(),oldF,newF) &&
uniqueSuffix++ < 50);
}
XConnection connection = null ;
try {
xMSF = (XMultiServiceFactory)Param.getMSF();
Object oRowSet = xMSF.createInstance("com.sun.star.sdb.RowSet") ;
XPropertySet xSetProp = (XPropertySet) UnoRuntime.queryInterface
(XPropertySet.class, oRowSet) ;
log.println("Trying to open: " + tableName);
xSetProp.setPropertyValue("DataSourceName", dbSourceName) ;
xSetProp.setPropertyValue("Command", tableName) ;
xSetProp.setPropertyValue("CommandType",
new Integer(CommandType.TABLE)) ;
com.sun.star.sdbc.XRowSet xORowSet = (com.sun.star.sdbc.XRowSet)
UnoRuntime.queryInterface(com.sun.star.sdbc.XRowSet.class,
oRowSet) ;
xORowSet.execute() ;
connection = null;
try {
connection = (XConnection) AnyConverter.toObject(
new Type(XConnection.class),
xSetProp.getPropertyValue("ActiveConnection"));
} catch (com.sun.star.lang.IllegalArgumentException iae) {
throw new StatusException("couldn't convert Any",iae);
}
oInterface = oRowSet ;
XResultSet xRes = (XResultSet) UnoRuntime.queryInterface
(XResultSet.class, oRowSet) ;
xRes.first() ;
if (oInterface == null) {
log.println("Service wasn't created") ;
throw new StatusException("Service wasn't created",
new NullPointerException()) ;
}
oObj = (XInterface) oInterface;
log.println( " creating a new environment for object" );
TestEnvironment tEnv = new TestEnvironment( oObj );
// Adding relations for disposing object
tEnv.addObjRelation("ORowSet.Connection", connection) ;
this.conn = (XConnection) tEnv.getObjRelation("ORowSet.Connection");
// Adding obj relation for XRowSetApproveBroadcaster test
{
final XResultSet xResSet = (XResultSet)
UnoRuntime.queryInterface(XResultSet.class, oObj) ;
final XResultSetUpdate xResSetUpdate = (XResultSetUpdate)
UnoRuntime.queryInterface(XResultSetUpdate.class, oObj) ;
final XRowSet xRowSet = (XRowSet) UnoRuntime.queryInterface
(XRowSet.class, oObj) ;
final XRowUpdate xRowUpdate = (XRowUpdate)
UnoRuntime.queryInterface(XRowUpdate.class, oObj) ;
final PrintWriter logF = log ;
tEnv.addObjRelation("XRowSetApproveBroadcaster.ApproveChecker",
new ifc.sdb._XRowSetApproveBroadcaster.RowSetApproveChecker() {
public void moveCursor() {
try {
xResSet.beforeFirst() ;
xResSet.afterLast() ;
xResSet.first() ;
} catch (com.sun.star.sdbc.SQLException e) {
logF.println("### _XRowSetApproveBroadcaster." +
"RowSetApproveChecker.moveCursor() :") ;
e.printStackTrace(logF) ;
}
}
public RowChangeEvent changeRow() {
try {
xResSet.first() ;
xRowUpdate.updateString(1, "ORowSetTest2") ;
xResSetUpdate.updateRow() ;
} catch (com.sun.star.sdbc.SQLException e) {
logF.println("### _XRowSetApproveBroadcaster." +
"RowSetApproveChecker.changeRow() :") ;
e.printStackTrace(logF) ;
}
RowChangeEvent ev = new RowChangeEvent() ;
ev.Action = com.sun.star.sdb.RowChangeAction.UPDATE ;
ev.Rows = 1 ;
return ev ;
}
public void changeRowSet() {
try {
xRowSet.execute() ;
xResSet.first() ;
} catch (com.sun.star.sdbc.SQLException e) {
logF.println("### _XRowSetApproveBroadcaster."+
"RowSetApproveChecker.changeRowSet() :") ;
e.printStackTrace(logF) ;
}
}
}) ;
}
// Adding relations for XRow as a Vector with all data
// of current row of RowSet.
Vector rowData = new Vector() ;
for (int i = 0; i < DBTools.TST_TABLE_VALUES[0].length; i++) {
rowData.add(DBTools.TST_TABLE_VALUES[0][i]) ;
}
// here XRef must be added
// here XBlob must be added
// here XClob must be added
// here XArray must be added
tEnv.addObjRelation("CurrentRowData", rowData) ;
// Adding relation for XColumnLocate ifc test
tEnv.addObjRelation("XColumnLocate.ColumnName",
DBTools.TST_STRING_F) ;
// Adding relation for XCompletedExecution
tEnv.addObjRelation("InteractionHandlerChecker", new InteractionHandlerImpl());
XPropertySet xProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, oObj) ;
try {
xProp.setPropertyValue("DataSourceName", dbSourceName) ;
if(isMySQLDB) {
xProp.setPropertyValue("Command", "SELECT Column0 FROM soffice_test_table WHERE ( ( Column0 = :param1 ) )");
}
else {
xProp.setPropertyValue("Command", "SELECT \"_TEXT\" FROM \"ORowSet_tmp" + uniqueSuffix + "\" WHERE ( ( \"_TEXT\" = :param1 ) )");
}
xProp.setPropertyValue("CommandType", new Integer(CommandType.COMMAND)) ;
}
catch(Exception e) {
}
// Adding relation for XParameters ifc test
Vector params = new Vector() ;
tEnv.addObjRelation("XParameters.ParamValues", params) ;
// Adding relation for XRowUpdate
XRow row = (XRow) UnoRuntime.queryInterface (XRow.class, oObj) ;
tEnv.addObjRelation("XRowUpdate.XRow", row) ;
// Adding relation for XResultSetUpdate
{
final XResultSet xResSet = (XResultSet)
UnoRuntime.queryInterface(XResultSet.class, oObj) ;
final XRowUpdate xRowUpdate = (XRowUpdate)
UnoRuntime.queryInterface(XRowUpdate.class, oObj) ;
final XRow xRow = (XRow) UnoRuntime.queryInterface
(XRow.class, oObj) ;
tEnv.addObjRelation("XResultSetUpdate.UpdateTester",
new ifc.sdbc._XResultSetUpdate.UpdateTester() {
String lastUpdate = null ;
public int rowCount() throws SQLException {
int prevPos = xResSet.getRow() ;
xResSet.last() ;
int count = xResSet.getRow() ;
xResSet.absolute(prevPos) ;
return count ;
}
public void update() throws SQLException {
lastUpdate = xRow.getString(1) ;
lastUpdate += "_" ;
xRowUpdate.updateString(1, lastUpdate) ;
}
public boolean wasUpdated() throws SQLException {
String getStr = xRow.getString(1) ;
return lastUpdate.equals(getStr) ;
}
public int currentRow() throws SQLException {
return xResSet.getRow() ;
}
}) ;
}
envCreatedOK = true ;
return tEnv;
} catch(com.sun.star.uno.Exception e) {
log.println("Can't create object" );
e.printStackTrace(log) ;
try {
connection.close() ;
} catch(Exception ex) {}
throw new StatusException("Can't create object", e) ;
} finally {
if (!envCreatedOK) {
try {
connection.close() ;
} catch(Exception ex) {}
}
}
} // finish method getTestEnvironment