Intermediate Java Programming for Notes Domino 8.5
Units: 16
Duration: 4 classroom equivalent days
Discussion Access: One Year

Summary Description
Take your Java programming skills to the next level with TLCC's Intermediate Java Programming for Notes and Domino 8.5 course. Learn how to use the core Java classes to work with strings, numbers, vectors, arrays, and to read and write information from the hard drive and the internet. Learn web application techniques like performing field validation, preventing multiple submissions of incomplete forms, and passing data using URL variables. Build a cool web-based order form that will hold multiple items. Use the Domino Object Model to work with Notes items, rich text items, documents, views, view entries and document collections. Use a Java agent to build reports from Domino databases using the rich text classes. This course is written exclusively for Notes and Domino developers and contains many live demonstrations and activities you do right in Domino Designer.

Audience and Prerequisites
Experienced Notes Domino 8.5 developers who want to learn how to use Java in Notes and Domino applications. A basic knowledge of Java programming and how to create Java agents in Domino is required. The recommended prerequisite is:
  • TLCC's Beginner Java Programming for Notes Domino 8.5
System Requirements
A Domino Designer 8.5 client and a current browser are required to take this course. Access to the Internet is required to get instructor support.

Course Modules

Module 1 - Running Java Agents from the Web
This module describes various ways to use Java web agents in your Domino applications. Learn how to program specific form events to run a Java agent when the user opens or saves a document. Discover how to run a Java web agent directly from a URL command. Learn to troubleshoot Java web agents via browser output, error-handling, and logging techniques.
  • List the types of web agents that Domino supports
  • Create and use a WebQuerySave agent
  • Use HTML to create a web page that gets displayed after the user submits a form
  • Use URL re-direction to display another web site or page
  • Program and use a WebQueryOpen agent
  • Understand the limitations of the WebQueryOpen agent
  • Program a WebQueryOpen agent to set editable field values in a document
  • Program a WebQueryOpen agent to set computed field values in a new or existing document
  • Use a WebQueryOpen agent to access information about the browser session
  • Call an agent from a URL
  • Use CGI variables in agents that are not associated with any form
  • Understand the effect of the Agent Manager fields in the Domino Directory's server documents
  • Understand the difference between restricted and unrestricted agents
  • Use browser output techniques for debugging
  • Use error-handling techniques to handle Java run-time errors
  • Use Agent Profiling to fine tune Java agents and Web Services
  • Use Domino Designer to debug Java agents running on the Notes client
  • Set up your own Agent Log database and record agent activities and errors
Module 2 - Working with Core Java Classes
In this module you learn more about the core Java classes. Many of the methods of the Domino object model return native Java objects and data types. This module introduces you to several of the most widely-used classes and provides examples of the native Java objects and data types.
  • Extend Domino functionality by importing Java class packages
  • Distinguish between classes, base (or super) classes, and interfaces
  • Use the String and StringBuffer methods of the java.lang package to manipulate strings
  • Use String methods to parse multiple arguments from a URL query string
  • Use regular expressions to match patterns in strings
  • Manipulate primitive numbers in Java
  • Use casting to change the data type of numeric values
  • Format numbers for output using methods from the java.text class package
  • Explain what a numeric object is
  • Use methods of the java.lang class to instantiate numeric objects
  • Extract a primitive numeric value from a numeric object
  • Perform type conversions on numeric object data
  • Use the Reader and Writer class methods of the package to read and output data
  • Use InputStream and OutputStream class methods of the package to read and output data
  • Use the URL and URLConnection classes of the package to connect programmatically to a web site
  • Use the URL and URLConnection methods to get information about a website connection
  • Use the URLEncoder class to prepare a string for use as a URL
  • Read XML from a network connection
Module 3 - Working with Vectors and Arrays
Vector and Array variables are data storage structures that hold multiple values. Many properties and methods in the Domino Object Interface return vectors. This module covers the basics of creating, assigning, and manipulating arrays and vectors and explains how to generate and manipulate date/time information in Java.
  • Learn what's included in the java.util class package
  • Understand the difference between arrays and vectors
  • Know the definition and structure of an array
  • Declare an array and assign its values
  • Access and manipulate array values
  • Understand the definition and structure of a vector
  • Declare a vector and assign its values
  • Access and manipulate vector components
  • Create and use an Enumeration object
  • Create and use an Iterator object
  • Understand the difference between the Java Date and Calendar classes
  • Use a Date object to store date/time information
  • Create and manipulate a Calendar object
  • Format dates in Java
Module 4 - Working with Notes Items and Rich Text Items
This module focuses on techniques for creating and working with Notes items and Rich Text items.
  • Review the Document methods that operate on items in a Notes document
  • Determine if a particular item exists in a document
  • Access the value or values stored in various types of Notes items
  • Change the value or values stored in the various types of Notes items
  • Use Item methods to determine or control the attributes of a field item
  • Create a Rich Text item in a Notes document
  • Add text to a Rich Text item
  • Add special characters, such as <TAB> and <RETURN> characters, to a Rich Text item
  • Work with docLinks, embedded objects, and file attachments in a rich text field
  • Use the RichTextStyle class to control the appearance of text characters that an agent appends to a Rich Text field item
  • Use the RichTextParagraphStyle class to control the appearance of paragraphs of text that an agent appends to a Rich Text item
  • Use the NotesRichTextNavigator class to navigate and work with rich text elements
  • Use the NotesRichTextRange class to work with a range of rich text
  • Use the NotesRichTextTable class to create, change and remove tables
Module 5 - Using Notes Item Techniques to Enhance Web Applications
This module will teach you several item manipulation techniques to enhance your web applications.
  • Validate item values in a WebQuerySave agent
  • Prevent duplicate submissions of incomplete documents
  • Pass data from one Domino database to another when a user submits a web form
  • Develop a multiple-item sales order application
Module 6 - Gathering Document Collections
Domino supports several searching techniques that return a collection of documents. For example, the search and FTSearch methods of the Database class both return document collections based on a search criteria. This module describes and demonstrates the techniques to gather a Notes document collection.
  • Learn about the DocumentCollection class and its properties and methods
  • Navigate a document collection
  • Gather a collection of response documents
  • Search a view with the getAllDocumentsByKey method of the View class
  • Search a database by using the search method of the Database class
  • Understand what a full text search is
  • Determine if a database has a full text index
  • Generate a full text index for a local database
  • Programmatically execute a full text search with the FTSearch method of the Database class
  • Reduce a collection with the FTSearch method of the DocumentCollection class
  • Gather a collection of Profile documents
Module 7 - Processing Document Collections
This module describes and demonstrates the techniques for processing a Notes document collection.
  • Mark an entire collection as processed by using the stampAll method
  • Understand the unprocessed documents property
  • Gather the documents that an agent has not processed
  • Unconditionally mark as processed all of the documents in a collection
  • Mark as processed only some of the documents in a collection
  • Add a document to a collection
  • Remove a document from a collection
  • Use the removeAll method for mass deletions from a database
Module 8 - Working with View Entries
The Domino Object Interface includes several classes to work with views. This module describes the view entry feature and details techniques for gathering and processing view information using the ViewEntryCollection, ViewNavigator, and ViewEntry classes.
  • Use the properties and methods in the ViewEntry class
  • Gather a collection of view entries from a Notes view
  • Navigate and process a collection of view entries
  • Create a ViewNavigator object
  • Use the navigational methods in the ViewNavigator class
Module 9 - Adding Reports to Your Application
A Domino view may not be able show the information from the database in the format you need. An alternative is to create a report. This module describes the need for reports, the different reporting styles, and how to add reports to your Domino applications.
  • Understand the need for reporting in Domino applications
  • Understand the requirements for structured data when creating reports
  • Distinguish the several reporting characteristics and styles, including periodic, on-demand, and ad-hoc reports
  • Use views as a report design tool
  • Understand the limitations for using views for reports
  • The three basic steps required to produce a report
  • Distinguish criteria from summary reports
  • Use dynamic tables as a versatile reporting structure
  • Generate a criteria report
  • Generate a summary report