summaryrefslogtreecommitdiff
path: root/odk/examples/java/NotesAccess/NotesAccess.java
diff options
context:
space:
mode:
authorBertram Nolte <bnolte@openoffice.org>2001-09-18 08:13:39 +0000
committerBertram Nolte <bnolte@openoffice.org>2001-09-18 08:13:39 +0000
commitb1962536c7d96c2019fde4eaeda6d7e42f8b4d01 (patch)
tree2f8cf6eb1d02d913cacfd496d31ae31d972af7a4 /odk/examples/java/NotesAccess/NotesAccess.java
parentd9f8adc73a6ddd0869524dfd3b30ed3d179a805c (diff)
Added new Java example.
Diffstat (limited to 'odk/examples/java/NotesAccess/NotesAccess.java')
-rw-r--r--odk/examples/java/NotesAccess/NotesAccess.java246
1 files changed, 246 insertions, 0 deletions
diff --git a/odk/examples/java/NotesAccess/NotesAccess.java b/odk/examples/java/NotesAccess/NotesAccess.java
new file mode 100644
index 000000000000..077f7ee7c8ff
--- /dev/null
+++ b/odk/examples/java/NotesAccess/NotesAccess.java
@@ -0,0 +1,246 @@
+// Lotus Notes Domino API
+import lotus.domino.NotesThread;
+import lotus.domino.Session;
+import lotus.domino.Database;
+import lotus.domino.DocumentCollection;
+import lotus.domino.Document;
+import lotus.domino.NotesFactory;
+
+// OpenOffice.org API
+import com.sun.star.bridge.XUnoUrlResolver;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.lang.XComponent;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.frame.XComponentLoader;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.sheet.XSpreadsheetDocument;
+import com.sun.star.sheet.XSpreadsheets;
+import com.sun.star.sheet.XSpreadsheet;
+import com.sun.star.container.XIndexAccess;
+import com.sun.star.table.XCell;
+
+/** This class creates an OpenOffice.org Calc spreadsheet document and fills it
+ * with existing values of documents from a Lotus Notes database.
+ */
+public class NotesAccess implements Runnable {
+ /** Host server of the Domino Directory.
+ */
+ String stringHost = null;
+
+ /** User in the host's Domino Directory.
+ */
+ String stringUser = "";
+
+ /** Password for the user in the host's Domino Directory.
+ */
+ String stringPassword = "";
+
+ /** Reading the arguments and constructing the thread.
+ * @param argv Holding values for the host, user, and the password of the user.
+ */
+ public static void main( String argv[] ) {
+ Thread thread;
+
+ if( argv.length < 1 ) {
+ // Initializing.
+ NotesAccess notesaccess = new NotesAccess();
+
+ // Allowing only local calls to the Domino classes.
+ thread = new NotesThread( ( Runnable ) notesaccess );
+ }
+ else {
+ // Extracting the host, user, and password.
+ NotesAccess notesaccess = new NotesAccess( argv );
+
+ // Allowing remote calls to the Domino classes.
+ thread = new Thread( ( Runnable ) notesaccess );
+ }
+
+ // Starting the thread.
+ thread.start();
+ }
+
+ /** The constructor extracts the values for the host, user, and password given
+ * as arguments.
+ * @param argv Holding values for the host, user, and the password of the user.
+ */
+ public NotesAccess( String argv[] ) {
+ // Getting the host.
+ stringHost = argv[ 0 ];
+
+ if ( argv.length >= 2 ) {
+ // Getting the user.
+ stringUser = argv[ 1 ];
+ }
+ if ( argv.length >= 3 ) {
+ // Getting the password for the user.
+ stringPassword = argv[ 2 ];
+ }
+ }
+
+ /** This is the default constructor without arguments.
+ */
+ public NotesAccess() {
+ }
+
+ /** Reading all documents from the given database and writing the data to
+ * an OpenOffice.org Calc spreadsheet document.
+ */
+ public void run() {
+ try {
+ /* Bootstraps a servicemanager with the jurt base components
+ registered */
+ XMultiServiceFactory xmultiservicefactory =
+ com.sun.star.comp.helper.Bootstrap.createSimpleServiceManager();
+
+ /* Creates an instance of the component UnoUrlResolver which
+ supports the services specified by the factory. */
+ Object objectUrlResolver = xmultiservicefactory.createInstance(
+ "com.sun.star.bridge.UnoUrlResolver" );
+
+ // Create a new url resolver
+ XUnoUrlResolver xurlresolver = ( XUnoUrlResolver )
+ UnoRuntime.queryInterface( XUnoUrlResolver.class,
+ objectUrlResolver );
+
+ // Resolves an object that is specified as follow:
+ // uno:<connection description>;<protocol description>;<initial object name>
+ Object objectInitial = xurlresolver.resolve(
+ "uno:socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" );
+
+ // Create a service manager from the initial object
+ xmultiservicefactory = ( XMultiServiceFactory )
+ UnoRuntime.queryInterface( XMultiServiceFactory.class,
+ objectInitial );
+
+ /* A desktop environment contains tasks with one or more
+ frames in which components can be loaded. Desktop is the
+ environment for components which can instanciate within
+ frames. */
+ XComponentLoader xcomponentloader = ( XComponentLoader )
+ UnoRuntime.queryInterface( XComponentLoader.class,
+ xmultiservicefactory.createInstance(
+ "com.sun.star.frame.Desktop" ) );
+
+ // Load a Writer document, which will be automaticly displayed
+ XComponent xcomponent = xcomponentloader.loadComponentFromURL(
+ "private:factory/scalc", "_blank", 0,
+ new PropertyValue[0] );
+
+ // Querying for the interface XSpreadsheetDocument
+ XSpreadsheetDocument xspreadsheetdocument =
+ ( XSpreadsheetDocument ) UnoRuntime.queryInterface(
+ XSpreadsheetDocument.class, xcomponent );
+
+ // Getting all sheets from the spreadsheet document.
+ XSpreadsheets xspreadsheets = xspreadsheetdocument.getSheets() ;
+
+ // Querying for the interface XIndexAccess.
+ XIndexAccess xindexaccess = ( XIndexAccess ) UnoRuntime.queryInterface(
+ XIndexAccess.class, xspreadsheets );
+
+ // Getting the first spreadsheet.
+ XSpreadsheet xspreadsheet = ( XSpreadsheet ) xindexaccess.getByIndex( 0 );
+
+ Session session;
+ if ( stringHost != null ) {
+ // Creating a Notes session for remote calls to the Domino classes.
+ session = NotesFactory.createSession( stringHost, stringUser,
+ stringPassword );
+ }
+ else {
+ // Creating a Notes session for only local calls to the Domino classes.
+ session = NotesFactory.createSession();
+ }
+
+ // Getting the specified Notes database.
+ Database database = session.getDatabase( "",
+ "F:\\odk3.0.0\\examples\\java\\NotesAccess\\Stocks.nsf" );
+
+ // Getting a collection of all documents from the database.
+ DocumentCollection documentcollection = database.getAllDocuments();
+
+ // Getting the first document from the database
+ Document document = documentcollection.getFirstDocument();
+
+ // Start to write to cells at this row.
+ int intRowToStart = 0;
+
+ // The current row.
+ int intRow = intRowToStart;
+
+ // The current column.
+ int intColumn = 0;
+
+ // Process all documents
+ while ( document != null ) {
+ // Getting the name of the stock.
+ String stringName = document.getItemValueString( "Name" );
+
+ // Inserting the name to a specified cell.
+ insertIntoCell( intColumn, intRow, stringName, xspreadsheet, "" );
+
+ // Getting the number of stocks.
+ double intNumber = document.getItemValueInteger( "Number" );
+
+ // Inserting the number of stocks to a specified cell.
+ insertIntoCell( intColumn + 1, intRow, String.valueOf( intNumber ),
+ xspreadsheet, "V" );
+
+ // Getting current share price.
+ double doubleSharePrice = document.getItemValueDouble( "SharePrice" );
+
+ // Inserting the current share price to a specified cell.
+ insertIntoCell( intColumn + 2, intRow, String.valueOf( doubleSharePrice ),
+ xspreadsheet, "V" );
+
+ // Inserting the total value.
+ insertIntoCell( intColumn + 3, intRow, "=B"
+ + String.valueOf( intRow + 1 ) + "*C" + String.valueOf( intRow + 1 ),
+ xspreadsheet, "" );
+
+ // Increasing the current row.
+ intRow++;
+
+ // Getting the next document from the collection.
+ document = documentcollection.getNextDocument();
+ }
+
+ // Summing all specific amounts.
+ insertIntoCell( intColumn + 3, intRow, "=sum(D"
+ + String.valueOf( intRowToStart + 1 ) + ":D"
+ + String.valueOf( intRow ),
+ xspreadsheet, "" );
+
+ // Leaving the program.
+ System.exit(0);
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /** Inserting a value or formula to a cell defined by the row and column.
+ * @param intCellX Row.
+ * @param intCellY Column.
+ * @param stringValue This value will be written to the cell.
+ * @param xspreadsheet Write the value to the cells of this spreadsheet.
+ * @param stringFlag If this string contains "V", the value will be written, otherwise the formula.
+ */
+ public static void insertIntoCell( int intCellX, int intCellY,
+ String stringValue, XSpreadsheet xspreadsheet, String stringFlag ) {
+ XCell xcell = null;
+
+ try {
+ xcell = xspreadsheet.getCellByPosition( intCellX, intCellY );
+ } catch ( com.sun.star.lang.IndexOutOfBoundsException exception ) {
+ System.out.println( "Could not get Cell" );
+ }
+ if ( stringFlag.equals( "V" )) {
+ xcell.setValue( ( new Float( stringValue ) ).floatValue());
+ }
+ else {
+ xcell.setFormula( stringValue );
+ }
+ }
+}