diff options
author | Bertram Nolte <bnolte@openoffice.org> | 2001-09-18 08:13:39 +0000 |
---|---|---|
committer | Bertram Nolte <bnolte@openoffice.org> | 2001-09-18 08:13:39 +0000 |
commit | b1962536c7d96c2019fde4eaeda6d7e42f8b4d01 (patch) | |
tree | 2f8cf6eb1d02d913cacfd496d31ae31d972af7a4 /odk/examples/java/NotesAccess/NotesAccess.java | |
parent | d9f8adc73a6ddd0869524dfd3b30ed3d179a805c (diff) |
Added new Java example.
Diffstat (limited to 'odk/examples/java/NotesAccess/NotesAccess.java')
-rw-r--r-- | odk/examples/java/NotesAccess/NotesAccess.java | 246 |
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 ); + } + } +} |