かとじゅんの技術日誌

技術の話をするところ

DB上のテンプレートに対応させてみる

sugaさんからサポートをうけて,作ってみました.(sugaさん,親切に教えていただきありがとうございました)

public class DbSouceDescriptor extends ParameterAwareImpl implements
		WritableSourceDescriptor {

	public boolean canWrite() {

		return false;
	}

	public OutputStream getOutputStream() {

		return null;
	}

	public boolean exists() {

		// /default.mayaa, /index.htmlなどのシステムIDを用いて,DBからファイルの内容を引き出す.
		String systemId = this.getSystemID();


		templateBody = // DBからファイルの内容を取得.
		updateDate = // DBから更新日時を取得.
	

		return true;
	}


	public InputStream getInputStream() {
		if (templateBody == null) {
			return null;
		}
		ByteArrayInputStream bais = null;
		try {
			bais = new ByteArrayInputStream(templateBody.getBytes("UTF-8"));
		} catch (UnsupportedEncodingException e) {
			return null;
		}
		return bais;
	}

	public Date getTimestamp() {
		if (this.exists()) {
			return new Date(updateDate.getTime());
		}
		return new Date(0);
	}
}

クラスを新規に作ったら,resources/META-INF/org.seasar.mayaa.source.PageSourceFactory を書き換えて配置すればOKです.