} else { // log viewer
response.setContentType("text/html");
PrintWriter out = response.getWriter();
UITemplate uit = new UITemplate();
String tplPath = "webapp/commons/tpl/"; // UI tempalet file path
String tplfile = uit.load(tplPath + "tpl.logview.html"); // UI tmepalte
// file
HashMap<String, String> vars = new HashMap<String, String>();
String tplHead = uit.getArea(tplfile, "head");
String tplTail = uit.getArea(tplfile, "tail");
vars.put("title", "logview");
vars.put("hamaLogDir", hamaLogDir);
out.println(uit.convert(tplHead, vars));
vars.clear();
if (pageType.equals("list")) { // list
String[] listArea = new String[4];
listArea[0] = uit.getArea(tplfile, "list0");
listArea[1] = uit.getArea(tplfile, "list1");
listArea[2] = uit.getArea(tplfile, "list2");
listArea[3] = uit.getArea(tplfile, "list3");
vars.put("hamaLogDir", hamaLogDir);
vars.put("dirName", dirName);
vars.put("targetUri", targetUri);
out.println(uit.convert(listArea[0], vars));
vars.clear();
List<File> arrayList = LogView.getLogFileList(logDirPath);
File file;
for (int i = 0; i < arrayList.size(); i++) {
file = arrayList.get(i);
vars.put("dirName", dirName);
vars.put("fileName", file.getName());
vars.put("fileLastModified",
new Date(file.lastModified()).toString());
vars.put("targetUri", targetUri);
if (file.isDirectory()) {
vars.put("type", "dir");
out.println(uit.convert(listArea[1], vars));
} else {
vars.put("fileLength", LogView.convertFileSize(file.length()));
vars.put("type", "file");
out.println(uit.convert(listArea[2], vars));
}
}
vars.clear();
out.println(uit.convert(listArea[3], vars));
} else if (pageType.equals("detail")) { // detail
String[] detailArea = new String[4];
detailArea[0] = uit.getArea(tplfile, "detail0");
detailArea[1] = uit.getArea(tplfile, "detail1");
detailArea[2] = uit.getArea(tplfile, "detail2");
vars.put("dirName", dirName);
vars.put("fileName", fileName);
vars.put("hamaLogDir", hamaLogDir);
vars.put("targetUri", targetUri);
out.println(uit.convert(detailArea[0], vars));
BufferedReader br = null;
String logLine;
try {
br = new BufferedReader(new FileReader(logfilePath));
while ((logLine = br.readLine()) != null) {
vars.put("logLine", logLine);
out.println(uit.convert(detailArea[1], vars));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
br.close();
}
}
out.println(uit.convert(detailArea[2], vars));
} else if (pageType.equals("tail")) { // tail
String tailLine = request.getParameter("tailLine");
tailLine = (tailLine == null) ? "100" : tailLine;
String[] tailArea = new String[3];
tailArea[0] = uit.getArea(tplfile, "logtail0");
tailArea[1] = uit.getArea(tplfile, "logtail1");
tailArea[2] = uit.getArea(tplfile, "logtail2");
vars.put("hamaLogDir", hamaLogDir);
vars.put("dirName", dirName);
vars.put("fileName", fileName);
vars.put("tailLine", tailLine);
vars.put("pageType", pageType);
vars.put("targetUri", targetUri);
out.println(uit.convert(tailArea[0], vars));
vars.clear();
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
try {
String tailcmd = "tail -" + tailLine + " " + logfilePath;
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(tailcmd);
is = process.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
String eachLine = "";
int lineNum = 0;
while ((eachLine = br.readLine()) != null) {
vars.put("lineNum", Integer.toString(++lineNum));
vars.put("logLine", eachLine);
out.println(uit.convert(tailArea[1], vars));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
br.close();
}
if (isr != null) {
isr.close();
}
if (is != null) {
is.close();
}
}
vars.clear();
out.println(uit.convert(tailArea[2], vars));
} else if (pageType.equals("tasklist")) { // job list
String jobId = request.getParameter("jobId");
String[] listArea = new String[3];
listArea[0] = uit.getArea(tplfile, "tasklist0");
listArea[1] = uit.getArea(tplfile, "tasklist1");
listArea[2] = uit.getArea(tplfile, "tasklist2");
ServletContext ctx = getServletContext();
BSPMaster tracker = (BSPMaster) ctx.getAttribute("bsp.master");
ClusterStatus status = tracker.getClusterStatus(true);
JobStatus jobStatus = tracker.getJobStatus(BSPJobID.forName(jobId));
vars.put("hamaLogDir", hamaLogDir);
vars.put("dirName", dirName);
vars.put("targetUri", targetUri);
vars.put("jobId", jobId);
vars.put("jobStatus", jobStatus.getState().toString());
vars.put("jobName", jobStatus.getName());
out.println(uit.convert(listArea[0], vars));
vars.clear();
for (Entry<String, GroomServerStatus> entry : status
.getActiveGroomServerStatus().entrySet()) {
vars.put("jobId", jobId);
vars.put("dirName", dirName);
vars.put("serverName", entry.getKey());
vars.put("hostName", entry.getValue().getGroomHostName());
vars.put("targetUri", targetUri);
vars.put("type", "dir");
out.println(uit.convert(listArea[1], vars));
}
vars.clear();
out.println(uit.convert(listArea[2], vars));
}
out.println(tplTail);
}