1 /** 
   2  * FacadePattern example
   3  */
   4 
   5 import java.io.*;
   6 import java.util.Properties;
   7 
   8 class Database {
   9     private Database() {  // cannot make instance by new
  10     }
  11     public static Properties getProperties(String dbname) {
  12         String filename = dbname + ".txt";
  13         Properties prop = new Properties();
  14         try {
  15             prop.load(new FileInputStream(filename));
  16         } catch(IOException e) {
  17             System.out.println("Warning: "+filename+" is not found.");
  18         }
  19         return prop;
  20     }
  21 }
  22 
  23 class HtmlWriter {
  24     private Writer writer;
  25     public HtmlWriter(Writer writer) {
  26         this.writer = writer;
  27     }
  28     public void title(String title) throws IOException {
  29         writer.write("<html>");
  30         writer.write("<head>");
  31         writer.write("<title>"+title+"</title>");
  32         writer.write("</head>");
  33         writer.write("<body>\n");
  34         writer.write("<h1>"+title+"</h1>\n");
  35     }
  36     public void paragraph(String msg) throws IOException {
  37         writer.write("<p>"+msg+"</p>\n");
  38     }
  39     public void link(String href, String caption) throws IOException {
  40         paragraph("<a href=\""+href+"\">"+caption+"</a>");
  41     }
  42     public void mailto(String mailaddr, String username) throws IOException {
  43         link("mailto:"+mailaddr, username);
  44     }
  45     public void close() throws IOException {
  46         writer.write("</body>");
  47         writer.write("</html>\n");
  48         writer.close();
  49     }
  50 }
  51 
  52 class PageMaker {
  53     private PageMaker() {  // cannot make instance
  54     }
  55     public static void makeWelcomePage(String mailaddr, String filename) {
  56         try {
  57             Properties mailprop = Database.getProperties("maildata");
  58             String username = mailprop.getProperty(mailaddr);
  59             HtmlWriter writer = new HtmlWriter(new FileWriter(filename));
  60             writer.title("Welcome to "+username+"'s page!");
  61             writer.paragraph(username + "'s page");
  62             writer.paragraph("mail address");
  63             writer.mailto(mailaddr, username);
  64             writer.close();
  65             System.out.println(
  66                 filename+" is created for "+mailaddr
  67                 +" ("+username+")"
  68             );
  69         } catch(IOException e) {
  70             e.printStackTrace();
  71         }
  72     }
  73 }
  74 
  75 public class FacadeHtml {
  76     public static void main(String[] args) {
  77         PageMaker.makeWelcomePage("a1@bioinfo.sarang.net", "welcome.html");
  78     }
  79 }
web biohackers.net