PolyPhony Server
PolyPhony Server is Classwave's core product. This project uses a component framework to provide common services such as authentication, authorization, user profile management, resource management, message logging, email access over wireless networks. Its primary goal is to allow enterprises and organizations to expand their information services to a mobile audience through Bluetooth access points. I participated in all phases of this multi-tier application development since March 2000. The first phase used a Classwave developed RMI server to provide Java object mapping and persistence against an Oracle database. My tasks included development of a system management adapter and implementation of this adapter through a Web portal to provide service, group and user profile management. I also developed a WAP portal from which users can customize their user profile and send text messages through SMS gateways. The second phase used Weblogic5.1 as its application server and EJB technology. My tasks included multi-tier configuration management, EJB development and deployment and client side portal development. The third phase used Weblogic 6.0 as its application server, and EJB technology. I laid the foundation for the presentation team to use Apache's Struts framework to develop the portal. This framework maximized the separation of the view and model (Model-View-Controller). The consequences are the separating of tasks among Web designers and Java developers, speeding up the development process and most of all, ensuring easy future maintenance and adaptability to change. XML was also widely used.
Wireless Relay Chat (WRC)
I was in charge of this multi-tier Web and WAP application that used technologies such as multi-threading, connection pooling, RMI, servlets, JSP, applets, SMS wireless gateway and Oracle. With this application, communications can be established between any of the following combination of devices: WAP phone to WAP phone, WAP phone to a PC, PC to a WAP phone and PC to PC. HTML and HDML (or WML) are generated by two separate sets of servlets that are deployed on Java Web Server 2.0.
Click here to find out how to reference WRC to help you in your job search and interview.
CELLEVENT - Event notification Server
CellEvent Introduction
The CellEvent Server is a new form of middle-ware application, which runs on the customers' server and connects the business databases, email programs and collaborative servers with the wireless message services. The CellEvent program is written in Java and so will run on a wide variety of operating systems, however to connect to the Microsoft Exchange server it is required that a Windows NT system is available to run the program. The application is designed to get information sent to the wireless devices through the Short Messaging Systems provided by the carriers, and these messages can be database reports, scheduled notice messages, email notifications based on profiles or just one-time messages.
How CellEvent Works
CellEvent is a separate server service that is continually running on the host server and is collecting information from SQL or ODBC databases or monitoring email servers and collaborative servers for events, which match a particular user profile. The server requires that a local SQL database is installed and available so that information concerning users and groups as well as messages and profiles can be stored, searched and retrieved. When a specific message is scheduled to be delivered to a user or a group of users the CellEvent server first collects the data from the database or the email server, then composes the message(s) and then forwards those messages to the carriers gateway (or SMS server). The CellEvent server waits to receive acknowledgment that the messages have been sent and will then continue on to the next task. The server offers an administration program for creating and managing groups, users, messages and schedules.
The User Administration
Module provides the capability to manage the users and
groups of users that are recipients of the messages or
notifications. Users are given passwords and ID's that relate to
the cell phone, pager and device numbers or ID's, which can be
easily edited. Groups can be created which share common
information profiles such as a sales department, field service
group, executive management group and so on. Schedules and
message event timing are also configured with this module. The
attributes and profiles of these groups and users are stored in
an SQL database, which is available with the program or can be
supplied by the client.
The Profile Management
Module stores the personal or group profiles that match
the incoming information with stored objects and when a match is
realized the notification will be sent. For example the profiles
can be a set of keywords in an email subject field such as
'important' or 'news' or 'urgent', or they could be a simple text
keyword that is compared with a news feed, or the profile could
be a database value that is exceeded (sales > $200) , or
simply a stock price change. These profiles can be configured to
be persistent or expire in a given timeframe, and are also stored
in an SQL database.
The Gateway module
provides the communications service to the various wireless
messaging services such as SMS, WAP, Net Alert or CGI/HTTP
services. The gateway can be easily configured to send messages
to conventional formats such as email and fax. The gateway is
designed to connect to existing carrier( such as Sprint or
AT&T) SMS systems and will adhere to protocols provided by
each carrier. The gateway can also send packets using object
transfer protocols such as RMI and CORBA. The gateway can be
configured to format the outgoing message to the limits of the
device such as screen resolutions and formats, since different
devices can handle differing amounts of text. The gateway module
can also communicate with WAP enabled devices to allow more
structured messages to be sent in the WML (Wireless Markup
Language) format.
The Business Application
Adapters are the modules that are used to communicate
with the business software products used in-house. They include;
adapters for SQL and ODBC compliant databases such as Access,
Oracle, DB2 and Sybase to allow reports to be generated; Adapters
for Enterprise Resource Planning applications such as BAAN,
PeopleSoft and SAP; Adapters for mail and collaborative servers
such as MSExchange, Lotus Notes and Netscape Message server; and
Adapters to text and web text content such as news feeds and
stock services and sales automation systems such as Maximizer and
ACT.
Technology details
The server is written in Java and
is designed to run on any networked server which supports the
Java VM version 2. The system requirements include a small
footprint SQL database such as Oracle Lite for storing user and
group as well as profile information. This database can reside on
any other networked server. The server also requires an HTTP
server to be available which supports Servlets - this includes
IIS, Apache, Netscape and the Java Web Server. Servlets are used
in conjunction with HTML forms on the browser to facilitate user
preference settings and administrative tasks. The server requires
at least 64Mb of memory to be available on the primary host and
the JavaVM to be installed in the host computer. The CellEvent
server can be configured to use a proxy server if a coporate
firewall is being used. The proxy server can be configured for
any IP address and any port number from 1024 to 64K. The server
can handle multiple simultaneous connections and is a
multi-threaded service, which facilitates multiple simultaneous
message broadcasts. A java client program is provided to allow
administration of the services and users, this is also used to
import and configure databases and to convert SQL data tables
from one format to another. The adapters to the mail and
collaborative servers allow for certain keywords and/or senders
to be used to trigger a notification, for example the subject
field may contain a certain keyword that causes a notification to
a CellEvent user to be triggered. The CellEvent
architecture is highly flexible and can be adapted to a wide
range of business applications and information sources, event
notification can even be triggered by a physical event such as an
alarm sounding or a door being opened, through the use ot JINI or
Embedded Java devices.
WebEvent - Company Message Notification Server
WebEvent is a Web vision of CellEvent described above. It resides on one company's server. The services can be subscibed by different companys, coperations and businesses. All administration program for creating and managing groups, users, messages and schedules are carried out online from any PC which is connected to the Internet. Please click Servlets version for the version finished mostly using Servlets. Click JSP version for the version finished mostly using JavaServer Pages and login with "user0" for username and "pass0" for password and try out the services. At the moment it is under developing, so beware of changes and server shutting-downs. I am in charge of this project which is the key project of the company. To try this service yourself, your cellular phone sevice provider must be Clearnet because at the moment the message is sent out through Clearnet's SMS gateway. It will be targeted to all carriers. If you do have a Clearnet cellular phone, after you login, click on "Add Contact", add your mike number with your pseudo names. Then click on "Send One-Time Message", choose "Deliver To User:" and from the drop-down list, choose the contact with your cell number, type a simple message and submit it. This message will be notified on your cellular phone. Or if you wish to send a message to someone immediately, please use my creation with the Message Center where you can send a message to any body using any service provider on the service list.
CellBuddy
CellBuddy is a consumer information service. CellBuddy offers Consumers & Wireless Carriers
the opportunity to build custom information services for their existing retail and corporate client base. CellBuddy helps in both client retention and additions. The CellBuddy service can be easily configured to communicate with proprietary messaging gateways such as SMS or WAP, or can simply send notifications through HTTP or CGI based interfaces. The service offers the unique ability to allow subscribers to set up their own personalized information events. Users obtain a single ID to which they can add both their cell number and pager number and messages will potentially be sent to both. The service is designed to be flexible enough to allow a huge variety of information feeds to be added, such as local news, weather, travel and local events. The CellBuddy service can be configured to provide community level information such as TV listings or local concerts and entertainment, road closures and severe weather conditions.
CellBuddy is a new service offered to consumers who wish to receive personalized information on their cell phone or pager immediately upon a predefined event happening or on a user-defined schedule.The service requires users to have access to the Internet to select the personal options. It is available on the Internet at www.cellbuddy.com, and requires the user to enter some personal information to obtain a CellBuddy ID. Once the user has the ID they can subscribe and configure their personal information services. These services currently include:
Stock Notification
News server
Weather Service
Personal Reminders
Message Center
Concert Reminders
Lottery Results
Sports Scores and Results
For details of services, please view the following Web page:
http://www.cellbuddy.com/services.html
Or click this web site to send a message to anybody who has a mobile phone or pager using this applet:
http://trade.classwave.com:8080/cellbuddy/CellBuddyMessage.htm. For mobile phone, you have to select the service provider of the owner. It is a combination of technologies including Applet, Servlet, JavaScript, Oracle and wireless technologies.
Cowboy
(Click the title to show. Description coming soon)
Contact Manager
A self-developed Java application which runs on top of an MS Access database using JDBC, ODBC. It tracks personal
contacts. The user can maintain (add, delete, view, find, navigate and change) the contacts'
information. Navigation of the contact list can be done with four options: by last name,
first name, contact ID and telephone number. The past events can be automatically stored
in the "Past Events" table, thus guaranteeing the "Scheduled Events" table always keeps
the future events. If there are events on current day, the events will be automatically displayed when the user opens the application. The user can check for the closest event by pressing the "Closest Event" button. The user can glance at events of a given date by simply entering the date and pressing a button. The user can also add a new schedule, change a schedule or cancel a schedule. The application guarantees that the database has:
- Entity integrity. A contact and an event are always added with a unique ID. The contact ID and event counter are not duplicated.
- Data integrity. If the user entered the wrong format of date and time, dialog boxes will provide the correct date and time format.
- Referential integrity. When the user wants to delete a contact by clicking the "Delete" button if this contact has events in the "Scheduled Events" table, a dialog box would tell the user that the contact has events and gives two options "OK" and "Cancel" to the user. If the user presses "OK", not just the contact is deleted from the "Contacts" table, but a cascade deletion will delete all the contact's events from the "Scheduled Events" table. But when there is no event for that contact, clicking the "Delete" button would delete the contact without asking.
The "Find" button would bring a dialog box for the user to enter the contact's last name to be found and when the user presses Enter, the first contact with that last name would be highlighted. The "Next" button would lead the user to the desired contact. But when it is not found, a message "Not Found" would be displayed.
All four tables in the database can be displayed by pressing the corresponding button. When the user begins to retain the events in the "Past Events" table, the user has three choices(three radio buttons): "On Time", "Not On Time" and "Delete". When "On Time" is pressed, the highlighted event is transferred to the "Completed Events" table, completed date and time would be the same as the scheduled date and time; when the "Not On Time" button is pressed, the user is prompted with two text boxes to enter the completed date and time. The event would then be transferred to the "Completed Events" table with scheduled date, time and with a different completed date and time. When the "Delete" button is pressed, the event is deleted as it was unimportant to the user or the user did not accomplish that task at all.
This application demonstrates skillful use of SQL, excellent layout management and comprehensive knowledge of object oriented development and relational database.
This application implements the following interfaces:
- ActionListener.
- WindowListener.
- ItemListener.
- TextListener.
Geometric Classes
A collection of geometric classes developed using C++. The collection starts with a class
'point'. Two points would be a line. Both implicit and explicit objects (points) are used
to calculate the distance between two points - the length of a line. Then classes of 'square',
'rectangle', 'triangle' and 'circle' are added as sub-classes of the class 'point'. They,
apart from inherit properties and methods of class point, all have their own properties
and methods for calculating area and perimeter. Again it shows the skills of object oriented
development.
Library Database Manipulation-Client/Server
Application
An application using Visual Basic 5.0 (client) and MS-SQL server. Added functionality
included:
- Calling up a library patron information by supplying (1)client ID or (2)
last and first names.
- Deleting a client from the database.
- Updating client information.
- Browsing for a client by supplying partial last name.
- Adding a new client.
- Browsing for book by supplying its partial title.
- Loaning the book to a client.
It demonstrates such skills:
- Using SQL and RDO.
- Writing add, update, delete and select procedures for SQL server.
- Writing triggers to guarantee that the database has:
- Entity integrity.
- Referential integrity.
- Data integrity.
- Business rules (Business Logic).
- Calling procedures from Visual Basic(client) and passing parameters.
- Error handling from both Visual Basic(client) side and SQL server side.
- Teamwork, problem solving and time management.
Visual Scheduler
A Visual Basic application which runs on top of an MS Access database using DAO. This is the Visual Basic Version of the "Contact Manager" described above. It tracks personal
contacts. The user can maintain (add, delete, view, find, navigate and change) the contact
information. Navigation of the contact list can be done with four options: by last name,
first name, contact ID and telephone number. The past events can be automatically stored
in the Past Events table, thus guaranteeing the Scheduled Events table always keeps
the future events which are constantly checked for the closest one. When it is within a
certain time, a reminder is automatically triggered to remind the user with flashing
heading and bell, and at the same time the event details appear on the screen. A visual
calendar and time list are used to add a new event or reschedule an event. The user can
glance at events of a day by simply choosing a date from the calendar and pressing a button. The application
crystal report gives well formatted details from the Contact, Scheduled Events and
Completed Events table. Most of the applications can be launched in one of three manners:
- Clicking a command button.
- Selecting the application icon from a toolbar.
- Selecting the item from a menu.
All four tables in the database can be displayed and edited by pressing the corresponding button from the OLE creation menu which can launch MS Access application within this application.
When the user begins to retain the events in the "Past Events" table, the user has three choices(three radio buttons): "On Time", "Not On Time" and "Delete". When "On Time" is pressed, the highlighted event is transferred to the "Completed Events" table, completed date and time would be the same as the scheduled date and time; when the "Not On Time" button is pressed, the user is prompted with two text boxes to enter the completed date and time. The event would then be transferred to the "Completed Events" table with scheduled date, time and with a different completed date and time.
When the "Delete" button is pressed, the event is deleted as it was unimportant to the user or the user did not accomplish that task at all.
A status bar provides instant help text for the user and it indicates current date, time. The status bar also gives the on/off status of the reminder.
This application has the same functionality as its Java version to ensure entity integrity, data integrity and referential integrity of the database.
Other features:
- From help menu the user can connect to the service providing company's home page for final help;
- Screen saver;
- Logon with user name and password;
This application demonstrates skillful use of SQL, OLE, DAO and Crystal Report. It is yet another program using object oriented techniques and relational database.
Data Modeling (click to show)
Tim's Calculator - Java applet
Other Java Applets