package net.java.dev.weblets.demo.sourcecodeweblet;
import net.java.dev.weblets.WebletRequest;
import net.java.dev.weblets.WebletResponse;
import net.java.dev.weblets.WebletUtils;
import net.java.dev.weblets.util.IWebletUtils;
import net.java.dev.weblets.util.CopyStrategyImpl;
import net.java.dev.weblets.util.CopyStrategy;
import java.io.*;
/**
* Sourcecode decorating copy strategy
* for the beautification of the sources
*/
public class SourcecodeCopyStrategy extends CopyStrategyImpl implements CopyStrategy {
public void copy(String webletName, String mimeType, InputStream in, OutputStream out) throws IOException {
copyText(webletName, new InputStreamReader(in), new OutputStreamWriter(out));
}
protected void copyText(String webletName, Reader in, Writer out) throws IOException {
byte[] buffer = new byte[2048];
int len = 0;
int total = 0;
BufferedReader bufIn = new BufferedReader(mapResponseReader(webletName, in));
PrintWriter bufOut = new PrintWriter(mapResponseWriter(out));
try {
writehttphead(bufOut);
writeResource(bufIn, bufOut);
writehttpbottom(bufOut);
} finally {
bufIn.close();
bufOut.close();
}
}
private void writehttpbottom(PrintWriter writer) {
writer.write("\n");
writer.write("</pre></div></body></html>");
}
private void writeResource(BufferedReader reader, PrintWriter writer) throws IOException {
while (reader.ready()) {
String line = reader.readLine();
line = line.replaceAll("<", "<").replaceAll(">", ">");
writer.write(line);
writer.println();
}
}
private void writehttphead(PrintWriter writer) {
writer.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
writer.write("<html><head>");
writer.write("<link rel=\"stylesheet\" href=\"");
writer.write(WebletUtils.getURL("weblets.demo", "/styles/weblets.css"));
writer.write("\" ></link>");
writer.write("</head><body><div class=\"header_bg\" /><div class=\"content\"><pre>");
writer.write("\n");
}
}