【注意】ここで紹介しているプログラムは、たまたま名前がカブってますが、UnderDone さんによるサービス FeedMail とはまったくの別物です。以下の内容について、UnderDone さんに問い合わせたりしないようにお願いします。
「スーパー pre」のテストを兼ねて、自作 FeedMail のソースを貼ってみる。Informa や Velocity の練習から始めたので、いろんな点で汚いけど。長いので、少しずつ。まずはエントリポイントを持つ FeedMail クラスから。
import java.io.*; import java.net.URL; import java.net.MalformedURLException; import java.util.*; public class FeedMail { private List urls = new ArrayList(); private Properties config; // config private String formatterName; public void addFeed(String url) throws MalformedURLException { urls.add(new URL(url)); } public void setFormatter(String f) { this.formatterName = f; } public void execute() throws IOException, FeedMailException { FeedInput input = new FeedInput(); List channels = input.receive(this.urls); VelocityFormatter formatter = new VelocityFormatter(this.formatterName); String text = formatter.format(channels); MailOutput output = new MailOutput(this.config); output.send(text); } public static void main(String[] args) throws IOException, Exception { org.apache.velocity.app.Velocity.init(); FeedMail fm = new FeedMail(); fm.config = loadProperties(args[0]); fm.setFormatter(fm.config.getProperty("formatter")); for (int i = 1; i < args.length; i++) { fm.addFeed(args[i]); } fm.execute(); } private static Properties loadProperties(String file) throws IOException { InputStream in = null; try { in = new FileInputStream(file); Properties props = new Properties(); props.load(in); return props; } finally { if (in != null) { try { in.close(); } catch (IOException e) { } } } } }