Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
f49575a8
Kaydet (Commit)
f49575a8
authored
Agu 21, 2002
tarafından
Juergen Schmidt
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
#99053# did some improvements
üst
a12ececf
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
347 additions
and
398 deletions
+347
-398
Makefile
odk/examples/java/ToDo/Makefile
+30
-19
ToDo.java
odk/examples/java/ToDo/ToDo.java
+316
-378
XToDo.idl
odk/examples/java/ToDo/XToDo.idl
+1
-1
No files found.
odk/examples/java/ToDo/Makefile
Dosyayı görüntüle @
f49575a8
...
...
@@ -9,23 +9,26 @@ include $(SETTINGS)/dk.mk
include
$(SETTINGS)/std.mk
# Define non-platform/compiler specific settings
REGISTERFLAG
=
$(OUT_MISC)$(PS)
todo_register_component.flag
COMPONENTJARFLAG
=
$(OUT_MISC)$(PS)
todo_create_component_jar.flag
TYPEFLAG
=
$(OUT_MISC)$(PS)
todo_type_generation.flag
JAVAFLAG
=
$(OUT_MISC)$(PS)
todo_javac.flag
OUT_COMPONENT
=
$(OUT_CLASS)$(PS)
todo
COMPONENT_RDB
=
$(OUT_BIN)$(PS)
ToDo.rdb
COMPONENT_JAR
=
$(OUT_CLASS)$(PS)
ToDo.jar
COMPONENT_MANIFESTFILE
=
Manifest
COMPONENT_NAME
=
ToDo
OUT_COMPONENT
=
$(OUT_CLASS)$(PS)$(COMPONENT_NAME)
COMPONENT_RDB_NAME
=
$(COMPONENT_NAME)
.rdb
COMPONENT_RDB
=
$(OUT_BIN)$(PS)$(COMPONENT_RDB_NAME)
COMPONENT_PACKAGE_NAME
=
$(COMPONENT_NAME)
.zip
COMPONENT_PACKAGE_URL
=
$
(
subst
\\
,/,
"file:///
$(COMPONENT_PACKAGE_DIR)$(PS)$(COMPONENT_PACKAGE_NAME)
"
)
COMPONENT_JAR_NAME
=
$(COMPONENT_NAME)
.jar
COMPONENT_JAR
=
$(OUT_CLASS)$(PS)$(COMPONENT_JAR_NAME)
COMPONENT_MANIFESTFILE
=
$(OUT_COMPONENT)$(PS)$(COMPONENT_NAME)
.Manifest
REGISTERFLAG
=
$(OUT_MISC)$(PS)$(COMPONENT_NAME)
_register_component.flag
COMPONENTJARFLAG
=
$(OUT_MISC)$(PS)$(COMPONENT_NAME)
_create_component_jar.flag
TYPEFLAG
=
$(OUT_MISC)$(PS)$(COMPONENT_NAME)
_type_generation.flag
JAVAFLAG
=
$(OUT_MISC)$(PS)$(COMPONENT_NAME)
_javac.flag
IDLFILES
=
XToDo.idl
# normally the idl file should be stored in a directory tree fitting the module structure,
# for the example we know the module structure
PACKAGE
=
org
$(PS)
OpenO
ffice
PACKAGE
=
org
$(PS)
openo
ffice
JAVAFILES
=
ToDo.java
...
...
@@ -35,6 +38,8 @@ GENURDFILES = $(subst \\,\,$(patsubst %.idl,$(OUT_MISC)$(PS)%.urd,$(IDLFILES)))
CLASSFILES
=
$
(
patsubst %.java,
$(OUT_COMPONENT)$(PS)
%.class,
$(JAVAFILES)
)
CLASSFILES
+=
$
(
patsubst %.java,
$(OUT_COMPONENT)$(PS)$(PACKAGE)$(PS)
%.class,
$(GENJAVAFILES)
)
COMPONENT_CLASSFILES
=
$(COMPONENT_NAME)
.class
$(COMPONENT_NAME)$$$(COMPONENT_NAME)
Implementation.class
COMPONENT_CLASSFILES
+=
$
(
subst
$(OUT_MISC)$(PS)
,,
$
(
GENJAVAFILES:.java
=
.class
))
SDK_CLASSPATH
=
$
(
subst
$(EMPTYSTRING)
$(PATH_SEPARATOR)
,
$(PATH_SEPARATOR)
,
$(OFFICE_CLASSES_DIR)$(PS)
jurt.jar
\
$(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)$(PS)
unoil.jar
\
...
...
@@ -57,27 +62,33 @@ include $(SETTINGS)/stdtarget.mk
$(OUT_COMPONENT)
:
$(OUT) $(OUT_CLASS)
$(MKDIR)
$@
$(OUT_COMPONENT)$(PS)$(COMPONENT_NAME).Manifest
:
$(OUT_COMPONENT)
@
echo
RegistrationClassName:
$(COMPONENT_NAME)
>
$@
$(TYPEFLAG)
:
$(IDLFILES)
$(BIN_DIR)$(PS)
idlc
-I
.
-I
$(IDL_DIR)
-O
$(OUT_MISC)
$^
$(BIN_DIR)$(PS)
regmerge
$(COMPONENT_RDB)
/UCR
$(GENURDFILES)
$(BIN_DIR)$(PS)
regmerge
$(COMPONENT_RDB)
/
$(DKREGISTRYNAME)
$(BIN_DIR)$(PS)
javamaker
-BUCR
-Torg
.
OpenOffice.XToDo
-O
$(OUT_MISC)
$(COMPONENT_RDB
)
#
$(BIN_DIR)$(PS)regmerge $(COMPONENT_RDB) / $(DKREGISTRYNAME)
$(BIN_DIR)$(PS)javamaker
-BUCR
-Torg.
openoffice.XToDo
-O$(OUT_MISC)
$(COMPONENT_RDB)
$(DKREGISTRYNAME
)
@echo
bla
>
$@
$(JAVAFLAG)
:
$(OUT_COMPONENT) $(TYPEFLAG) $(JAVAFILES)
javac
-classpath
"
$(SDK_CLASSPATH)
"
-d
$(OUT_COMPONENT)
$(GENJAVAFILES)
$(JAVAFILES)
@
echo
bla
>
$@
$(COMPONENTJARFLAG)
:
$(JAVAFLAG)
jar cvfm
$(COMPONENT_JAR)
$(COMPONENT_MANIFESTFILE)
-C
$(OUT_COMPONENT)
.
$(COMPONENTJARFLAG)
:
$(COMPONENT_MANIFESTFILE) $(JAVAFLAG)
# jar cvfm $(COMPONENT_JAR) $(COMPONENT_MANIFESTFILE) -C $(OUT_COMPONENT) .
cd
$(OUT_COMPONENT)
&&
jar
cvfm
$(COMPONENT_JAR)
$(COMPONENT_MANIFESTFILE)
$(COMPONENT_CLASSFILES)
$(COPY)
$(COMPONENT_JAR)
$(OUT_BIN)
cd
$(OUT_BIN)
&&
jar
cvfM
$(COMPONENT_PACKAGE_NAME)
$(COMPONENT_JAR_NAME)
$(COMPONENT_RDB_NAME)
$(DEL)
$(OUT_BIN)$(PS)$(COMPONENT_JAR_NAME)
-$(DEL)
$(REGISTERFLAG)
@echo
$(COMPONENT_PACKAGE_URL)
@echo
bla
>
$@
$(REGISTERFLAG)
:
$(COMPONENTJARFLAG)
ifneq
"$(SDK_AUTO_DEPLOYMENT)"
""
$(BIN_DIR)$(PS)regmerge
"$(URLPREFIX)$(OFFICE_FILEURL)/applicat.rdb"
/UCR
$(GENURDFILES)
$(COPY)
$(COMPONENT_JAR)
"$(OFFICE_CLASSES_DIR)"
java
-classpath
"$(SDK_CLASSPATH)"
com.sun.star.tools.uno.RegComp
"$(URLPREFIX)$(OFFICE_FILEURL)/applicat.rdb"
register
"$(URLPREFIX)$(OFFICE_FILEURL)/classes/ToDo.jar"
com.sun.star.loader.Java2
cd
$(OFFICE_PROGRAM_PATH)
&&
pkgchk
$(COMPONENT_PACKAGE_URL)
@echo
bla
>
$@
else
@echo
--------------------------------------------------------------------------------
...
...
odk/examples/java/ToDo/ToDo.java
Dosyayı görüntüle @
f49575a8
import
com.sun.star.comp.loader.FactoryHelper
;
import
com.sun.star.lang.XInitialization
;
import
com.sun.star.lang.XMultiServiceFactory
;
import
com.sun.star.lang.XServiceInfo
;
import
com.sun.star.lang.XSingleServiceFactory
;
import
com.sun.star.lang.XTypeProvider
;
import
com.sun.star.lib.uno.helper.WeakBase
;
import
com.sun.star.registry.XRegistryKey
;
import
com.sun.star.uno.UnoRuntime
;
import
com.sun.star.uno.Type
;
import
com.sun.star.uno.UnoRuntime
;
import
com.sun.star.uno.XInterface
;
import
com.sun.star.uno.XWeak
;
import
org.openoffice.*
;
// addintional interfaces used by the implementation
import
com.sun.star.sheet.XSpreadsheetDocument
;
import
com.sun.star.sheet.XSpreadsheet
;
import
com.sun.star.sheet.XCellRangeMovement
;
...
...
@@ -23,32 +30,77 @@ import com.sun.star.text.XTextCursor;
import
com.sun.star.text.XText
;
import
com.sun.star.text.XTextField
;
// ONLY FOR TESTING BEGIN
//import com.sun.star.container.XSet;
//import org.OpenOffice.XInstanceInspector;
// ONLY FOR TESTING END
import
java.util.GregorianCalendar
;
import
java.util.Calendar
;
import
java.util.Vector
;
import
java.util.Arrays
;
import
org.OpenOffice.XToDo
;
/** This outer class provides an inner class to implement the service
* description, a method to instantiate the
* component on demand (__getServiceFactory()), and a method to give
* information about the component (__writeRegistryServiceInfo()).
* @author Bertram Nolte
/** This class capsulates the class, that implements the minimal component, a
* factory for creating the service (<CODE>__getServiceFactory</CODE>) and a
* method, that writes the information into the given registry key
* (<CODE>__writeRegistryServiceInfo</CODE>).
*/
public
class
ToDo
{
/** This inner class provides the component as a concrete implementation
* of the service description. It implements the needed interfaces.
* @implements XToDo
/** Gives a factory for creating the service.
* This method is called by the <code>JavaLoader</code>
* <p>
* @return Returns a <code>XSingleServiceFactory</code> for creating the
* component.
* @see com.sun.star.comp.loader.JavaLoader#
* @param stringImplementationName The implementation name of the component.
* @param xmultiservicefactory The service manager, who gives access to every
* known service.
* @param xregistrykey Makes structural information (except regarding tree
* structures) of a single
* registry key accessible.
*/
public
static
XSingleServiceFactory
__getServiceFactory
(
String
stringImplementationName
,
XMultiServiceFactory
xmultiservicefactory
,
XRegistryKey
xregistrykey
)
{
XSingleServiceFactory
xsingleservicefactory
=
null
;
if
(
stringImplementationName
.
equals
(
ToDoImplementation
.
class
.
getName
()
)
)
xsingleservicefactory
=
FactoryHelper
.
getServiceFactory
(
ToDoImplementation
.
class
,
ToDoImplementation
.
__serviceName
,
xmultiservicefactory
,
xregistrykey
);
return
xsingleservicefactory
;
}
/** Writes the service information into the given registry key.
* This method is called by the <code>JavaLoader</code>.
* @return returns true if the operation succeeded
* @see com.sun.star.comp.loader.JavaLoader#
* @param xregistrykey Makes structural information (except regarding tree
* structures) of a single
* registry key accessible.
*/
public
static
boolean
__writeRegistryServiceInfo
(
XRegistryKey
xregistrykey
)
{
return
FactoryHelper
.
writeRegistryServiceInfo
(
ToDoImplementation
.
class
.
getName
(),
ToDoImplementation
.
__serviceName
,
xregistrykey
);
}
/** This class implements the component. At least the interfaces
* XInterface, XTypeProvider, and XWeak implemented by the helper class
* WeakBase and XServiceInfo should be provided by the service.
*/
static
public
class
_ToDo
implements
XToDo
,
XTypeProvider
{
static
private
final
String
__serviceName
=
"org.OpenOffice.ToDo"
;
public
static
class
ToDoImplementation
extends
WeakBase
implements
XServiceInfo
,
XToDo
{
/** The service name, that must be used to get an instance of this service.
*/
private
static
final
String
__serviceName
=
"org.openoffice.ToDo"
;
/** The service manager, that gives access to all registered services.
*/
private
XMultiServiceFactory
xmultiservicefactory
;
// Implementation helper variables
static
private
final
int
INT_COLUMN_FEATURE
=
0
;
static
private
final
int
INT_COLUMN_COMMENT
=
1
;
static
private
final
int
INT_COLUMN_NEEDEDDAYS
=
2
;
...
...
@@ -60,20 +112,75 @@ public class ToDo {
static
private
final
int
INT_COLUMN_STATUS
=
8
;
static
private
final
int
INT_ROW_FROM
=
8
;
//static private final int INT_ROW_TO = 56;
static
private
final
int
INT_ROW_HOLIDAYS_START
=
3
;
static
private
final
int
INT_COLUMN_HOLIDAYS_START
=
10
;
static
private
final
String
STRING_SEPARATOR
=
"."
;
private
XMultiServiceFactory
xmultiservicefactory
;
/** Memorizes the multi service factory.
* @param xMultiServiceFactory The multi service factory.
/** The constructor of the inner class has a XMultiServiceFactory parameter.
* @param xmultiservicefactoryInitialization A special service factory
* could be introduced while initializing.
*/
public
_ToDo
(
XMultiServiceFactory
xMultiServiceFactory
)
{
xmultiservicefactory
=
xMultiServiceFactory
;
public
ToDoImplementation
(
XMultiServiceFactory
xmultiservicefactoryInitialization
)
{
xmultiservicefactory
=
xmultiservicefactoryInitialization
;
}
/** This method returns an array of all supported service names.
* @return Array of supported service names.
*/
public
String
[]
getSupportedServiceNames
()
{
String
[]
stringSupportedServiceNames
=
new
String
[
1
];
stringSupportedServiceNames
[
0
]
=
__serviceName
;
return
(
stringSupportedServiceNames
);
}
/** This method returns true, if the given service will be
* supported by the component.
* @param stringService Service name.
* @return True, if the given service name will be supported.
*/
public
boolean
supportsService
(
String
stringService
)
{
boolean
booleanSupportsService
=
false
;
if
(
stringService
.
equals
(
__serviceName
)
)
{
booleanSupportsService
=
true
;
}
return
(
booleanSupportsService
);
}
/** Return the class name of the component.
* @return Class name of the component.
*/
public
String
getImplementationName
()
{
return
(
ToDoImplementation
.
class
.
getName
()
);
}
/** Provides a sequence of all types (usually interface types)
* provided by the object.
* @return Sequence of all types (usually interface types) provided by the
* service.
*/
public
Type
[]
getTypes
()
{
Type
[]
typeReturn
=
{};
try
{
typeReturn
=
new
Type
[]
{
new
Type
(
XToDo
.
class
),
new
Type
(
XTypeProvider
.
class
),
new
Type
(
XServiceInfo
.
class
),
new
Type
(
XWeak
.
class
),
new
Type
(
XInterface
.
class
)
};
}
catch
(
Exception
exception
)
{
System
.
err
.
println
(
exception
);
}
return
(
typeReturn
);
}
/** For every bug/feature listed in a spreadsheet document this method calculates
...
...
@@ -89,18 +196,18 @@ public class ToDo {
* @param aInstance Spreadsheet document.
* @throws com.sun.star.uno.RuntimeException This exception could occur at every interface method.
*/
public
void
recalc
(
Object
aInstance
)
throws
com
.
sun
.
star
.
uno
.
RuntimeException
{
public
void
recalc
(
java
.
lang
.
Object
aInstance
)
throws
com
.
sun
.
star
.
uno
.
RuntimeException
{
try
{
// Querying for the interface XSpreadsheetDocument
XSpreadsheetDocument
xspreadsheetdocument
=
(
XSpreadsheetDocument
)
UnoRuntime
.
queryInterface
(
XSpreadsheetDocument
.
class
,
aInstance
);
(
XSpreadsheetDocument
)
UnoRuntime
.
queryInterface
(
XSpreadsheetDocument
.
class
,
aInstance
);
// Querying for the interface XIndexAccess
XIndexAccess
xindexaccess
=
(
XIndexAccess
)
UnoRuntime
.
queryInterface
(
XIndexAccess
.
class
,
xspreadsheetdocument
.
getSheets
()
);
UnoRuntime
.
queryInterface
(
XIndexAccess
.
class
,
xspreadsheetdocument
.
getSheets
()
);
// Getting the first XSpreadsheet
XSpreadsheet
xspreadsheet
=
(
XSpreadsheet
)
...
...
@@ -110,40 +217,37 @@ public class ToDo {
XCellRange
xcellrange
=
(
XCellRange
)
UnoRuntime
.
queryInterface
(
XCellRange
.
class
,
xspreadsheet
);
/* Getting the gregorian calendar with the date on which to start the
calculation */
/* Getting the gregorian calendar with the date on which to start the
calculation */
GregorianCalendar
gregoriancalendarAbsoluteStartDate
=
this
.
getGregorianCalendarFromString
(
this
.
getStringFromCell
(
xcellrange
,
5
,
2
)
);
this
.
getGregorianCalendarFromString
(
this
.
getStringFromCell
(
xcellrange
,
5
,
2
)
);
gregoriancalendarAbsoluteStartDate
.
add
(
Calendar
.
DATE
,
-
1
);
// Set the start date with the absolute start date
GregorianCalendar
gregoriancalendarStartDate
=
(
GregorianCalendar
)
gregoriancalendarAbsoluteStartDate
.
clone
();
/* Creating the service FunctionAccess, which allows generic access to
all spreadsheet functions */
/* Creating the service FunctionAccess, which allows generic access to
all spreadsheet functions */
Object
objectFunctionAccess
=
xmultiservicefactory
.
createInstance
(
"com.sun.star.sheet.FunctionAccess"
);
xmultiservicefactory
.
createInstance
(
"com.sun.star.sheet.FunctionAccess"
);
// Querying for the interface XFunctionAccess on service
// FunctionAccess
XFunctionAccess
xfunctionaccess
=
(
XFunctionAccess
)
UnoRuntime
.
queryInterface
(
XFunctionAccess
.
class
,
objectFunctionAccess
);
UnoRuntime
.
queryInterface
(
XFunctionAccess
.
class
,
objectFunctionAccess
);
// Creating vector for holidays
Vector
vectorHolidays
=
new
Vector
();
// Get the Official Holidays
this
.
getOfficialHolidays
(
vectorHolidays
,
xcellrange
,
xfunctionaccess
,
gregoriancalendarStartDate
.
get
(
Calendar
.
YEAR
)
);
xfunctionaccess
,
gregoriancalendarStartDate
.
get
(
Calendar
.
YEAR
)
);
// Get the private holidays
this
.
getPrivateHolidays
(
vectorHolidays
,
xcellrange
,
xfunctionaccess
);
this
.
getPrivateHolidays
(
vectorHolidays
,
xcellrange
,
xfunctionaccess
);
// Getting the object array of holidays
Object
[]
objectSortedHolidays
=
vectorHolidays
.
toArray
();
...
...
@@ -160,11 +264,11 @@ public class ToDo {
// Getting the feature of the first cell
String
stringFeature
=
this
.
getStringFromCell
(
xcellrange
,
intRowTo
+
1
,
this
.
INT_COLUMN_FEATURE
);
intRowTo
+
1
,
this
.
INT_COLUMN_FEATURE
);
// Determine the last row with an entry in the first column
while
(
(
stringFeature
!=
null
)
&&
(
!
stringFeature
.
equals
(
""
)
)
)
{
(
!
stringFeature
.
equals
(
""
)
)
)
{
intRowTo
++;
stringFeature
=
this
.
getStringFromCell
(
xcellrange
,
intRowTo
+
1
,
this
.
INT_COLUMN_FEATURE
);
...
...
@@ -174,26 +278,24 @@ public class ToDo {
final
int
INT_ROW_TO
=
intRowTo
+
1
;
// Deleting cells which will be recalculated
for
(
int
intRow
=
this
.
INT_ROW_FROM
;
intRow
<
INT_ROW_TO
+
5
;
intRow
++
)
{
for
(
int
intRow
=
this
.
INT_ROW_FROM
;
intRow
<
INT_ROW_TO
+
5
;
intRow
++
)
{
for
(
int
intColumn
=
this
.
INT_COLUMN_STARTDATE
;
intColumn
<=
this
.
INT_COLUMN_END_DAY_OF_WEEK
;
intColumn
++
)
{
intColumn
<=
this
.
INT_COLUMN_END_DAY_OF_WEEK
;
intColumn
++
)
{
this
.
setStringToCell
(
xcellrange
,
intRow
,
intColumn
,
""
);
}
}
/* Clearing the background color of the due date cells and setting the
the hyperlink to the bugtracker */
for
(
int
intRow
=
this
.
INT_ROW_FROM
;
intRow
<
INT_ROW_TO
;
intRow
++
)
{
/* Clearing the background color of the due date cells and setting the
the hyperlink to the bugtracker */
for
(
int
intRow
=
this
.
INT_ROW_FROM
;
intRow
<
INT_ROW_TO
;
intRow
++
)
{
// Querying for the interface XPropertySet for the cell providing the due date
XPropertySet
xpropertyset
=
(
XPropertySet
)
UnoRuntime
.
queryInterface
(
XPropertySet
.
class
,
xcellrange
.
getCellByPosition
(
this
.
INT_COLUMN_DUEDATE
,
intRow
)
);
UnoRuntime
.
queryInterface
(
XPropertySet
.
class
,
xcellrange
.
getCellByPosition
(
this
.
INT_COLUMN_DUEDATE
,
intRow
)
);
// Changing the background color of the cell to white
xpropertyset
.
setPropertyValue
(
"CellBackColor"
,
...
...
@@ -216,95 +318,54 @@ public class ToDo {
// Getting the bug ID from the cell
String
stringBugID
=
xtextrange
.
getString
();
if
(
!
stringBugID
.
startsWith
(
"http://webserver2/"
+
"Bugtracker/Source/Body_ReportDetail.asp?ID="
)
)
{
String
stringBugIDLink
=
"http://webserver2/Bugtrack"
+
"er/Source/Body_ReportDetail.asp?ID="
+
stringBugID
;
if
(
!
stringBugID
.
startsWith
(
"http://so-web1.germany.sun.com/bis/servlet/"
+
"intray.ControlPanel?system=1&update=true&id="
)
)
{
String
stringBugIDLink
=
"http://so-web1.germany.sun.com/bis/servlet/"
+
"intray.ControlPanel?system=1&update=true&id="
+
stringBugID
+
"&showframeset=true"
;
// Querying for the interface XMultiServiceFactory
XMultiServiceFactory
xmultiservicefactoryTextField
=
(
XMultiServiceFactory
)
UnoRuntime
.
queryInterface
(
XMultiServiceFactory
.
class
,
aInstance
);
(
XMultiServiceFactory
)
UnoRuntime
.
queryInterface
(
XMultiServiceFactory
.
class
,
aInstance
);
// Creating an instance of the text field URL
Object
objectTextField
=
xmultiservicefactoryTextField
.
createInstance
(
"com.sun.star.text.TextField.URL"
);
xmultiservicefactoryTextField
.
createInstance
(
"com.sun.star.text.TextField.URL"
);
// Querying for the interface XTextField
XTextField
xtextfield
=
(
XTextField
)
UnoRuntime
.
queryInterface
(
XTextField
.
class
,
objectTextField
);
UnoRuntime
.
queryInterface
(
XTextField
.
class
,
objectTextField
);
// Querying for the interface XPropertySet
XPropertySet
xpropertysetTextField
=
(
XPropertySet
)
UnoRuntime
.
queryInterface
(
XPropertySet
.
class
,
xtextfield
);
/*
// ONLY FOR TESTING BEGIN
if ( ( this.INT_ROW_FROM == intRow )
|| ( ( this.INT_ROW_FROM + 1 ) == intRow ) ) {
// Querying for the interface XSet on the XMultiServiceFactory
XSet xsetMultiServiceFactory = ( XSet ) UnoRuntime.queryInterface(
XSet.class, xmultiservicefactory );
// Getting the single service factory of the instance inspector
XSingleServiceFactory xsingleservicefactoryInstanceInspector =
InstanceInspector.__getServiceFactory(
"InstanceInspector$_InstanceInspector", xmultiservicefactory, null );
// Inserting the single service factory into the multi service factory
xsetMultiServiceFactory.insert( xsingleservicefactoryInstanceInspector );
// Creating an instance of the instance inspector with arguments
Object objectInstanceInspector =
xmultiservicefactory.createInstanceWithArguments(
"org.OpenOffice.InstanceInspector",
new Object[]{ xmultiservicefactory } );
// Create a new instance inspector
XInstanceInspector xinstanceinspector = ( XInstanceInspector )
UnoRuntime.queryInterface( XInstanceInspector.class,
objectInstanceInspector );
// Inspect the calc
xinstanceinspector.inspect( xpropertysetTextField );
);
}
// ONLY FOR TESTING END
*/
UnoRuntime
.
queryInterface
(
XPropertySet
.
class
,
xtextfield
);
// Setting the URL
xpropertysetTextField
.
setPropertyValue
(
"URL"
,
stringBugIDLink
);
xpropertysetTextField
.
setPropertyValue
(
"URL"
,
stringBugIDLink
);
// Setting the representation of the URL
xpropertysetTextField
.
setPropertyValue
(
"Representation"
,
stringBugID
);
xpropertysetTextField
.
setPropertyValue
(
"Representation"
,
stringBugID
);
// Querying for the interface XText
XText
xtext
=
(
XText
)
UnoRuntime
.
queryInterface
(
XText
.
class
,
xcell
);
XText
xtext
=
(
XText
)
UnoRuntime
.
queryInterface
(
XText
.
class
,
xcell
);
// Delete cell content
xtextrange
.
setString
(
""
);
// Inserting the text field URL to the cell
xtext
.
insertTextContent
(
xtextrange
,
xtextfield
,
false
);
xtext
.
insertTextContent
(
xtextrange
,
xtextfield
,
false
);
}
}
// Processing all features/bugs in the table
for
(
int
intRow
=
this
.
INT_ROW_FROM
;
intRow
<
INT_ROW_TO
;
intRow
++
)
{
for
(
int
intRow
=
this
.
INT_ROW_FROM
;
intRow
<
INT_ROW_TO
;
intRow
++
)
{
// Getting the cell of the column "Needed Days" in the current row
XCell
xcell
=
xcellrange
.
getCellByPosition
(
INT_COLUMN_NEEDEDDAYS
,
intRow
);
XCell
xcell
=
xcellrange
.
getCellByPosition
(
INT_COLUMN_NEEDEDDAYS
,
intRow
);
// Getting the number of needed days to perform the feature
int
intNeededDays
=
(
int
)
Math
.
round
(
xcell
.
getValue
()
);
...
...
@@ -312,105 +373,87 @@ public class ToDo {
String
stringStatus
=
this
.
getStringFromCell
(
xcellrange
,
intRow
,
this
.
INT_COLUMN_STATUS
);
/* Testing if the number of needed days is greater than zero and if
the status is not "done" */
/* Testing if the number of needed days is greater than zero and if
the status is not "done" */
if
(
(
intNeededDays
>
0
)
&&
!(
stringStatus
.
toLowerCase
().
trim
().
equals
(
"done"
)
)
)
{
&&
!(
stringStatus
.
toLowerCase
().
trim
().
equals
(
"done"
)
)
)
{
// Getting the start date after a specified number of workdays
gregoriancalendarStartDate
=
this
.
getWorkday
(
gregoriancalendarStartDate
,
1
,
objectHolidays
,
xfunctionaccess
);
gregoriancalendarStartDate
,
1
,
objectHolidays
,
xfunctionaccess
);
// Getting a string with the date format jjjj-mm-dd from the gregorian calendar
String
stringDate
=
this
.
getStringFromGregorianCalendar
(
gregoriancalendarStartDate
);
String
stringDate
=
this
.
getStringFromGregorianCalendar
(
gregoriancalendarStartDate
);
// Set the start date in the specified cell of the table
this
.
setStringToCell
(
xcellrange
,
intRow
,
this
.
INT_COLUMN_STARTDATE
,
stringDate
);
this
.
INT_COLUMN_STARTDATE
,
stringDate
);
// For the start day set the day of week in the specified cell of the table
this
.
setDayOfWeek
(
gregoriancalendarStartDate
,
xcellrange
,
intRow
,
this
.
INT_COLUMN_START_DAY_OF_WEEK
);
xcellrange
,
intRow
,
this
.
INT_COLUMN_START_DAY_OF_WEEK
);
// Getting the end date after a specified number of workdays
GregorianCalendar
gregoriancalendarEndDate
=
this
.
getWorkday
(
gregoriancalendarStartDate
,
intNeededDays
-
1
,
objectHolidays
,
xfunctionaccess
);
this
.
getWorkday
(
gregoriancalendarStartDate
,
intNeededDays
-
1
,
objectHolidays
,
xfunctionaccess
);
// Creating a string with the date format jjjj-mm-dd
stringDate
=
this
.
getStringFromGregorianCalendar
(
gregoriancalendarEndDate
);
gregoriancalendarEndDate
);
// Set the end date in the specified cell of the table
this
.
setStringToCell
(
xcellrange
,
intRow
,
this
.
INT_COLUMN_ENDDATE
,
stringDate
);
this
.
INT_COLUMN_ENDDATE
,
stringDate
);
// For the end day set the day of week in the specified cell of the table
this
.
setDayOfWeek
(
gregoriancalendarEndDate
,
xcellrange
,
intRow
,
this
.
INT_COLUMN_END_DAY_OF_WEEK
);
intRow
,
this
.
INT_COLUMN_END_DAY_OF_WEEK
);
// Set the initial date for the next loop
gregoriancalendarStartDate
=
(
GregorianCalendar
)
gregoriancalendarEndDate
.
clone
();
gregoriancalendarEndDate
.
clone
();
// Get the due date from the table
String
stringDueDate
=
this
.
getStringFromCell
(
xcellrange
,
intRow
,
this
.
INT_COLUMN_DUEDATE
);
xcellrange
,
intRow
,
this
.
INT_COLUMN_DUEDATE
);
// Testing if the due date is not empty
if
(
!
stringDueDate
.
equals
(
""
)
)
{
GregorianCalendar
gregoriancalendarDueDate
=
this
.
getGregorianCalendarFromString
(
stringDueDate
);
this
.
getGregorianCalendarFromString
(
stringDueDate
);
// Testing if the due date is before the calculated end date
if
(
gregoriancalendarDueDate
.
before
(
gregoriancalendarEndDate
)
)
{
/* Getting the date when the processing of the feature/bug should
be started at the latest */
/*
// This is only a temporary fix
GregorianCalendar gregoriancalendarLatestDateToStart = ( GregorianCalendar ) gregoriancalendarDueDate.clone();
gregoriancalendarLatestDateToStart.add( Calendar.DATE, -( intNeededDays - 1 ) );
while ( ( gregoriancalendarLatestDateToStart.get( Calendar.DAY_OF_WEEK ) == 1 ) || ( gregoriancalendarLatestDateToStart.get( Calendar.DAY_OF_WEEK ) == 7 ) ) {
gregoriancalendarLatestDateToStart.add( Calendar.DATE, -1 );
}
String stringLatestDateToStart = this.getStringFromGregorianCalendar( gregoriancalendarLatestDateToStart );
*/
GregorianCalendar
gregoriancalendarLatestDateToStart
=
this
.
getWorkday
(
gregoriancalendarDueDate
,
-(
intNeededDays
-
1
),
objectHolidays
,
xfunctionaccess
);
if
(
gregoriancalendarDueDate
.
before
(
gregoriancalendarEndDate
)
)
{
/* Getting the date when the processing of the feature/bug should
be started at the latest */
GregorianCalendar
gregoriancalendarLatestDateToStart
=
this
.
getWorkday
(
gregoriancalendarDueDate
,
-(
intNeededDays
-
1
),
objectHolidays
,
xfunctionaccess
);
// Begin with the current row
int
intRowToInsert
=
intRow
;
// Get the start date for the feature/bug in the current row
GregorianCalendar
gregoriancalendarPreviousStartDate
=
this
.
getGregorianCalendarFromString
(
this
.
getStringFromCell
(
xcellrange
,
intRowToInsert
,
this
.
INT_COLUMN_STARTDATE
)
);
GregorianCalendar
gregoriancalendarPreviousStartDate
=
this
.
getGregorianCalendarFromString
(
this
.
getStringFromCell
(
xcellrange
,
intRowToInsert
,
this
.
INT_COLUMN_STARTDATE
)
);
// Testing if we have to search for an earlier date to begin
while
(
(
gregoriancalendarLatestDateToStart
.
before
(
gregoriancalendarPreviousStartDate
)
)
&&
(
INT_ROW_FROM
!=
intRowToInsert
)
)
{
while
(
(
gregoriancalendarLatestDateToStart
.
before
(
gregoriancalendarPreviousStartDate
)
)
&&
(
INT_ROW_FROM
!=
intRowToInsert
)
)
{
// Decrease the row
intRowToInsert
--;
// Get the start date for the feature/bug in the current row
String
stringStartDate
=
this
.
getStringFromCell
(
xcellrange
,
intRowToInsert
,
this
.
INT_COLUMN_STARTDATE
);
String
stringStartDate
=
this
.
getStringFromCell
(
xcellrange
,
intRowToInsert
,
this
.
INT_COLUMN_STARTDATE
);
// Search until a valid start date is found
while
(
stringStartDate
.
equals
(
""
)
)
{
...
...
@@ -418,78 +461,62 @@ public class ToDo {
intRowToInsert
--;
// Get the start date for the feature/bug in the current row
stringStartDate
=
this
.
getStringFromCell
(
xcellrange
,
intRowToInsert
,
this
.
INT_COLUMN_STARTDATE
);
stringStartDate
=
this
.
getStringFromCell
(
xcellrange
,
intRowToInsert
,
this
.
INT_COLUMN_STARTDATE
);
}
// Get the GregorianCalender format for the start date
gregoriancalendarPreviousStartDate
=
this
.
getGregorianCalendarFromString
(
stringStartDate
);
this
.
getGregorianCalendarFromString
(
stringStartDate
);
}
// Getting the cell of the column "Needed Days" in the row where to insert
XCell
xcellNeededDaysWhereToInsert
=
xcellrange
.
getCellByPosition
(
INT_COLUMN_NEEDEDDAYS
,
intRowToInsert
);
xcellrange
.
getCellByPosition
(
INT_COLUMN_NEEDEDDAYS
,
intRowToInsert
);
// Getting the number of needed days to perform the feature
int
intNeededDaysWhereToInsert
=
(
int
)
Math
.
round
(
xcellNeededDaysWhereToInsert
.
getValue
()
);
GregorianCalendar
gregoriancalendarPreviousNewEndDate
=
this
.
getWorkday
(
gregoriancalendarPreviousStartDate
,
intNeededDays
-
1
+
intNeededDaysWhereToInsert
,
objectHolidays
,
xfunctionaccess
);
//String stringPreviousNewEndDate = this.getStringFromGregorianCalendar( gregoriancalendarPreviousNewEndDate );
Math
.
round
(
xcellNeededDaysWhereToInsert
.
getValue
()
);
String
stringPreviousDueDate
=
this
.
getStringFromCell
(
xcellrange
,
intRowToInsert
,
this
.
INT_COLUMN_DUEDATE
);
GregorianCalendar
gregoriancalendarPreviousNewEndDate
=
this
.
getWorkday
(
gregoriancalendarPreviousStartDate
,
intNeededDays
-
1
+
intNeededDaysWhereToInsert
,
objectHolidays
,
xfunctionaccess
);
String
stringPreviousDueDate
=
this
.
getStringFromCell
(
xcellrange
,
intRowToInsert
,
this
.
INT_COLUMN_DUEDATE
);
GregorianCalendar
gregoriancalendarPreviousDueDate
=
null
;
if
(
!
stringPreviousDueDate
.
equals
(
""
)
)
{
gregoriancalendarPreviousDueDate
=
this
.
getGregorianCalendarFromString
(
stringPreviousDueDate
);
this
.
getGregorianCalendarFromString
(
stringPreviousDueDate
);
}
if
(
(
intRowToInsert
==
intRow
)
||
(
gregoriancalendarPreviousNewEndDate
.
after
(
gregoriancalendarPreviousDueDate
)
)
)
{
// Querying for the interface XPropertySet for the cell providing the due date
(
gregoriancalendarPreviousNewEndDate
.
after
(
gregoriancalendarPreviousDueDate
)
)
)
{
// Querying for the interface XPropertySet for the cell providing
// the due date
XPropertySet
xpropertyset
=
(
XPropertySet
)
UnoRuntime
.
queryInterface
(
XPropertySet
.
class
,
xcellrange
.
getCellByPosition
(
this
.
INT_COLUMN_DUEDATE
,
intRow
)
);
UnoRuntime
.
queryInterface
(
XPropertySet
.
class
,
xcellrange
.
getCellByPosition
(
this
.
INT_COLUMN_DUEDATE
,
intRow
)
);
// Changing the background color of the cell to red
xpropertyset
.
setPropertyValue
(
"CellBackColor"
,
new
Integer
(
16711680
)
);
"CellBackColor"
,
new
Integer
(
16711680
)
);
}
else
{
// Querying for the interface XColumnRowRange on the XCellRange
XColumnRowRange
xcolumnrowrange
=
(
XColumnRowRange
)
UnoRuntime
.
queryInterface
(
XColumnRowRange
.
class
,
xcellrange
);
XColumnRowRange
xcolumnrowrange
=
(
XColumnRowRange
)
UnoRuntime
.
queryInterface
(
XColumnRowRange
.
class
,
xcellrange
);
// Inserting one row to the table
xcolumnrowrange
.
getRows
().
insertByIndex
(
intRowToInsert
,
1
);
xcolumnrowrange
.
getRows
().
insertByIndex
(
intRowToInsert
,
1
);
// Querying for the interface XCellRangeMovement on XCellRange
XCellRangeMovement
xcellrangemovement
=
(
XCellRangeMovement
)
UnoRuntime
.
queryInterface
(
XCellRangeMovement
.
class
,
xcellrange
);
XCellRangeMovement
xcellrangemovement
=
(
XCellRangeMovement
)
UnoRuntime
.
queryInterface
(
XCellRangeMovement
.
class
,
xcellrange
);
// Creating the cell address of the destination
CellAddress
celladdress
=
new
CellAddress
();
...
...
@@ -507,12 +534,10 @@ public class ToDo {
cellrangeaddress
.
EndRow
=
intRow
+
1
;
// Moves the cell range to another position in the document
xcellrangemovement
.
moveRange
(
celladdress
,
cellrangeaddress
);
xcellrangemovement
.
moveRange
(
celladdress
,
cellrangeaddress
);
// Removing the row not needed anymore
xcolumnrowrange
.
getRows
().
removeByIndex
(
intRow
+
1
,
1
);
xcolumnrowrange
.
getRows
().
removeByIndex
(
intRow
+
1
,
1
);
// Set the current row, because we want to recalculate all rows below
intRow
=
intRowToInsert
-
1
;
...
...
@@ -520,16 +545,14 @@ public class ToDo {
// Tests at which line we want to insert
if
(
intRow
>=
this
.
INT_ROW_FROM
)
{
// Get the start date
gregoriancalendarStartDate
=
this
.
getGregorianCalendarFromString
(
this
.
getStringFromCell
(
xcellrange
,
intRow
,
this
.
INT_COLUMN_ENDDATE
)
);
gregoriancalendarStartDate
=
this
.
getGregorianCalendarFromString
(
this
.
getStringFromCell
(
xcellrange
,
intRow
,
this
.
INT_COLUMN_ENDDATE
)
);
}
else
{
// Set the start date with the absolute start date
gregoriancalendarStartDate
=
(
GregorianCalendar
)
gregoriancalendarAbsoluteStartDate
.
clone
();
gregoriancalendarStartDate
=
(
GregorianCalendar
)
gregoriancalendarAbsoluteStartDate
.
clone
();
}
}
}
...
...
@@ -542,43 +565,14 @@ public class ToDo {
}
}
/** Sequence of all types (usually interface types) provided by the object.
* @return Sequence of all types.
*/
public
com
.
sun
.
star
.
uno
.
Type
[]
getTypes
()
{
Type
[]
typeReturn
=
{};
try
{
typeReturn
=
new
Type
[]
{
new
Type
(
XTypeProvider
.
class
),
new
Type
(
XToDo
.
class
)
};
}
catch
(
Exception
exception
)
{
this
.
showExceptionMessage
(
exception
);
}
return
(
typeReturn
);
}
/** Getting the implementation ID that can be used to unambigously distinguish
* between two set of types (interface XTypeProvider).
* @return ID as a sequence of bytes.
*/
public
byte
[]
getImplementationId
()
{
byte
[]
byteReturn
=
{};
return
(
byteReturn
);
}
/** Getting a string from a gregorian calendar.
* @param gregoriancalendar Date to be converted.
* @return string (converted gregorian calendar).
*/
public
String
getStringFromGregorianCalendar
(
GregorianCalendar
gregoriancalendar
)
{
public
String
getStringFromGregorianCalendar
(
GregorianCalendar
gregoriancalendar
)
{
String
stringDate
=
gregoriancalendar
.
get
(
Calendar
.
DATE
)
+
STRING_SEPARATOR
+
(
gregoriancalendar
.
get
(
Calendar
.
MONTH
)
+
1
)
+
STRING_SEPARATOR
+
gregoriancalendar
.
get
(
Calendar
.
YEAR
);
+
STRING_SEPARATOR
+
(
gregoriancalendar
.
get
(
Calendar
.
MONTH
)
+
1
)
+
STRING_SEPARATOR
+
gregoriancalendar
.
get
(
Calendar
.
YEAR
);
return
(
stringDate
);
}
...
...
@@ -587,12 +581,11 @@ public class ToDo {
* @param stringDate String to be converted.
* @return The result of the converting of the string.
*/
public
GregorianCalendar
getGregorianCalendarFromString
(
String
stringDate
)
{
public
GregorianCalendar
getGregorianCalendarFromString
(
String
stringDate
)
{
int
[]
intDateValue
=
this
.
getDateValuesFromString
(
stringDate
);
return
(
new
GregorianCalendar
(
intDateValue
[
2
],
intDateValue
[
1
],
intDateValue
[
0
]
)
);
intDateValue
[
0
]
)
);
}
/** Getting the day, month and year from a string.
...
...
@@ -604,21 +597,20 @@ public class ToDo {
int
intPositionFirstTag
=
stringDate
.
indexOf
(
STRING_SEPARATOR
);
int
intPositionSecondTag
=
stringDate
.
indexOf
(
STRING_SEPARATOR
,
intPositionFirstTag
+
1
);
intPositionFirstTag
+
1
);
// Getting the value of the year
intDateValues
[
0
]
=
Integer
.
parseInt
(
stringDate
.
substring
(
0
,
intPositionFirstTag
)
);
intPositionFirstTag
)
);
// Getting the value of the month
intDateValues
[
1
]
=
Integer
.
parseInt
(
stringDate
.
substring
(
intPositionFirstTag
+
1
,
intPositionSecondTag
)
)
-
1
;
intDateValues
[
1
]
=
Integer
.
parseInt
(
stringDate
.
substring
(
intPositionFirstTag
+
1
,
intPositionSecondTag
)
)
-
1
;
// Getting the value of the day
intDateValues
[
2
]
=
Integer
.
parseInt
(
stringDate
.
substring
(
intPositionSecondTag
+
1
,
stringDate
.
length
()
)
);
stringDate
.
substring
(
intPositionSecondTag
+
1
,
stringDate
.
length
()
)
);
return
(
intDateValues
);
}
...
...
@@ -629,17 +621,15 @@ public class ToDo {
* @param intColumn Number of column.
* @return String from the specified cell.
*/
public
String
getStringFromCell
(
XCellRange
xcellrange
,
int
intRow
,
int
intColumn
)
{
public
String
getStringFromCell
(
XCellRange
xcellrange
,
int
intRow
,
int
intColumn
)
{
XTextRange
xtextrangeStartDate
=
null
;
try
{
// Getting the cell holding the information about the start date
XCell
xcellStartDate
=
xcellrange
.
getCellByPosition
(
intColumn
,
intRow
);
XCell
xcellStartDate
=
xcellrange
.
getCellByPosition
(
intColumn
,
intRow
);
// Querying for the interface XTextRange on the XCell
xtextrangeStartDate
=
(
XTextRange
)
UnoRuntime
.
queryInterface
(
XTextRange
.
class
,
xcellStartDate
);
UnoRuntime
.
queryInterface
(
XTextRange
.
class
,
xcellStartDate
);
}
catch
(
Exception
exception
)
{
this
.
showExceptionMessage
(
exception
);
...
...
@@ -656,14 +646,13 @@ public class ToDo {
* @param stringDate Date to write to the cell.
*/
public
void
setStringToCell
(
XCellRange
xcellrange
,
int
intRow
,
int
intColumn
,
String
stringDate
)
{
int
intColumn
,
String
stringDate
)
{
try
{
// Getting the cell holding the information on the day to start
XCell
xcellStartDate
=
xcellrange
.
getCellByPosition
(
intColumn
,
intRow
);
XCell
xcellStartDate
=
xcellrange
.
getCellByPosition
(
intColumn
,
intRow
);
// Querying for the interface XTextRange on the XCell
XTextRange
xtextrange
=
(
XTextRange
)
UnoRuntime
.
queryInterface
(
XTextRange
.
class
,
xcellStartDate
);
XTextRange
xtextrange
=
(
XTextRange
)
UnoRuntime
.
queryInterface
(
XTextRange
.
class
,
xcellStartDate
);
// Setting the new start date
xtextrange
.
setString
(
stringDate
);
}
...
...
@@ -679,7 +668,7 @@ public class ToDo {
* @param intColumn Number of column.
*/
public
void
setDayOfWeek
(
GregorianCalendar
gregoriancalendar
,
XCellRange
xcellrange
,
int
intRow
,
int
intColumn
)
{
XCellRange
xcellrange
,
int
intRow
,
int
intColumn
)
{
int
intDayOfWeek
=
gregoriancalendar
.
get
(
Calendar
.
DAY_OF_WEEK
);
String
stringDayOfWeek
=
""
;
if
(
intDayOfWeek
==
Calendar
.
MONDAY
)
{
...
...
@@ -715,17 +704,16 @@ public class ToDo {
// Get the Official Holiday for two years
for
(
int
intNumberOfYear
=
0
;
intNumberOfYear
<=
(
intHowManyYears
-
1
);
intNumberOfYear
++
)
{
intNumberOfYear
<=
(
intHowManyYears
-
1
);
intNumberOfYear
++
)
{
intYear
+=
intNumberOfYear
;
// Getting the Easter sunday
Double
doubleEasterSunday
=
(
Double
)
xfunctionaccess
.
callFunction
(
"EASTERSUNDAY"
,
new
Object
[]
{
new
Integer
(
intYear
)
}
);
xfunctionaccess
.
callFunction
(
"EASTERSUNDAY"
,
new
Object
[]
{
new
Integer
(
intYear
)
}
);
int
intEasterSunday
=
(
int
)
Math
.
round
(
doubleEasterSunday
.
doubleValue
()
);
int
intEasterSunday
=
(
int
)
Math
.
round
(
doubleEasterSunday
.
doubleValue
()
);
// New-year
vectorHolidays
.
addElement
(
xfunctionaccess
.
callFunction
(
...
...
@@ -743,35 +731,33 @@ public class ToDo {
// Labour Day
vectorHolidays
.
addElement
(
xfunctionaccess
.
callFunction
(
"DATE"
,
new
Object
[]
{
new
Integer
(
intYear
),
new
Integer
(
5
),
new
Integer
(
1
)
}
)
);
"DATE"
,
new
Object
[]
{
new
Integer
(
intYear
),
new
Integer
(
5
),
new
Integer
(
1
)
}
)
);
// Ascension Day
vectorHolidays
.
addElement
(
new
Double
(
intEasterSunday
+
39
)
);
vectorHolidays
.
addElement
(
new
Double
(
intEasterSunday
+
39
)
);
// Pentecost monday
vectorHolidays
.
addElement
(
new
Double
(
intEasterSunday
+
50
)
);
vectorHolidays
.
addElement
(
new
Double
(
intEasterSunday
+
50
)
);
// German Unification
vectorHolidays
.
addElement
(
xfunctionaccess
.
callFunction
(
"DATE"
,
new
Object
[]
{
new
Integer
(
intYear
),
new
Integer
(
10
),
new
Integer
(
3
)
}
)
);
"DATE"
,
new
Object
[]
{
new
Integer
(
intYear
),
new
Integer
(
10
),
new
Integer
(
3
)
}
)
);
// Christmas Day First
vectorHolidays
.
addElement
(
xfunctionaccess
.
callFunction
(
"DATE"
,
new
Object
[]
{
new
Integer
(
intYear
),
new
Integer
(
12
),
new
Integer
(
25
)
}
)
);
"DATE"
,
new
Object
[]
{
new
Integer
(
intYear
),
new
Integer
(
12
),
new
Integer
(
25
)
}
)
);
// Christmas Day Second
vectorHolidays
.
addElement
(
xfunctionaccess
.
callFunction
(
"DATE"
,
new
Object
[]
{
new
Integer
(
intYear
),
new
Integer
(
12
),
new
Integer
(
26
)
}
)
);
"DATE"
,
new
Object
[]
{
new
Integer
(
intYear
),
new
Integer
(
12
),
new
Integer
(
26
)
}
)
);
}
}
catch
(
Exception
exception
)
{
...
...
@@ -788,37 +774,31 @@ public class ToDo {
* @return The gregorian date before or after a specified number of workdays.
*/
public
GregorianCalendar
getWorkday
(
GregorianCalendar
gregoriancalendarStartDate
,
int
intDays
,
Object
[][]
objectHolidays
,
XFunctionAccess
xfunctionaccess
)
{
GregorianCalendar
gregoriancalendarStartDate
,
int
intDays
,
Object
[][]
objectHolidays
,
XFunctionAccess
xfunctionaccess
)
{
GregorianCalendar
gregoriancalendarWorkday
=
null
;
try
{
// Getting the value of the start date
Double
doubleDate
=
(
Double
)
xfunctionaccess
.
callFunction
(
"DATE"
,
new
Object
[]
{
new
Integer
(
gregoriancalendarStartDate
.
get
(
Calendar
.
YEAR
)
),
new
Integer
(
gregoriancalendarStartDate
.
get
(
Calendar
.
MONTH
)
+
1
),
new
Integer
(
gregoriancalendarStartDate
.
get
(
Calendar
.
DATE
)
)
}
);
"DATE"
,
new
Object
[]
{
new
Integer
(
gregoriancalendarStartDate
.
get
(
Calendar
.
YEAR
)
),
new
Integer
(
gregoriancalendarStartDate
.
get
(
Calendar
.
MONTH
)
+
1
),
new
Integer
(
gregoriancalendarStartDate
.
get
(
Calendar
.
DATE
)
)
}
);
Double
doubleWorkday
=
(
Double
)
xfunctionaccess
.
callFunction
(
"com.sun.star.sheet.addin.Analysis.getWorkday"
,
new
Object
[]
{
doubleDate
,
new
Integer
(
intDays
),
objectHolidays
}
);
new
Object
[]
{
doubleDate
,
new
Integer
(
intDays
),
objectHolidays
}
);
Double
doubleYear
=
(
Double
)
xfunctionaccess
.
callFunction
(
"YEAR"
,
new
Object
[]
{
doubleWorkday
}
);
"YEAR"
,
new
Object
[]
{
doubleWorkday
}
);
Double
doubleMonth
=
(
Double
)
xfunctionaccess
.
callFunction
(
"MONTH"
,
new
Object
[]
{
doubleWorkday
}
);
"MONTH"
,
new
Object
[]
{
doubleWorkday
}
);
Double
doubleDay
=
(
Double
)
xfunctionaccess
.
callFunction
(
"DAY"
,
new
Object
[]
{
doubleWorkday
}
);
"DAY"
,
new
Object
[]
{
doubleWorkday
}
);
gregoriancalendarWorkday
=
new
GregorianCalendar
(
doubleYear
.
intValue
(),
...
...
@@ -838,43 +818,36 @@ public class ToDo {
* @param xfunctionaccess Provides the access to functions of the Calc.
*/
public
void
getPrivateHolidays
(
Vector
vectorHolidays
,
XCellRange
xcellrange
,
XFunctionAccess
xfunctionaccess
)
{
XCellRange
xcellrange
,
XFunctionAccess
xfunctionaccess
)
{
try
{
int
intRow
=
this
.
INT_ROW_HOLIDAYS_START
;
int
intColumn
=
this
.
INT_COLUMN_HOLIDAYS_START
;
double
doubleHolidayStart
=
xcellrange
.
getCellByPosition
(
intColumn
,
intRow
).
getValue
();
intColumn
,
intRow
).
getValue
();
double
doubleHolidayEnd
=
xcellrange
.
getCellByPosition
(
intColumn
+
1
,
intRow
).
getValue
();
intColumn
+
1
,
intRow
).
getValue
();
while
(
doubleHolidayStart
!=
0
)
{
if
(
doubleHolidayEnd
==
0
)
{
vectorHolidays
.
addElement
(
new
Integer
(
(
int
)
Math
.
round
(
doubleHolidayStart
)
)
);
new
Integer
(
(
int
)
Math
.
round
(
doubleHolidayStart
)
)
);
}
else
{
for
(
int
intHoliday
=
(
int
)
Math
.
round
(
doubleHolidayStart
);
intHoliday
<=
(
int
)
Math
.
round
(
doubleHolidayEnd
);
intHoliday
++
)
{
vectorHolidays
.
addElement
(
new
Double
(
intHoliday
)
);
doubleHolidayStart
);
intHoliday
<=
(
int
)
Math
.
round
(
doubleHolidayEnd
);
intHoliday
++
)
{
vectorHolidays
.
addElement
(
new
Double
(
intHoliday
)
);
}
}
intRow
++;
doubleHolidayStart
=
xcellrange
.
getCellByPosition
(
intColumn
,
intRow
).
getValue
();
doubleHolidayEnd
=
xcellrange
.
getCellByPosition
(
intColumn
+
1
,
intRow
).
getValue
();
doubleHolidayStart
=
xcellrange
.
getCellByPosition
(
intColumn
,
intRow
).
getValue
();
doubleHolidayEnd
=
xcellrange
.
getCellByPosition
(
intColumn
+
1
,
intRow
).
getValue
();
}
}
catch
(
Exception
exception
)
{
...
...
@@ -891,8 +864,8 @@ public class ToDo {
jframe
.
setSize
(
300
,
200
);
jframe
.
setVisible
(
true
);
javax
.
swing
.
JOptionPane
.
showMessageDialog
(
jframe
,
stringMessage
,
"Debugging information"
,
javax
.
swing
.
JOptionPane
.
INFORMATION_MESSAGE
);
"Debugging information"
,
javax
.
swing
.
JOptionPane
.
INFORMATION_MESSAGE
);
jframe
.
dispose
();
}
...
...
@@ -904,7 +877,7 @@ public class ToDo {
public
void
showExceptionMessage
(
Exception
exception
)
{
java
.
io
.
StringWriter
stringwriter
=
new
java
.
io
.
StringWriter
();
java
.
io
.
PrintWriter
printwriter
=
new
java
.
io
.
PrintWriter
(
stringwriter
);
new
java
.
io
.
PrintWriter
(
stringwriter
);
exception
.
printStackTrace
(
printwriter
);
System
.
err
.
println
(
exception
);
this
.
showMessage
(
stringwriter
.
getBuffer
().
substring
(
0
)
);
...
...
@@ -912,40 +885,5 @@ public class ToDo {
}
/**
* Returns a factory for creating the service.
* This method is called by the <code>JavaLoader</code>
* <p>
* @return returns a <code>XSingleServiceFactory</code> for creating the component
* @param implName the name of the implementation for which a service is desired
* @param multiFactory the service manager to be used if needed
* @param regKey the registryKey
* @see com.sun.star.comp.loader.JavaLoader
*/
public
static
XSingleServiceFactory
__getServiceFactory
(
String
implName
,
XMultiServiceFactory
multiFactory
,
XRegistryKey
regKey
)
{
XSingleServiceFactory
xSingleServiceFactory
=
null
;
if
(
implName
.
equals
(
_ToDo
.
class
.
getName
())
)
xSingleServiceFactory
=
FactoryHelper
.
getServiceFactory
(
_ToDo
.
class
,
_ToDo
.
__serviceName
,
multiFactory
,
regKey
);
return
xSingleServiceFactory
;
}
/**
* Writes the service information into the given registry key.
* This method is called by the <code>JavaLoader</code>
* <p>
* @return returns true if the operation succeeded
* @param regKey the registryKey
* @see com.sun.star.comp.loader.JavaLoader
*/
public
static
boolean
__writeRegistryServiceInfo
(
XRegistryKey
regKey
)
{
return
FactoryHelper
.
writeRegistryServiceInfo
(
_ToDo
.
class
.
getName
(),
_ToDo
.
__serviceName
,
regKey
);
}
}
odk/examples/java/ToDo/XToDo.idl
Dosyayı görüntüle @
f49575a8
...
...
@@ -11,7 +11,7 @@
#
include
<
com
/
sun
/
star
/
uno
/
XInterface
.
idl>
module
org
{
module
OpenO
ffice
{
module
openo
ffice
{
interface
XToDo
:
com
::
sun
::
star
::
uno
::
XInterface
{
void
recalc
(
[
in
]
any
aInstance
)
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment