CSCI 4230
Software Tools
Fall 1999
Suugested Solution to Homework #9

(1)    For example,

quote.jsp:

<jsp:useBean id="quote" class="temp.RandomQuote" scope="request">
    <jsp:setProperty name="quote" property="quoteType" param="quoteType" />
</jsp:useBean>
<BODY BGCOLOR=#CCCCFF>
Hello, your random quote on
<SPAN STYLE="COLOR:BLUE"><%= quote.getQuoteType() %></SPAN> is:
<P>
<jsp:getProperty name="quote" property="quote" />
</BODY>

RandomQuote.java:

package temp;
import java.util.Random;

public class RandomQuote {
   private static final String JAVA = "Java";
   private static final String PERL = "Perl";
   private static final String MISC = "miscellaneous";
   private static final Random RANDOM = new Random();

   private static final String[] JAVA_QUOTES = {
      "Java is good for your health.",
      "I want coffee beans, not Java Beans.",
      "Java is not my cup of coffee.",
      "Bill Gates hates Java.",
      "Two cups of Java and call me in the morning."
   };

   private static final String[] PERL_QUOTES = {
      "No more Perl!",
      "I'd rather have pearls, then Perl.",
      "Perl gives you good head massage.",
      "No Perl, no grade."
   };

   private static final String[] MISC_QUOTES = {
      "Make no mistakes.  I like Coke.",
      "Don't drink Coke today.",
      "Mama Jones lives here.",
      "Eat your own dog food!"
   };

   private String quoteType = JAVA;

   public void setQuoteType (String quoteType) {
       this.quoteType = quoteType;
   }

   public String getQuoteType () {
       return quoteType;
   }

   public String getQuote () {
       if (quoteType.equalsIgnoreCase(JAVA))
           return JAVA_QUOTES[Math.abs(RANDOM.nextInt()) % JAVA_QUOTES.length];
       else if (quoteType.equalsIgnoreCase(PERL))
           return PERL_QUOTES[Math.abs(RANDOM.nextInt()) % PERL_QUOTES.length];
       else
           return MISC_QUOTES[Math.abs(RANDOM.nextInt()) % MISC_QUOTES.length];
   }
}

(2)

(a)    For example,

<?xml version="1.0" ?>

<Memo>
   <To name="Kwok-Bun Yue" alias="bun" />
   <From>Michael Jordan</From>
   <Subject>Want to play one on one</Subject>
   <body>
       Hey, you need to improve your dunking skills.  Your shooting
   average is too low.  Should be > 50%. &lt;:-&gt;  M.J.
   </body>
</Memo>

(b)    For example, as generated by DTDGenerator:

<!ELEMENT body ( #PCDATA ) >
<!ELEMENT From ( #PCDATA ) >
<!ELEMENT Memo ( To, From, Subject, body ) >
<!ELEMENT Subject ( #PCDATA ) >
<!ELEMENT To EMPTY >
<!ATTLIST To alias NMTOKEN #REQUIRED >
<!ATTLIST To name CDATA #REQUIRED >