CWS-TOOLING: integrate CWS perftest09b

2009-07-22 08:34:25 +0200 lla  r274216 : #i103694# use bash as shell
2009-07-21 12:33:51 +0200 lla  r274178 : #160203#
2009-07-20 13:42:20 +0200 lla  r274124 : #106358# add helper tool to get access to rpm in the environment for SOI
2009-07-20 12:43:26 +0200 lla  r274119 : #i103656# compatiblity
This commit is contained in:
Jens-Heiner Rechtien
2009-07-29 13:59:06 +00:00
parent 6a839e2cd2
commit d2f490169e
10 changed files with 509 additions and 334 deletions

View File

@@ -60,12 +60,13 @@ import stats.Summarizer;
import util.DynamicClassLoader; import util.DynamicClassLoader;
/** /**
* The testbase for executing basic tests. * The testbase for executing basic tests.
* @see lib.TestBase * @see lib.TestBase
*/ */
public class basic_fat implements TestBase { public class basic_fat implements TestBase
{
public static boolean debug = false; public static boolean debug = false;
/** /**
@@ -73,7 +74,8 @@ public class basic_fat implements TestBase {
* @param param The test parameters. * @param param The test parameters.
* @param return True, if the test was executed. * @param return True, if the test was executed.
*/ */
public boolean executeTest(TestParameters param) { public boolean executeTest(TestParameters param)
{
DescGetter dg = new APIDescGetter(); DescGetter dg = new APIDescGetter();
String job = (String) param.get("TestJob"); String job = (String) param.get("TestJob");
OfficeProvider office = null; OfficeProvider office = null;
@@ -84,11 +86,12 @@ public class basic_fat implements TestBase {
System.out.print("Getting Descriptions for Job: " + job + " from "); System.out.print("Getting Descriptions for Job: " + job + " from ");
DescEntry[] entries = dg.getDescriptionFor(job, DescEntry[] entries = dg.getDescriptionFor(job,
(String) param.get( (String) param.get(
"DescriptionPath"), "DescriptionPath"),
debug); debug);
if (entries == null) { if (entries == null)
{
System.out.println("Couldn't get Description for Job"); System.out.println("Couldn't get Description for Job");
return false; return false;
@@ -97,7 +100,8 @@ public class basic_fat implements TestBase {
String ExclusionFile = (String) param.get("ExclusionList"); String ExclusionFile = (String) param.get("ExclusionList");
Vector exclusions = null; Vector exclusions = null;
if (ExclusionFile != null) { if (ExclusionFile != null)
{
exclusions = getExclusionList(ExclusionFile, debug); exclusions = getExclusionList(ExclusionFile, debug);
} }
@@ -106,8 +110,10 @@ public class basic_fat implements TestBase {
System.out.print("> Connecting the Office "); System.out.print("> Connecting the Office ");
System.out.println("With " + conStr); System.out.println("With " + conStr);
for (int l = 0; l < entries.length; l++) { for (int l = 0; l < entries.length; l++)
if (entries[l].hasErrorMsg) { {
if (entries[l].hasErrorMsg)
{
System.out.println(entries[l].ErrorMsg); System.out.println(entries[l].ErrorMsg);
continue; continue;
@@ -116,9 +122,10 @@ public class basic_fat implements TestBase {
office = new OfficeProvider(); office = new OfficeProvider();
XMultiServiceFactory msf = (XMultiServiceFactory) office.getManager( XMultiServiceFactory msf = (XMultiServiceFactory) office.getManager(
param); param);
if (msf == null) { if (msf == null)
{
return false; return false;
} }
@@ -134,7 +141,8 @@ public class basic_fat implements TestBase {
tCase = (TestCase) new BasicTestCase(entry); tCase = (TestCase) new BasicTestCase(entry);
if (tCase == null) { if (tCase == null)
{
sumIt.summarizeDown(entry, entry.ErrorMsg); sumIt.summarizeDown(entry, entry.ErrorMsg);
LogWriter sumObj = OutProducerFactory.createOutProducer(param); LogWriter sumObj = OutProducerFactory.createOutProducer(param);
@@ -147,21 +155,26 @@ public class basic_fat implements TestBase {
System.out.println("Creating: " + tCase.getObjectName()); System.out.println("Creating: " + tCase.getObjectName());
LogWriter log = (LogWriter) dcl.getInstance( LogWriter log = (LogWriter) dcl.getInstance(
(String) param.get("LogWriter")); (String) param.get("LogWriter"));
log.initialize(entry, true); log.initialize(entry, true);
entry.UserDefinedParams = param; entry.UserDefinedParams = param;
tCase.setLogWriter((PrintWriter) log); tCase.setLogWriter((PrintWriter) log);
try { try
{
tCase.initializeTestCase(param); tCase.initializeTestCase(param);
} catch (RuntimeException e) { }
catch (RuntimeException e)
{
helper.ProcessHandler ph = (helper.ProcessHandler) param.get( helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
"AppProvider"); "AppProvider");
if (ph != null) { if (ph != null)
{
OfficeWatcher ow = (OfficeWatcher) param.get("Watcher"); OfficeWatcher ow = (OfficeWatcher) param.get("Watcher");
if ((ow != null) && ow.isAlive()) { if ((ow != null) && ow.isAlive())
{
ow.finish = true; ow.finish = true;
} }
@@ -174,7 +187,8 @@ public class basic_fat implements TestBase {
TestEnvironment tEnv = tCase.getTestEnvironment(param); TestEnvironment tEnv = tCase.getTestEnvironment(param);
if (tEnv == null) { if (tEnv == null)
{
sumIt.summarizeDown(entry, "Unable to create testcase"); sumIt.summarizeDown(entry, "Unable to create testcase");
LogWriter sumObj = OutProducerFactory.createOutProducer(param); LogWriter sumObj = OutProducerFactory.createOutProducer(param);
@@ -182,12 +196,14 @@ public class basic_fat implements TestBase {
sumObj.summary(entry); sumObj.summary(entry);
helper.ProcessHandler ph = (helper.ProcessHandler) param.get( helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
"AppProvider"); "AppProvider");
if (ph != null) { if (ph != null)
{
OfficeWatcher ow = (OfficeWatcher) param.get("Watcher"); OfficeWatcher ow = (OfficeWatcher) param.get("Watcher");
if ((ow != null) && ow.isAlive()) { if ((ow != null) && ow.isAlive())
{
ow.finish = true; ow.finish = true;
} }
@@ -200,36 +216,41 @@ public class basic_fat implements TestBase {
System.out.println("created " + tCase.getObjectName()); System.out.println("created " + tCase.getObjectName());
for (int j = 0; j < entry.SubEntryCount; j++) { for (int j = 0; j < entry.SubEntryCount; j++)
if (!entry.SubEntries[j].isToTest) { {
if (!entry.SubEntries[j].isToTest)
{
Summarizer.summarizeDown(entry.SubEntries[j], Summarizer.summarizeDown(entry.SubEntries[j],
"not part of the job"); "not part of the job");
continue; continue;
} }
if ((exclusions != null) && if ((exclusions != null) &&
(exclusions.contains(entry.SubEntries[j].longName))) { (exclusions.contains(entry.SubEntries[j].longName)))
{
Summarizer.summarizeDown(entry.SubEntries[j], Summarizer.summarizeDown(entry.SubEntries[j],
"known issue"); "known issue");
continue; continue;
} }
System.out.println("running: " + System.out.println("running: " +
entry.SubEntries[j].entryName); entry.SubEntries[j].entryName);
LogWriter ifclog = (LogWriter) dcl.getInstance( LogWriter ifclog = (LogWriter) dcl.getInstance(
(String) param.get("LogWriter")); (String) param.get("LogWriter"));
ifclog.initialize(entry.SubEntries[j], true); ifclog.initialize(entry.SubEntries[j], true);
entry.SubEntries[j].UserDefinedParams = param; entry.SubEntries[j].UserDefinedParams = param;
entry.SubEntries[j].Logger = ifclog; entry.SubEntries[j].Logger = ifclog;
if ((tEnv == null) || tEnv.isDisposed()) { if ((tEnv == null) || tEnv.isDisposed())
{
helper.ProcessHandler ph = (helper.ProcessHandler) param.get( helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
"AppProvider"); "AppProvider");
if (ph != null) { if (ph != null)
{
office.closeExistingOffice(param, true); office.closeExistingOffice(param, true);
shortWait(5000); shortWait(5000);
} }
@@ -250,15 +271,19 @@ public class basic_fat implements TestBase {
sumIfc.summary(entry.SubEntries[j]); sumIfc.summary(entry.SubEntries[j]);
} }
try { try
{
tCase.cleanupTestCase(param); tCase.cleanupTestCase(param);
} catch (Exception e) { }
catch (Exception e)
{
log.println("TestCase already gone"); log.println("TestCase already gone");
helper.ProcessHandler ph = (helper.ProcessHandler) param.get( helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
"AppProvider"); "AppProvider");
if (ph != null) { if (ph != null)
{
office.closeExistingOffice(param, true); office.closeExistingOffice(param, true);
shortWait(5000); shortWait(5000);
} }
@@ -271,49 +296,56 @@ public class basic_fat implements TestBase {
sumObj.summary(entry); sumObj.summary(entry);
} }
if (entries.length > 1) { if (entries.length > 1)
{
System.out.println(); System.out.println();
int counter = 0; int counter = 0;
System.out.println( System.out.println(
"Failures that appeared during scenario execution:"); "Failures that appeared during scenario execution:");
for (int i = 0; i < entries.length; i++) { for (int i = 0; i < entries.length; i++)
if (!entries[i].State.endsWith("OK")) { {
if (!entries[i].State.endsWith("OK"))
{
System.out.println("\t " + entries[i].longName); System.out.println("\t " + entries[i].longName);
counter++; counter++;
} }
} }
System.out.println(counter + " of " + entries.length + System.out.println(counter + " of " + entries.length +
" tests failed"); " tests failed");
} }
helper.ProcessHandler ph = (helper.ProcessHandler) param.get( helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
"AppProvider"); "AppProvider");
if (ph != null) { if (ph != null)
{
office.closeExistingOffice(param, true); office.closeExistingOffice(param, true);
} }
return true; return true;
} }
protected TestEnvironment getEnv(DescEntry entry, TestParameters param) { protected TestEnvironment getEnv(DescEntry entry, TestParameters param)
{
DynamicClassLoader dcl = new DynamicClassLoader(); DynamicClassLoader dcl = new DynamicClassLoader();
String officeProviderName = (String) param.get("OfficeProvider"); String officeProviderName = (String) param.get("OfficeProvider");
AppProvider office = (AppProvider) dcl.getInstance(officeProviderName); AppProvider office = (AppProvider) dcl.getInstance(officeProviderName);
if (office == null) { if (office == null)
{
System.out.println("ERROR: Wrong parameter 'OfficeProvider', " + System.out.println("ERROR: Wrong parameter 'OfficeProvider', " +
" it cannot be instantiated."); " it cannot be instantiated.");
System.exit(-1); System.exit(-1);
} }
XMultiServiceFactory msf = (XMultiServiceFactory) office.getManager( XMultiServiceFactory msf = (XMultiServiceFactory) office.getManager(
param); param);
if (msf == null) { if (msf == null)
{
return null; return null;
} }
@@ -324,23 +356,27 @@ public class basic_fat implements TestBase {
System.out.println("Creating: " + tCase.getObjectName()); System.out.println("Creating: " + tCase.getObjectName());
LogWriter log = (LogWriter) dcl.getInstance( LogWriter log = (LogWriter) dcl.getInstance(
(String) param.get("LogWriter")); (String) param.get("LogWriter"));
log.initialize(entry, true); log.initialize(entry, true);
entry.UserDefinedParams = param; entry.UserDefinedParams = param;
tCase.setLogWriter((PrintWriter) log); tCase.setLogWriter((PrintWriter) log);
TestEnvironment tEnv = null; TestEnvironment tEnv = null;
try { try
{
tCase.initializeTestCase(param); tCase.initializeTestCase(param);
tEnv = tCase.getTestEnvironment(param); tEnv = tCase.getTestEnvironment(param);
} catch (java.lang.RuntimeException e) { }
catch (java.lang.RuntimeException e)
{
System.out.println(e.getMessage()); System.out.println(e.getMessage());
helper.ProcessHandler ph = (helper.ProcessHandler) param.get( helper.ProcessHandler ph = (helper.ProcessHandler) param.get(
"AppProvider"); "AppProvider");
if (ph != null) { if (ph != null)
{
office.closeExistingOffice(param, true); office.closeExistingOffice(param, true);
shortWait(5000); shortWait(5000);
} }
@@ -352,37 +388,52 @@ public class basic_fat implements TestBase {
return tEnv; return tEnv;
} }
protected void shortWait(int millis) { protected void shortWait(int millis)
try { {
try
{
Thread.sleep(millis); Thread.sleep(millis);
} catch (java.lang.InterruptedException ie) { }
catch (java.lang.InterruptedException ie)
{
} }
} }
protected Vector getExclusionList(String url, boolean debug) { protected Vector getExclusionList(String url, boolean debug)
{
Vector entryList = new Vector(); Vector entryList = new Vector();
String line = "#"; String line = "#";
BufferedReader exclusion = null; BufferedReader exclusion = null;
try { try
{
exclusion = new BufferedReader(new FileReader(url)); exclusion = new BufferedReader(new FileReader(url));
} catch (java.io.FileNotFoundException fnfe) { }
if (debug) { catch (java.io.FileNotFoundException fnfe)
{
if (debug)
{
System.out.println("Couldn't find file " + url); System.out.println("Couldn't find file " + url);
} }
return entryList; return entryList;
} }
while (line != null) { while (line != null)
try { {
if (!line.startsWith("#")) { try
{
if (!line.startsWith("#"))
{
entryList.add(line); entryList.add(line);
} }
line = exclusion.readLine(); line = exclusion.readLine();
} catch (java.io.IOException ioe) { }
if (debug) { catch (java.io.IOException ioe)
{
if (debug)
{
System.out.println( System.out.println(
"Exception while reading exclusion list"); "Exception while reading exclusion list");
} }
@@ -391,10 +442,14 @@ public class basic_fat implements TestBase {
} }
} }
try { try
{
exclusion.close(); exclusion.close();
} catch (java.io.IOException ioe) { }
if (debug) { catch (java.io.IOException ioe)
{
if (debug)
{
System.out.println("Couldn't close file " + url); System.out.println("Couldn't close file " + url);
} }

View File

@@ -44,6 +44,8 @@ import java.lang.reflect.Method;
*/ */
public class Assurance public class Assurance
{ {
public static final boolean CONTINUE = true;
/** State of the current test method **/ /** State of the current test method **/
protected boolean state = true; protected boolean state = true;

View File

@@ -58,7 +58,8 @@ public abstract class ComplexTestCase extends Assurance implements ComplexTest
**/ **/
protected int mThreadTimeOut = 0; protected int mThreadTimeOut = 0;
/** Continue a test even if it did fail **/ /** Continue a test even if it did fail **/
public static final boolean CONTINUE = true; // public static final boolean CONTINUE = true;
/** End a test if it did fail **/ /** End a test if it did fail **/
public static final boolean BREAK = true; public static final boolean BREAK = true;

View File

@@ -27,9 +27,9 @@
* for a copy of the LGPLv3 License. * for a copy of the LGPLv3 License.
* *
************************************************************************/ ************************************************************************/
package graphical; package graphical;
import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.RandomAccessFile; import java.io.RandomAccessFile;
import java.util.ArrayList; import java.util.ArrayList;
@@ -37,10 +37,11 @@ import java.util.Enumeration;
/** /**
Helper class to give a simple API to read/write windows like ini files Helper class to give a simple API to read/write windows like ini files
*/ */
/* public */ // is only need, if we need this class outside package convwatch /* public */ // is only need, if we need this class outside package convwatch
public class IniFile implements Enumeration public class IniFile implements Enumeration
{ {
/** /**
* internal representation of the ini file content. * internal representation of the ini file content.
* Problem, if ini file changed why other write something difference, we don't realise this. * Problem, if ini file changed why other write something difference, we don't realise this.
@@ -48,13 +49,13 @@ public class IniFile implements Enumeration
private String m_sFilename; private String m_sFilename;
private ArrayList m_aList; private ArrayList m_aList;
boolean m_bListContainUnsavedChanges = false; boolean m_bListContainUnsavedChanges = false;
private int m_aEnumerationPos = 0; private int m_aEnumerationPos = 0;
/** /**
open a ini file by it's name open a ini file by it's name
@param _sFilename string a filename, if the file doesn't exist, a new empty ini file will create. @param _sFilename string a filename, if the file doesn't exist, a new empty ini file will create.
write back to disk only if there are really changes. write back to disk only if there are really changes.
*/ */
public IniFile(String _sFilename) public IniFile(String _sFilename)
{ {
m_sFilename = _sFilename; m_sFilename = _sFilename;
@@ -66,23 +67,23 @@ public class IniFile implements Enumeration
// } // }
} }
public void insertFirstComment(String [] _aList) public void insertFirstComment(String[] _aList)
{
if (m_aList.size() == 0)
{ {
// can only insert if there is nothing else already in the ini file if (m_aList.size() == 0)
for (int i=0; i<_aList.length;i++)
{ {
m_aList.add(_aList[i]); // can only insert if there is nothing else already in the ini file
for (int i = 0; i < _aList.length; i++)
{
m_aList.add(_aList[i]);
}
} }
} }
}
private ArrayList loadLines() private ArrayList loadLines()
{ {
File aFile = new File(m_sFilename); File aFile = new File(m_sFilename);
ArrayList aLines = new ArrayList(); ArrayList aLines = new ArrayList();
if (! aFile.exists()) if (!aFile.exists())
{ {
GlobalLogWriter.get().println("couldn't find file '" + m_sFilename + "', will be created."); GlobalLogWriter.get().println("couldn't find file '" + m_sFilename + "', will be created.");
// DebugHelper.exception(BasicErrorCode.SbERR_FILE_NOT_FOUND, ""); // DebugHelper.exception(BasicErrorCode.SbERR_FILE_NOT_FOUND, "");
@@ -90,9 +91,10 @@ public class IniFile implements Enumeration
return aLines; return aLines;
} }
RandomAccessFile aReader = null; RandomAccessFile aReader = null;
// BufferedReader aReader;
try try
{ {
aReader = new RandomAccessFile(aFile,"r"); aReader = new RandomAccessFile(aFile, "r");
String aLine = ""; String aLine = "";
while (aLine != null) while (aLine != null)
{ {
@@ -135,28 +137,29 @@ public class IniFile implements Enumeration
{ {
return m_aList.size() > 1 ? true : false; return m_aList.size() > 1 ? true : false;
} }
/**
* Check if a given Section and Key exists in the ini file /**
* @param _sSectionName * Check if a given Section and Key exists in the ini file
* @param _sKey * @param _sSectionName
* @return true if the given Section, Key exists, now you can get the value * @param _sKey
*/ * @return true if the given Section, Key exists, now you can get the value
*/
public boolean hasValue(String _sSectionName, String _sKey) public boolean hasValue(String _sSectionName, String _sKey)
{
int n = findKey(_sSectionName, _sKey);
if (n > 0)
{ {
return true; int n = findKey(_sSectionName, _sKey);
if (n > 0)
{
return true;
}
return false;
} }
return false;
}
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
private boolean isRemark(String _sLine) private boolean isRemark(String _sLine)
{ {
if ( ((_sLine.length() < 2) ) || if (((_sLine.length() < 2)) ||
( _sLine.startsWith("#")) || (_sLine.startsWith("#")) ||
( _sLine.startsWith(";")) ) (_sLine.startsWith(";")))
{ {
return true; return true;
} }
@@ -165,7 +168,7 @@ public class IniFile implements Enumeration
private String getItem(int i) private String getItem(int i)
{ {
return (String)m_aList.get(i); return (String) m_aList.get(i);
} }
private String buildSectionName(String _sSectionName) private String buildSectionName(String _sSectionName)
@@ -173,16 +176,18 @@ public class IniFile implements Enumeration
String sFindSection = "[" + _sSectionName + "]"; String sFindSection = "[" + _sSectionName + "]";
return sFindSection; return sFindSection;
} }
private String sectionToString(String _sSectionName) private String sectionToString(String _sSectionName)
{
String sKeyName = _sSectionName;
if (sKeyName.startsWith("[") &&
sKeyName.endsWith("]"))
{ {
sKeyName = sKeyName.substring(1, sKeyName.length() - 1); String sKeyName = _sSectionName;
if (sKeyName.startsWith("[") &&
sKeyName.endsWith("]"))
{
sKeyName = sKeyName.substring(1, sKeyName.length() - 1);
}
return sKeyName;
} }
return sKeyName;
}
private String toLowerIfNeed(String _sName) private String toLowerIfNeed(String _sName)
{ {
return _sName.toLowerCase(); return _sName.toLowerCase();
@@ -194,11 +199,11 @@ public class IniFile implements Enumeration
String sFindSection = toLowerIfNeed(buildSectionName(_sSection)); String sFindSection = toLowerIfNeed(buildSectionName(_sSection));
// ----------- find _sSection --------------- // ----------- find _sSection ---------------
int i; int i;
for (i=0; i<m_aList.size();i++) for (i = 0; i < m_aList.size(); i++)
{ {
String sLine = toLowerIfNeed(getItem(i).trim()); String sLine = toLowerIfNeed(getItem(i).trim());
if (isRemark(sLine)) if (isRemark(sLine))
{ {
continue; continue;
} }
if (sFindSection.equals("[]")) if (sFindSection.equals("[]"))
@@ -220,14 +225,14 @@ public class IniFile implements Enumeration
* @return true if the given _sSection was found * @return true if the given _sSection was found
*/ */
public boolean hasSection(String _sSection) public boolean hasSection(String _sSection)
{
int i = findSection(_sSection);
if (i == -1)
{ {
return false; int i = findSection(_sSection);
if (i == -1)
{
return false;
}
return true;
} }
return true;
}
// return the line number, where the key is found. // return the line number, where the key is found.
private int findKey(String _sSection, String _sKey) private int findKey(String _sSection, String _sKey)
@@ -245,7 +250,7 @@ public class IniFile implements Enumeration
private int findKeyFromKnownSection(int _nSectionIndex, String _sKey) private int findKeyFromKnownSection(int _nSectionIndex, String _sKey)
{ {
_sKey = toLowerIfNeed(_sKey); _sKey = toLowerIfNeed(_sKey);
for (int j=_nSectionIndex + 1; j<m_aList.size();j++) for (int j = _nSectionIndex + 1; j < m_aList.size(); j++)
{ {
String sLine = getItem(j).trim(); String sLine = getItem(j).trim();
@@ -270,7 +275,7 @@ public class IniFile implements Enumeration
{ {
return j; return j;
} }
} }
} }
return -1; return -1;
} }
@@ -280,7 +285,7 @@ public class IniFile implements Enumeration
{ {
_sKey = toLowerIfNeed(_sKey); _sKey = toLowerIfNeed(_sKey);
int i = _nSectionIndex + 1; int i = _nSectionIndex + 1;
for (int j=i; j<m_aList.size();j++) for (int j = i; j < m_aList.size(); j++)
{ {
String sLine = getItem(j).trim(); String sLine = getItem(j).trim();
@@ -318,7 +323,7 @@ public class IniFile implements Enumeration
int nEqual = sLine.indexOf("="); int nEqual = sLine.indexOf("=");
if (nEqual >= 0) if (nEqual >= 0)
{ {
String sKey = sLine.substring(0, nEqual).trim(); String sKey = sLine.substring(0, nEqual).trim();
String sValue = sLine.substring(nEqual + 1).trim(); String sValue = sLine.substring(nEqual + 1).trim();
return sValue; return sValue;
} }
@@ -332,7 +337,6 @@ public class IniFile implements Enumeration
*/ */
// private int m_nCurrentPosition; // private int m_nCurrentPosition;
// private String m_sOldKey; // private String m_sOldKey;
public String getValue(String _sSection, String _sKey) public String getValue(String _sSection, String _sKey)
{ {
String sValue = ""; String sValue = "";
@@ -359,7 +363,6 @@ public class IniFile implements Enumeration
// } // }
// return ""; // return "";
// } // }
/** /**
* Returns the value at Section, Key converted to an integer * Returns the value at Section, Key converted to an integer
* Check with hasValue(Section, Key) to check before you get into trouble. * Check with hasValue(Section, Key) to check before you get into trouble.
@@ -369,31 +372,32 @@ public class IniFile implements Enumeration
* @return * @return
*/ */
public int getIntValue(String _sSection, String _sKey, int _nDefault) public int getIntValue(String _sSection, String _sKey, int _nDefault)
{
String sValue = getValue(_sSection, _sKey);
int nValue = _nDefault;
if (sValue.length() > 0)
{ {
try String sValue = getValue(_sSection, _sKey);
int nValue = _nDefault;
if (sValue.length() > 0)
{ {
nValue = Integer.valueOf(sValue).intValue(); try
} {
catch(java.lang.NumberFormatException e) nValue = Integer.valueOf(sValue).intValue();
{ }
GlobalLogWriter.get().println("IniFile.getIntValue(): Caught a number format exception, return the default value."); catch (java.lang.NumberFormatException e)
{
GlobalLogWriter.get().println("IniFile.getIntValue(): Caught a number format exception, return the default value.");
}
} }
return nValue;
} }
return nValue;
}
public void close() public void close()
{ {
store(); store();
} }
/** /**
write back the ini file to the disk, only if there exist changes write back the ini file to the disk, only if there exist changes
* @deprecated use close() instead! * @deprecated use close() instead!
*/ */
public void store() public void store()
{ {
if (m_bListContainUnsavedChanges == false) if (m_bListContainUnsavedChanges == false)
@@ -423,22 +427,26 @@ public class IniFile implements Enumeration
try try
{ {
RandomAccessFile aWriter = new RandomAccessFile(aFile, "rw"); RandomAccessFile aWriter = new RandomAccessFile(aFile, "rw");
for (int i=0; i<m_aList.size();i++) for (int i = 0; i < m_aList.size(); i++)
{ {
String sLine = getItem(i); String sLine = getItem(i);
if (sLine.startsWith("["))
{
// write an extra empty line before next section.
aWriter.writeByte((int) '\n');
}
aWriter.writeBytes(sLine); aWriter.writeBytes(sLine);
aWriter.writeByte((int)'\n'); aWriter.writeByte((int) '\n');
} }
aWriter.close(); aWriter.close();
} }
catch (java.io.FileNotFoundException fne) catch (java.io.FileNotFoundException fne)
{ {
GlobalLogWriter.get().println("couldn't open file for writing " + m_sFilename); GlobalLogWriter.get().println("couldn't open file for writing " + m_sFilename);
GlobalLogWriter.get().println("Message: " + fne.getMessage()); GlobalLogWriter.get().println("Message: " + fne.getMessage());
// DebugHelper.exception(BasicErrorCode.SbERR_FILE_NOT_FOUND, ""); // DebugHelper.exception(BasicErrorCode.SbERR_FILE_NOT_FOUND, "");
} }
catch(java.io.IOException ie) catch (java.io.IOException ie)
{ {
GlobalLogWriter.get().println("Exception occurs while writing to file " + m_sFilename); GlobalLogWriter.get().println("Exception occurs while writing to file " + m_sFilename);
GlobalLogWriter.get().println("Message: " + ie.getMessage()); GlobalLogWriter.get().println("Message: " + ie.getMessage());
@@ -446,12 +454,16 @@ public class IniFile implements Enumeration
} }
} }
public void insertValue(String _sSection, String _sKey, int _nValue) public void insertValue(String _sSection, String _sKey, int _nValue)
{ {
insertValue(_sSection, _sKey, String.valueOf(_nValue)); insertValue(_sSection, _sKey, String.valueOf(_nValue));
} }
public void insertValue(String _sSection, String _sKey, long _nValue)
{
insertValue(_sSection, _sKey, String.valueOf(_nValue));
}
/** /**
insert a value insert a value
there are 3 cases there are 3 cases
@@ -551,71 +563,71 @@ public class IniFile implements Enumeration
// //
// return sLocalValue; // return sLocalValue;
// } // }
public void removeSection(String _sSectionToRemove)
public void removeSection(String _sSectionToRemove)
{
// first, search for the name
int i = findSection(_sSectionToRemove);
if (i == -1) {
// Section to remove not found, do nothing.
return;
}
// second, find the next section
int j = findNextSection(i + 1);
if (j == -1)
{ {
// if we are at the end, use size() as second section // first, search for the name
j = m_aList.size(); int i = findSection(_sSectionToRemove);
if (i == -1)
{
// Section to remove not found, do nothing.
return;
}
// second, find the next section
int j = findNextSection(i + 1);
if (j == -1)
{
// if we are at the end, use size() as second section
j = m_aList.size();
}
// remove all between first and second section
for (int k = i; k < j; k++)
{
m_aList.remove(i);
}
// mark the list as changed
m_bListContainUnsavedChanges = true;
} }
// remove all between first and second section
for(int k=i; k<j; k++)
{
m_aList.remove(i);
}
// mark the list as changed
m_bListContainUnsavedChanges = true;
}
/** /**
* some tests for this class * some tests for this class
*/ */
public static void main(String[] args) { public static void main(String[] args)
String sTempFile = System.getProperty("java.io.tmpdir"); {
sTempFile += "inifile"; String sTempFile = System.getProperty("java.io.tmpdir");
sTempFile += "inifile";
IniFile aIniFile = new IniFile(sTempFile); IniFile aIniFile = new IniFile(sTempFile);
String sValue = aIniFile.getValue("Section", "Key"); String sValue = aIniFile.getValue("Section", "Key");
// insert a new value to a already exist section // insert a new value to a already exist section
aIniFile.insertValue("Section", "Key2", "a new value in a existing section"); aIniFile.insertValue("Section", "Key2", "a new value in a existing section");
// replace a value // replace a value
aIniFile.insertValue("Section", "Key", "replaced value"); aIniFile.insertValue("Section", "Key", "replaced value");
// create a new value // create a new value
aIniFile.insertValue("New Section", "Key", "a new key value pair"); aIniFile.insertValue("New Section", "Key", "a new key value pair");
aIniFile.insertValue("New Section", "Key2", "a new second key value pair"); aIniFile.insertValue("New Section", "Key2", "a new second key value pair");
String sValue2 = aIniFile.getValue("Section2", "Key"); String sValue2 = aIniFile.getValue("Section2", "Key");
aIniFile.removeSection("Section"); aIniFile.removeSection("Section");
aIniFile.removeSection("New Section"); aIniFile.removeSection("New Section");
aIniFile.close();
}
aIniFile.close();
}
/** /**
* Enumeration Interface * Enumeration Interface
* @return true, if there are more Key values * @return true, if there are more Key values
*/ */
public boolean hasMoreElements() public boolean hasMoreElements()
{
if (m_aEnumerationPos >=0 &&
m_aEnumerationPos < m_aList.size())
{ {
return true; if (m_aEnumerationPos >= 0 &&
m_aEnumerationPos < m_aList.size())
{
return true;
}
return false;
} }
return false;
}
/** /**
* Find the next line, which starts with '[' * Find the next line, which starts with '['
@@ -623,57 +635,57 @@ public void removeSection(String _sSectionToRemove)
* @return the line where '[' found or -1 * @return the line where '[' found or -1
*/ */
private int findNextSection(int i) private int findNextSection(int i)
{
if (i >= 0)
{ {
while (i < m_aList.size()) if (i >= 0)
{ {
String sLine = (String)m_aList.get(i); while (i < m_aList.size())
if (sLine.startsWith("["))
{ {
return i; String sLine = (String) m_aList.get(i);
if (sLine.startsWith("["))
{
return i;
}
i++;
} }
i++;
} }
return -1;
} }
return -1;
}
/** /**
* Enumeration Interface * Enumeration Interface
* @return a key without the enveloped '[' ']' * @return a key without the enveloped '[' ']'
*/ */
public Object nextElement() public Object nextElement()
{
int nLineWithSection = findNextSection(m_aEnumerationPos);
if (nLineWithSection != -1)
{ {
String sSection = (String)m_aList.get(nLineWithSection); int nLineWithSection = findNextSection(m_aEnumerationPos);
m_aEnumerationPos = findNextSection(nLineWithSection + 1); if (nLineWithSection != -1)
sSection = sectionToString(sSection); {
return sSection; String sSection = (String) m_aList.get(nLineWithSection);
m_aEnumerationPos = findNextSection(nLineWithSection + 1);
sSection = sectionToString(sSection);
return sSection;
}
else
{
m_aEnumerationPos = m_aList.size();
}
return null;
} }
else
{
m_aEnumerationPos = m_aList.size();
}
return null;
}
/** /**
* Helper to count the occurence of Sections * Helper to count the occurence of Sections
* @return returns the count of '^['.*']$' Elements * @return returns the count of '^['.*']$' Elements
*/ */
public int getElementCount() public int getElementCount()
{
int nCount = 0;
int nPosition = 0;
while ((nPosition = findNextSection(nPosition)) != -1)
{ {
nCount ++; int nCount = 0;
nPosition ++; int nPosition = 0;
while ((nPosition = findNextSection(nPosition)) != -1)
{
nCount++;
nPosition++;
}
return nCount;
} }
return nCount;
}
} }

View File

@@ -430,8 +430,8 @@ public class APIDescGetter extends DescGetter
return getDescArray(makeArray(ifc_names)); return getDescArray(makeArray(ifc_names));
} }
private static String entryType; private static String entryType;
private static DescEntry createDescEntry(String meth_name, String ifc_name, DescEntry parent) private static DescEntry createDescEntry(String meth_name, String ifc_name, DescEntry parent)
{ {
entryType = "service"; entryType = "service";
@@ -472,8 +472,8 @@ public class APIDescGetter extends DescGetter
private static void createIfcName(String ifc_name, ArrayList meth_names, DescEntry ifcDesc) private static void createIfcName(String ifc_name, ArrayList meth_names, DescEntry ifcDesc)
{ {
} }
/** /**
* This method ensures that XComponent will be the last in the list of interfaces * This method ensures that XComponent will be the last in the list of interfaces
*/ */

View File

@@ -122,8 +122,8 @@ public class CwsDataExchangeImpl implements CwsDataExchange
final String stat = status ? ".PASSED.OK" : ".PASSED.FAILED"; final String stat = status ? ".PASSED.OK" : ".PASSED.FAILED";
statusFile = utils.getUsersTempDir() + statusFile = utils.getUsersTempDir() +
System.getProperty("file.separator") + System.getProperty("file.separator") +
"UnoApiCwsStatus." + "UnoApiCwsStatus." +
(String) param.get(PropertyName.VERSION) + (String) param.get(PropertyName.VERSION) +
"_" + param.get(PropertyName.OPERATING_SYSTEM) + stat + ".txt"; "_" + param.get(PropertyName.OPERATING_SYSTEM) + stat + ".txt";

View File

@@ -36,6 +36,9 @@ import java.io.PrintStream;
import java.io.LineNumberReader; import java.io.LineNumberReader;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import lib.TestParameters; import lib.TestParameters;
import util.PropertyName; import util.PropertyName;
import util.utils; import util.utils;
@@ -492,6 +495,29 @@ public class ProcessHandler
isStarted = false; isStarted = false;
} }
/**
* Returns the time in seconds since 1st January 1970
* @return
*/
public static long getSystemTime()
{
// Calendar cal = new GregorianCalendar();
// final long nTime = cal.getTimeInMillis();
final long nTime = System.currentTimeMillis();
return nTime;
}
private long m_nExactStartTimeInMillisec;
private void initialExactStartTime()
{
m_nExactStartTimeInMillisec = getSystemTime();
}
public long getProcessStartTime()
{
return m_nExactStartTimeInMillisec;
}
protected void execute() protected void execute()
{ {
if (isStarted()) if (isStarted())
@@ -511,7 +537,7 @@ public class ProcessHandler
log.print(" "); log.print(" ");
} }
log.println(""); log.println("");
initialExactStartTime();
m_aProcess = runtime.exec(cmdLineArray, envVars); m_aProcess = runtime.exec(cmdLineArray, envVars);
} }
else else
@@ -547,6 +573,9 @@ public class ProcessHandler
stderr = new Pump(m_aProcess.getErrorStream(), log, "err > "); stderr = new Pump(m_aProcess.getErrorStream(), log, "err > ");
stdIn = new PrintStream(m_aProcess.getOutputStream()); stdIn = new PrintStream(m_aProcess.getOutputStream());
// int nExitValue = m_aProcess.exitValue();
// int dummy = 0;
dbg("execute: flush io-streams"); dbg("execute: flush io-streams");
flushInput(); flushInput();
@@ -583,10 +612,10 @@ public class ProcessHandler
* @return <code>true</code> if process correctly exited * @return <code>true</code> if process correctly exited
* (exit code doesn't affect to this result). * (exit code doesn't affect to this result).
*/ */
public boolean waitFor(long timeout) public boolean waitFor(long timeout)
{ {
return waitFor(timeout, true); return waitFor(timeout, true);
} }
private boolean waitFor(long timeout, boolean bKillProcessAfterTimeout) private boolean waitFor(long timeout, boolean bKillProcessAfterTimeout)
{ {

View File

@@ -48,7 +48,7 @@ public class Runner
private static long m_nStartTime; private static long m_nStartTime;
private static long getStartTime() public static long getRunnerStartTime()
{ {
return m_nStartTime; return m_nStartTime;
} }
@@ -69,7 +69,7 @@ public class Runner
/* /*
return the time, which is done until last startTime() return the time, which is done until last startTime()
*/ */
private static long meanTime(long _nCurrentTimer) public static long meanTime(long _nCurrentTimer)
{ {
if (_nCurrentTimer == 0) if (_nCurrentTimer == 0)
{ {
@@ -109,6 +109,7 @@ public class Runner
} }
return false; return false;
} }
private static boolean checkPathVariable(String _sPath, String delim) private static boolean checkPathVariable(String _sPath, String delim)
{ {
String sPath = System.getProperty(_sPath); String sPath = System.getProperty(_sPath);
@@ -117,7 +118,7 @@ public class Runner
StringTokenizer aTokenEnum = new StringTokenizer(sPath, delim); StringTokenizer aTokenEnum = new StringTokenizer(sPath, delim);
while (aTokenEnum.hasMoreElements()) while (aTokenEnum.hasMoreElements())
{ {
String sToken = (String)aTokenEnum.nextElement(); String sToken = (String) aTokenEnum.nextElement();
if (checkVariableForCygwin(sToken)) if (checkVariableForCygwin(sToken))
{ {
System.err.println("ERROR: OOoRunner detect cygwin path in '" + _sPath + "'"); System.err.println("ERROR: OOoRunner detect cygwin path in '" + _sPath + "'");
@@ -132,7 +133,7 @@ public class Runner
{ {
// ----- check all System.getProperty(key) variables ----- // ----- check all System.getProperty(key) variables -----
String sOsName = System.getProperty("os.name"); String sOsName = System.getProperty("os.name");
if (! sOsName.toLowerCase().startsWith("windows")) if (!sOsName.toLowerCase().startsWith("windows"))
{ {
// we need to check only on windows // we need to check only on windows
return; return;
@@ -145,7 +146,7 @@ public class Runner
while (aEnum.hasMoreElements()) while (aEnum.hasMoreElements())
{ {
String sKey = (String)aEnum.nextElement(); String sKey = (String) aEnum.nextElement();
String sValue = System.getProperty(sKey); String sValue = System.getProperty(sKey);
if (checkVariableForCygwin(sValue)) if (checkVariableForCygwin(sValue))
@@ -165,10 +166,10 @@ public class Runner
aEnum = _aParams.keys(); aEnum = _aParams.keys();
while (aEnum.hasMoreElements()) while (aEnum.hasMoreElements())
{ {
String sKey = (String)aEnum.nextElement(); String sKey = (String) aEnum.nextElement();
if (_aParams.get(sKey) instanceof String) if (_aParams.get(sKey) instanceof String)
{ {
String sValue = (String)_aParams.get(sKey); String sValue = (String) _aParams.get(sKey);
if (checkVariableForCygwin(sValue)) if (checkVariableForCygwin(sValue))
{ {
@@ -240,7 +241,7 @@ public class Runner
checkAllVariablesForCygwinPath(param); checkAllVariablesForCygwinPath(param);
boolean worked = toExecute.executeTest(param); boolean worked = toExecute.executeTest(param);
long nTime = meanTime(getStartTime()); long nTime = meanTime(getRunnerStartTime());
String sBeautifyTime = beautifyTime(nTime); String sBeautifyTime = beautifyTime(nTime);
System.out.println("Job run took: " + nTime + "ms " + " [" + sBeautifyTime + "]"); System.out.println("Job run took: " + nTime + "ms " + " [" + sBeautifyTime + "]");

View File

@@ -56,23 +56,25 @@ import helper.ConfigHelper;
import java.util.Vector; import java.util.Vector;
import lib.StatusException; import lib.StatusException;
/** /**
* contains helper methods for the Desktop * contains helper methods for the Desktop
*/ */
public class DesktopTools { public class DesktopTools
{
/** /**
* Queries the XComponentLoader * Queries the XComponentLoader
* *
* @param xMSF the MultiServiceFactory * @param xMSF the MultiServiceFactory
* @return the gained XComponentLoader * @return the gained XComponentLoader
*/ */
public static XComponentLoader getCLoader(XMultiServiceFactory xMSF) { public static XComponentLoader getCLoader(XMultiServiceFactory xMSF)
{
XDesktop oDesktop = (XDesktop) UnoRuntime.queryInterface( XDesktop oDesktop = (XDesktop) UnoRuntime.queryInterface(
XDesktop.class, createDesktop(xMSF)); XDesktop.class, createDesktop(xMSF));
XComponentLoader oCLoader = (XComponentLoader) UnoRuntime.queryInterface( XComponentLoader oCLoader = (XComponentLoader) UnoRuntime.queryInterface(
XComponentLoader.class, oDesktop); XComponentLoader.class, oDesktop);
return oCLoader; return oCLoader;
} // finish getCLoader } // finish getCLoader
@@ -82,13 +84,17 @@ public class DesktopTools {
* *
* @param xMSF the MultiServiceFactory * @param xMSF the MultiServiceFactory
* @return the gained Object * @return the gained Object
*/ */
public static Object createDesktop(XMultiServiceFactory xMSF) { public static Object createDesktop(XMultiServiceFactory xMSF)
{
Object oInterface; Object oInterface;
try { try
{
oInterface = xMSF.createInstance("com.sun.star.comp.framework.Desktop"); oInterface = xMSF.createInstance("com.sun.star.comp.framework.Desktop");
} catch (com.sun.star.uno.Exception e) { }
catch (com.sun.star.uno.Exception e)
{
throw new IllegalArgumentException("Desktop Service not available"); throw new IllegalArgumentException("Desktop Service not available");
} }
@@ -100,9 +106,10 @@ public class DesktopTools {
* @param xMSF the XMultiServiceFactory * @param xMSF the XMultiServiceFactory
* @return XEnumeration of all components on the desktop * @return XEnumeration of all components on the desktop
*/ */
public static XEnumeration getAllComponents(XMultiServiceFactory xMSF) { public static XEnumeration getAllComponents(XMultiServiceFactory xMSF)
{
XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface( XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface(
XDesktop.class, createDesktop(xMSF)); XDesktop.class, createDesktop(xMSF));
return xDesktop.getComponents().createEnumeration(); return xDesktop.getComponents().createEnumeration();
} }
@@ -111,9 +118,10 @@ public class DesktopTools {
* @param xMSF the XMultiServiceFactory * @param xMSF the XMultiServiceFactory
* @return XComponent of the current component on the desktop * @return XComponent of the current component on the desktop
*/ */
public static XComponent getCurrentComponent(XMultiServiceFactory xMSF) { public static XComponent getCurrentComponent(XMultiServiceFactory xMSF)
{
XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface( XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface(
XDesktop.class, createDesktop(xMSF)); XDesktop.class, createDesktop(xMSF));
return xDesktop.getCurrentComponent(); return xDesktop.getCurrentComponent();
} }
@@ -122,9 +130,10 @@ public class DesktopTools {
* @param xMSF the XMultiServiceFactory * @param xMSF the XMultiServiceFactory
* @return XComponent of the current component on the desktop * @return XComponent of the current component on the desktop
*/ */
public static XFrame getCurrentFrame(XMultiServiceFactory xMSF) { public static XFrame getCurrentFrame(XMultiServiceFactory xMSF)
{
XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface( XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface(
XDesktop.class, createDesktop(xMSF)); XDesktop.class, createDesktop(xMSF));
return xDesktop.getCurrentFrame(); return xDesktop.getCurrentFrame();
} }
@@ -138,22 +147,33 @@ public class DesktopTools {
* @param xMSF the XMultiSerivceFactory * @param xMSF the XMultiSerivceFactory
* @return returns an array of all open documents * @return returns an array of all open documents
*/ */
public static Object[] getAllOpenDocuments(XMultiServiceFactory xMSF) { public static Object[] getAllOpenDocuments(XMultiServiceFactory xMSF)
{
Vector components = new Vector(); Vector components = new Vector();
XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface( XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface(
XDesktop.class, createDesktop(xMSF)); XDesktop.class, createDesktop(xMSF));
XEnumeration allComp = getAllComponents(xMSF); XEnumeration allComp = getAllComponents(xMSF);
while (allComp.hasMoreElements()){ while (allComp.hasMoreElements())
try{ {
try
{
XComponent xComponent = (XComponent) UnoRuntime.queryInterface( XComponent xComponent = (XComponent) UnoRuntime.queryInterface(
XComponent.class, allComp.nextElement()); XComponent.class, allComp.nextElement());
if (getDocumentType(xComponent) != null) components.add(xComponent); if (getDocumentType(xComponent) != null)
{
components.add(xComponent);
}
} catch (com.sun.star.container.NoSuchElementException e) { }
} catch ( com.sun.star.lang.WrappedTargetException e) {} catch (com.sun.star.container.NoSuchElementException e)
{
}
catch (com.sun.star.lang.WrappedTargetException e)
{
}
} }
return components.toArray(); return components.toArray();
} }
@@ -170,28 +190,41 @@ public class DesktopTools {
* </ul> * </ul>
* or <CODE>null</CODE> * or <CODE>null</CODE>
*/ */
public static String getDocumentType(XComponent xComponent) { public static String getDocumentType(XComponent xComponent)
XServiceInfo sInfo = (XServiceInfo)UnoRuntime.queryInterface( {
XServiceInfo sInfo = (XServiceInfo) UnoRuntime.queryInterface(
XServiceInfo.class, xComponent); XServiceInfo.class, xComponent);
if (sInfo == null) { if (sInfo == null)
{
return ""; return "";
} else if (sInfo.supportsService("com.sun.star.sheet.SpreadsheetDocument")) { }
else if (sInfo.supportsService("com.sun.star.sheet.SpreadsheetDocument"))
{
return "scalc"; return "scalc";
} else if (sInfo.supportsService("com.sun.star.text.TextDocument")) { }
else if (sInfo.supportsService("com.sun.star.text.TextDocument"))
{
return "swriter"; return "swriter";
} else if (sInfo.supportsService("com.sun.star.drawing.DrawingDocument")) { }
else if (sInfo.supportsService("com.sun.star.drawing.DrawingDocument"))
{
return "sdraw"; return "sdraw";
} else if (sInfo.supportsService("com.sun.star.presentation.PresentationDocument")) { }
else if (sInfo.supportsService("com.sun.star.presentation.PresentationDocument"))
{
return "simpress"; return "simpress";
} else if (sInfo.supportsService("com.sun.star.formula.FormulaProperties")) { }
else if (sInfo.supportsService("com.sun.star.formula.FormulaProperties"))
{
return "smath"; return "smath";
} else { }
else
{
return null; return null;
} }
} }
/** /**
* Opens a new document of a given kind * Opens a new document of a given kind
* with arguments * with arguments
@@ -208,14 +241,17 @@ public class DesktopTools {
* @param xMSF the MultiServiceFactory * @param xMSF the MultiServiceFactory
*/ */
public static XComponent openNewDoc(XMultiServiceFactory xMSF, String kind, public static XComponent openNewDoc(XMultiServiceFactory xMSF, String kind,
PropertyValue[] Args) { PropertyValue[] Args)
{
XComponent oDoc = null; XComponent oDoc = null;
try { try
oDoc = getCLoader(xMSF) {
.loadComponentFromURL("private:factory/" + kind, oDoc = getCLoader(xMSF).loadComponentFromURL("private:factory/" + kind,
"_blank", 0, Args); "_blank", 0, Args);
} catch (com.sun.star.uno.Exception e) { }
catch (com.sun.star.uno.Exception e)
{
throw new IllegalArgumentException("Document could not be opened"); throw new IllegalArgumentException("Document could not be opened");
} }
@@ -231,7 +267,8 @@ public class DesktopTools {
* @param xMSF the MultiServiceFactory * @param xMSF the MultiServiceFactory
*/ */
public static XComponent loadDoc(XMultiServiceFactory xMSF, String url, public static XComponent loadDoc(XMultiServiceFactory xMSF, String url,
PropertyValue[] Args) { PropertyValue[] Args)
{
XComponent oDoc = null; XComponent oDoc = null;
if (Args == null) if (Args == null)
{ {
@@ -254,34 +291,48 @@ public class DesktopTools {
* closes a given document * closes a given document
* @param DocumentToClose the document to close * @param DocumentToClose the document to close
*/ */
public static void closeDoc(XInterface DocumentToClose) { public static void closeDoc(XInterface DocumentToClose)
{
if (DocumentToClose == null) if (DocumentToClose == null)
{ {
return; return;
} }
String kd = System.getProperty("KeepDocument"); String kd = System.getProperty("KeepDocument");
if (kd != null ) { if (kd != null)
{
System.out.println("The property 'KeepDocument' is set and so the document won't be disposed"); System.out.println("The property 'KeepDocument' is set and so the document won't be disposed");
return; return;
} }
XModifiable modified = (XModifiable) UnoRuntime.queryInterface( XModifiable modified = (XModifiable) UnoRuntime.queryInterface(XModifiable.class, DocumentToClose);
XModifiable.class, DocumentToClose); XCloseable closer = (XCloseable) UnoRuntime.queryInterface(XCloseable.class, DocumentToClose);
XCloseable closer = (XCloseable) UnoRuntime.queryInterface(
XCloseable.class, DocumentToClose);
try { try
if (modified != null){ {
if (modified != null)
{
modified.setModified(false); modified.setModified(false);
} }
closer.close(true); closer.close(true);
} catch (com.sun.star.util.CloseVetoException e) { }
catch (com.sun.star.util.CloseVetoException e)
{
e.printStackTrace();
System.out.println("Couldn't close document"); System.out.println("Couldn't close document");
} catch (com.sun.star.lang.DisposedException e) { }
catch (com.sun.star.lang.DisposedException e)
{
e.printStackTrace();
System.out.println("Couldn't close document"); System.out.println("Couldn't close document");
} catch (java.lang.NullPointerException e) { }
catch (java.lang.NullPointerException e)
{
e.printStackTrace();
System.out.println("Couldn't close document"); System.out.println("Couldn't close document");
} catch (com.sun.star.beans.PropertyVetoException e) { }
catch (com.sun.star.beans.PropertyVetoException e)
{
e.printStackTrace();
System.out.println("Couldn't close document"); System.out.println("Couldn't close document");
} }
} }
@@ -293,10 +344,12 @@ public class DesktopTools {
* @return a floating XWindow * @return a floating XWindow
*/ */
public static XWindowPeer createFloatingWindow(XMultiServiceFactory xMSF) public static XWindowPeer createFloatingWindow(XMultiServiceFactory xMSF)
throws StatusException{ throws StatusException
return createFloatingWindow(xMSF, 500, 100, 400, 600); {
return createFloatingWindow(xMSF, 500, 100, 400, 600);
} }
/**
/**
* Creates a floating XWindow on the given position and size. * Creates a floating XWindow on the given position and size.
* @return a floating XWindow * @return a floating XWindow
* @param X the X-Postion of the floating XWindow * @param X the X-Postion of the floating XWindow
@@ -307,44 +360,51 @@ public class DesktopTools {
* @throws lib.StatusException if it is not possible to create a floating window a lib.StatusException was thrown * @throws lib.StatusException if it is not possible to create a floating window a lib.StatusException was thrown
*/ */
public static XWindowPeer createFloatingWindow(XMultiServiceFactory xMSF, int X, int Y, int width, int height) public static XWindowPeer createFloatingWindow(XMultiServiceFactory xMSF, int X, int Y, int width, int height)
throws StatusException{ throws StatusException
{
XInterface oObj = null; XInterface oObj = null;
try { try
{
oObj = (XInterface) xMSF.createInstance("com.sun.star.awt.Toolkit"); oObj = (XInterface) xMSF.createInstance("com.sun.star.awt.Toolkit");
} catch (com.sun.star.uno.Exception e) { }
catch (com.sun.star.uno.Exception e)
{
throw new StatusException("Couldn't get toolkit", e); throw new StatusException("Couldn't get toolkit", e);
} }
XToolkit tk = (XToolkit) UnoRuntime.queryInterface( XToolkit tk = (XToolkit) UnoRuntime.queryInterface(
XToolkit.class, oObj); XToolkit.class, oObj);
WindowDescriptor descriptor = new com.sun.star.awt.WindowDescriptor(); WindowDescriptor descriptor = new com.sun.star.awt.WindowDescriptor();
descriptor.Type = com.sun.star.awt.WindowClass.TOP; descriptor.Type = com.sun.star.awt.WindowClass.TOP;
descriptor.WindowServiceName = "modelessdialog"; descriptor.WindowServiceName = "modelessdialog";
descriptor.ParentIndex = -1; descriptor.ParentIndex = -1;
Rectangle bounds = new com.sun.star.awt.Rectangle(); Rectangle bounds = new com.sun.star.awt.Rectangle();
bounds.X = X; bounds.X = X;
bounds.Y = Y; bounds.Y = Y;
bounds.Width = width; bounds.Width = width;
bounds.Height = height; bounds.Height = height;
descriptor.Bounds = bounds; descriptor.Bounds = bounds;
descriptor.WindowAttributes = (com.sun.star.awt.WindowAttribute.BORDER + descriptor.WindowAttributes = (com.sun.star.awt.WindowAttribute.BORDER +
com.sun.star.awt.WindowAttribute.MOVEABLE + com.sun.star.awt.WindowAttribute.MOVEABLE +
com.sun.star.awt.WindowAttribute.SIZEABLE + com.sun.star.awt.WindowAttribute.SIZEABLE +
com.sun.star.awt.WindowAttribute.CLOSEABLE + com.sun.star.awt.WindowAttribute.CLOSEABLE +
com.sun.star.awt.VclWindowPeerAttribute.CLIPCHILDREN); com.sun.star.awt.VclWindowPeerAttribute.CLIPCHILDREN);
XWindowPeer xWindow = null; XWindowPeer xWindow = null;
try{ try
xWindow = tk.createWindow( descriptor ); {
}catch ( com.sun.star.lang.IllegalArgumentException e){ xWindow = tk.createWindow(descriptor);
throw new StatusException("Could not create window", e); }
catch (com.sun.star.lang.IllegalArgumentException e)
{
throw new StatusException("Could not create window", e);
} }
return xWindow; return xWindow;
@@ -355,27 +415,28 @@ public class DesktopTools {
* zoom to have a view over the hole page * zoom to have a view over the hole page
* @param xDoc the document to zoom * @param xDoc the document to zoom
*/ */
public static void zoomToEntirePage( XInterface xDoc){ public static void zoomToEntirePage(XInterface xDoc)
try { {
try
{
XModel xMod = (XModel) UnoRuntime.queryInterface(XModel.class, xDoc); XModel xMod = (XModel) UnoRuntime.queryInterface(XModel.class, xDoc);
XInterface oCont = xMod.getCurrentController(); XInterface oCont = xMod.getCurrentController();
XViewSettingsSupplier oVSSupp = (XViewSettingsSupplier) XViewSettingsSupplier oVSSupp = (XViewSettingsSupplier) UnoRuntime.queryInterface(XViewSettingsSupplier.class, oCont);
UnoRuntime.queryInterface(XViewSettingsSupplier.class, oCont);
XInterface oViewSettings = oVSSupp.getViewSettings(); XInterface oViewSettings = oVSSupp.getViewSettings();
XPropertySet oViewProp = (XPropertySet) XPropertySet oViewProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, oViewSettings);
UnoRuntime.queryInterface(XPropertySet.class, oViewSettings);
oViewProp.setPropertyValue("ZoomType", oViewProp.setPropertyValue("ZoomType",
new Short(com.sun.star.view.DocumentZoomType.ENTIRE_PAGE)); new Short(com.sun.star.view.DocumentZoomType.ENTIRE_PAGE));
utils.shortWait(5000); utils.shortWait(5000);
} catch (Exception e){ }
catch (Exception e)
{
System.out.println("Could not zoom to entire page: " + e.toString()); System.out.println("Could not zoom to entire page: " + e.toString());
} }
} }
/** /**
* This function docks the Stylist onto the right side of the window.</p> * This function docks the Stylist onto the right side of the window.</p>
* Note:<P> * Note:<P>
@@ -383,31 +444,35 @@ public class DesktopTools {
* the chage of the docking will be effective at a restart. * the chage of the docking will be effective at a restart.
* @param xMSF the XMultiServiceFactory * @param xMSF the XMultiServiceFactory
*/ */
public static void dockStylist(XMultiServiceFactory xMSF){ public static void dockStylist(XMultiServiceFactory xMSF)
{
// prepare Window-Settings // prepare Window-Settings
try { try
{
ConfigHelper aConfig = new ConfigHelper(xMSF, ConfigHelper aConfig = new ConfigHelper(xMSF,
"org.openoffice.Office.Views", false); "org.openoffice.Office.Views", false);
// Is node "5539" (slot-id for navigator) available? If not, insert it // Is node "5539" (slot-id for navigator) available? If not, insert it
XNameReplace x5539 = aConfig.getOrInsertGroup("Windows", "5539"); XNameReplace x5539 = aConfig.getOrInsertGroup("Windows", "5539");
aConfig.updateGroupProperty( aConfig.updateGroupProperty(
"Windows", "5539", "WindowState", "952,180,244,349;1;0,0,0,0;"); "Windows", "5539", "WindowState", "952,180,244,349;1;0,0,0,0;");
aConfig.insertOrUpdateExtensibleGroupProperty( aConfig.insertOrUpdateExtensibleGroupProperty(
"Windows", "5539", "UserData", "Data","V2,V,0,AL:(5,16,0/0/244/349,244;610)"); "Windows", "5539", "UserData", "Data", "V2,V,0,AL:(5,16,0/0/244/349,244;610)");
// Is node "SplitWindow2" available? If not, instert it. // Is node "SplitWindow2" available? If not, instert it.
aConfig.getOrInsertGroup("Windows", "SplitWindow2"); aConfig.getOrInsertGroup("Windows", "SplitWindow2");
aConfig.insertOrUpdateExtensibleGroupProperty( aConfig.insertOrUpdateExtensibleGroupProperty(
"Windows", "SplitWindow2","UserData", "UserItem","V1,2,1,0,5539"); "Windows", "SplitWindow2", "UserData", "UserItem", "V1,2,1,0,5539");
aConfig.flush(); aConfig.flush();
aConfig = null; aConfig = null;
} catch (com.sun.star.uno.Exception e) { }
catch (com.sun.star.uno.Exception e)
{
e.printStackTrace(); e.printStackTrace();
} }
} }
@@ -418,7 +483,8 @@ public class DesktopTools {
* @deprecated * @deprecated
*/ */
@Deprecated @Deprecated
public static void bringWindowToFromt(XModel xModel){ public static void bringWindowToFromt(XModel xModel)
{
bringWindowToFront(xModel); bringWindowToFront(xModel);
} }
@@ -428,7 +494,8 @@ public class DesktopTools {
* Only the order of Office documents are changeable. * Only the order of Office documents are changeable.
* @param xModel the XModel of the document to bring to top * @param xModel the XModel of the document to bring to top
*/ */
public static void bringWindowToFront(XModel xModel){ public static void bringWindowToFront(XModel xModel)
{
// System.out.println("DEBUG: bring to front xModel"); // System.out.println("DEBUG: bring to front xModel");
XTopWindow xTopWindow = XTopWindow xTopWindow =
@@ -439,10 +506,12 @@ public class DesktopTools {
xTopWindow.toFront(); xTopWindow.toFront();
} }
public static void bringWindowToFront(XComponent xComponent){ public static void bringWindowToFront(XComponent xComponent)
{
// System.out.println("DEBUG: bring to front xComponent"); // System.out.println("DEBUG: bring to front xComponent");
XModel xModel = (XModel) UnoRuntime.queryInterface(XModel.class, xComponent); XModel xModel = (XModel) UnoRuntime.queryInterface(XModel.class, xComponent);
if (xModel != null){ if (xModel != null)
{
bringWindowToFront(xModel); bringWindowToFront(xModel);
} }
} }

View File

@@ -186,7 +186,13 @@ public class utils {
} else { } else {
if (fullDocPath.startsWith("/")) { if (fullDocPath.startsWith("/")) {
prefix = "file://"; prefix = "file://";
} else { // if (helper.OSHelper.isLinuxIntel())
// {
// prefix = "file:/";
// }
}
else
{
prefix = "file:///"; prefix = "file:///";
} }
} }