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:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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
|
||||||
*/
|
*/
|
||||||
|
@@ -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";
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -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 + "]");
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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:///";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user