Your Mission

If you see this you probably don't have Java support.

Data Description for this Assignment

There are three primary entities and two relationship entities, which will be represented by tables as listed below. The field name in red text denotes the primary key for this table:

  1. Planet - represents a planet of the Galactic Republic.
    Field NameField typeField Description
    Planet_namechar(20)Name of the planet, transliterated to ISO-Latin chars
    atmospherechar(20)Atmospheric type, one of "oxygen", "methane", "carbon dioxide", or "vacuum"
    political_systemchar(25)"Republic", "Monarchy", "Trade Federation", "Tribal", "Warlords", etc.
    descriptiontextBrief description of the planet's geographic/historical/social/economic main features
  2. Jedi - represents an individual Jedi Knight
    Field NameField typeField Description
    Jedi_namechar(20)Name of the Jedi Knight, transliterated to ISO-Latin chars
    home_planetchar (20)(foreign key) Name of the Jedi's planet of origin
  3. Mission - represents a mission to which Jedi Knights have been assigned
    Field NameField typeField Description
    idintAuto-generated primary key
    mission_namechar(20)Short title of the mission
    descriptiontextLonger description of the mission
  4. Mission_planet - represents the fact that a given mission involved a given planet. A single mission can involve multiple planets.
    Field NameField typeField Description
    mission_idintForeign key: id of a mission
    planetchar(20)Foreign key: Name of a planet
  5. Mission_jedi - represents the fact that a given Jedi Knight participated in a given mission. A single Jedi can participate in multiple missions.
    Field NameField typeField Description
    mission_idintForeign key: id of a mission
    jedichar(20)Foreign key: Name of the Jedi Knight

These tables will be contained in a MySQL database named "jedi" on waycross.cs.uga.edu. The user "guest" can access this database without a password.

System Functionality

The system should have the following functionalities. For each functionality, we will provide a template client page:

FunctionalityTemplate pageDescription
Jedi lookup:jedi_lookup.html Select from a dynamically populated list of all Jedis. Returns:
  1. The Jedi's home planet;
  2. A list of planets for which the Jedi has participated in missions involving this planet;
  3. A list of other Jedis who have participated in missions with this Jedi.
Planet lookup:planet_lookup.html Select from a dynamically populated list of all planets. Returns:
  1. Political system, atmosphere, and description of the planet;
  2. A list of Jedis for whom this is their home planet;
  3. A list of Jedis who have participated in missions involving this planet;
  4. A list of Jedis who have participated in missions involving planets with the same political system as this planet;
  5. A list of Jedis who have participated in missions involving planets with the same atmosphere as this planet.

The template client pages are each directed at a diagnostic server page that lists the names and values of all the CGI request parameters sent by the client. Feel free to examine the code of this diagnostic page for programming tips, but please do not copy the code into your project.

Technology to use:

  1. You will create two Java server pages (JSP pages), one for each client listed above.
  2. Each JSP will use a JavaBean. You may choose to write a single JavaBean or two JavaBeans.
  3. The JavaBean(s) will use JDBC to connect to the MySQL database server on Ganesha. We will provide examples in class.
  4. When the JavaBean returns a list of items to the JSP page, use the JSP Standard Template Library to iterate through this list on the results JSP page. We will show examples in class.
  5. The faster-than-light communications needed to deploy this system on a galactic scale are beyond the scope of this course. For more info, please see CSCI/ENGR 4761, Subspace Communications Technology.

Coding and specifications:

JavaBean API

Remember that the JavaBean communicates with its associated JSP page through getXXX and setXXX methods. For example, in a standalone Java class you would probably use this interface to return a list of Jedi who have participated in some mission along with a given Jedi:

However, the JavaBean class would need something like the following. Note that the bean needs a variable jediName to allow the JSP page to pass in the chosen Jedi who is to be looked up, but the bean does not need a variable to hold the list of matching Jedi, which is generated dynamically:

Privacy and submission

Your Java classes and JSP pages will need to be publicly readable for the Tomcat web server to use them. Please keep your Java source code outside of the public directories in order to prevent other students from peeking at your work.

Credits:

Thousands of amateur Star Wars fans have combined to populate the Star Wars universe. Special thanks to the following sources:

"Many Bothans died to give us this information..."