From: Brad <bra...@us...> - 2005-10-18 02:31:10
|
Update of /cvsroot/archive-access/archive-access/projects/wayback/src/java/org/archive/wayback/ippreplayui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3483/src/java/org/archive/wayback/ippreplayui Added Files: InPagePresenceReplayUI.java Log Message: Initial check-in -- pre code review --- NEW FILE: InPagePresenceReplayUI.java --- package org.archive.wayback.ippreplayui; import java.io.IOException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.archive.io.arc.ARCRecord; import org.archive.wayback.core.Resource; import org.archive.wayback.core.ResourceResult; import org.archive.wayback.core.ResourceResults; import org.archive.wayback.core.WMRequest; import org.archive.wayback.rawreplayui.RawReplayUI; public class InPagePresenceReplayUI extends RawReplayUI { public InPagePresenceReplayUI() { super(); // TODO Auto-generated constructor stub } private boolean isRawReplayResult(ResourceResult result) { if (-1 == result.getMimeType().indexOf("text/html")) { return true; } return false; } public void replayResource(WMRequest wmRequest, ResourceResult result, Resource resource, HttpServletRequest request, HttpServletResponse response, ResourceResults results) throws IOException { if (resource == null) { throw new IllegalArgumentException("No resource"); } if (result == null) { throw new IllegalArgumentException("No result"); } if (isRawReplayResult(result)) { super.replayResource(wmRequest, result, resource, request, response, results); return; } ARCRecord record = resource.getArcRecord(); record.skipHttpHeader(); copyRecordHttpHeader(response, record, true); // slurp the whole thing into RAM: byte[] bbuffer = new byte[4 * 1024]; StringBuffer sbuffer = new StringBuffer(); for (int r = -1; (r = record.read(bbuffer, 0, bbuffer.length)) != -1;) { String chunk = new String(bbuffer); sbuffer.append(chunk.substring(0, r)); } insertIPP(sbuffer, result, results); response.setHeader("Content-Length", "" + sbuffer.length()); ServletOutputStream out = response.getOutputStream(); out.print(new String(sbuffer)); } private void insertIPP(StringBuffer page, ResourceResult result, ResourceResults results) { int idx = findIPPInsertPoint(page); String ippInsert = makeIPPInsert(result, results); page.insert(idx, ippInsert); } private int findIPPInsertPoint(StringBuffer page) { return page.length(); } private String makeIPPInsert(ResourceResult result, ResourceResults results) { StringBuffer ippInsert = new StringBuffer(); ippInsert.append("<DIV NAME=\"iawm_ipp\">"); ippInsert.append("IPP"); ippInsert.append("</DIV>"); return ippInsert.toString(); } } |