Amy's Devblog

A blog containing information on all my work/education projects.

Thursday, July 21, 2005

Dynamic Forms

I worked on an addition to ESIWEB that uses CMS to store data representing an HTML form, displays the form, and processes responses. Any number of forms can be stored, and generic code is used for display/processing, using the relative path of the form node to determine which form to retrieve/display.
  • Used CMSUI to define node types representing a form and its related questions. The properties for the node types include information about the type of form input (radio button, text, checkbox, etc.), properties that allow the form designer to customize display aspects including spacing, color schemes, etc. and properties that allow Javascript to be added to the overall form and each individual question.
  • Wrote servlet to handle retrieving nodes and properties for a specified form, putting the data into beans, and then forwarding to a JSP page for display.
  • Designed JSP page to read the bean data from the request, iterate through the questions and display the contents. The JSP page uses JSTL and in-line styles, as well as Javascript for validation. The same page is used if an error is encountered when a form is submitted. The form is redisplayed with the user's previous answers pre-populated.
  • Wrote servlet to handle processing of form responses. The servlet reads the user's response data from the request parameters and generates an email containing the text of each question and the response given, if any. The address to which the emails are sent is a property of the form node.

CMSUI Set Permissions

I developed the portion of CMSUI that allows a user to view and set permissions on a node. When CMSUI displays the properties for a node, the servlet sets a bean property that is the permission data (an array of PermissionInfo objects) converted to a string representing an HTML table of that data. The user clicks a button which opens a new smaller window that allows users/roles to be added or deleted and the permission settings for a particular user/role to be modified. All modifications are handled through Javascript code which changes the data in the HTML table. When attempting to add a user/role to the permission list, the Javascript code uses an XMLHttpRequest object to retrieve a list of users/roles whose names match the string typed in by the user. This type of object allows retrieval of XML data from the server in the background without having to reload the page. When the user clicks 'OK' the table innerHTML property is saved to a hidden input of the node/properties form in the main CMSUI window and the permissions window is closed. When the user saves the node, the servlet takes the innerHTML data and uses a DOM XML parser to convert the data back into an array of PermissionInfo.

Monday, July 18, 2005

ESIWEB User Directory Project

The ESIWEB project is a web application consisting of the company's public web site and pages for employee access only. I designed an employee directory page and also an employee information page that allows a user to edit his or her own information such as phone number, address, project, etc. The ESIWEB project uses the CMS project for managing content, users, etc. Technologies used for this project included:
  • Servlets (used when sorting columns, processing changeInfo form, etc.)
  • JSPs (used to display directory and changeInfo form)
  • Custom Tags (used to retrieve list of users, a specific user, etc.)
  • JSP Standard Tag Library (loops, conditional statements, etc.)
  • JSP Expression Language
  • CSS (to style output pages)

CMS Active Directory User Model Project

My first project was related to the CMS project, ESI's implementation of JSR-170, the Content Repository API for Java specification. I worked on a user model implementation that utilized Windows Active Directory. I researched how to enable AD for access using SSL over LDAP. The user model classes used the JNDI API to access AD using SSL. I mapped the data we wanted to store to the appropriate attributes in AD and wrote code to add/modify/delete users and roles (groups), authenticate users, perform lookups, etc. I also implemented methods to export and import the user/role data to XML.

Courses completed so far

Thomson NetG Online Courses
  • Java Programming for SDK 1.4 Part 4 - Language Features, completed 12/6/04
ESI-sponsored courses taught by Marty Hall
  • Web Application Development with Servlet and JSP Technology, completed October 2004
  • Advanced Servlets, JSP and Apache Struts, completed March 2005

Friday, July 15, 2005

My First Post

This blog will help me to keep track of all my experience related to software development.