/**
* CopyRight by Chinamobile
*
* Browse.java
*/
package com.chinamobile.bcbsp.fault.browse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import com.chinamobile.bcbsp.fault.storage.Fault;
/**
*
*
* the browse reduce the List<fault> that can use in the jsp --list List<Fault>
* sortrecords = new ArrayList<Fault>();
*
*
*
*/
public class Browse {
// private String Path = null;
public ReadFaultlog readFaultlog = null;
public SortList<Fault> sortFault = new SortList<Fault>();
public List<Fault> sortrecords = new ArrayList<Fault>();
boolean recordDefaultflag = false;
boolean recordflag = false;
Date before = null;
Date now = null;
long bufferedTime = 30000;
long time = 0;
// -----------------retrieveByLevel(int month);--------------------
public Browse() {
String BCBSP_HOME = System.getenv("BCBSP_HOME");
String FaultStoragePath = BCBSP_HOME + "/logs/faultlog";
readFaultlog = new ReadFaultlog(FaultStoragePath, getHdfshostName());
}
/**
* get the record location futhur more to get the faultlog in localdisk or
* hdfs
*
* @return
*/
public String getHdfshostName() {
Configuration conf = new Configuration(false);
String HADOOP_HOME = System.getenv("HADOOP_HOME");
String corexml = HADOOP_HOME + "/conf/core-site.xml";
conf.addResource(new Path(corexml));
String hdfsNamenodehostName = conf.get("fs.default.name");
return hdfsNamenodehostName;
}
/**
* get the list of Fault ordered by Level
*/
public List<Fault> retrieveByLevel() {
if (!recordDefaultflag) {
sortrecords = readFaultlog.read();
before = new Date();
recordDefaultflag = true;
} else {
now = new Date();
time = now.getTime() - before.getTime();
if (time > bufferedTime) {
sortrecords = readFaultlog.read();
before = new Date();
}
}
sortFault.Sort(sortrecords, "getLevel", null);
return sortrecords;
}
/**
* get the list of Fault ordered by Worker
*/
public List<Fault> retrieveByPosition() {
if (!recordDefaultflag) {
sortrecords = readFaultlog.read();
before = new Date();
recordDefaultflag = true;
} else {
now = new Date();
time = now.getTime() - before.getTime();
if (time > bufferedTime) {
sortrecords = readFaultlog.read();
before = new Date();
}
}
sortFault.Sort(sortrecords, "getWorkerNodeName", null);
return sortrecords;
}
public List<Fault> retrieveByType() {
if (!recordDefaultflag) {
sortrecords = readFaultlog.read();
before = new Date();
recordDefaultflag = true;
} else {
now = new Date();
time = now.getTime() - before.getTime();
if (time > bufferedTime) {
sortrecords = readFaultlog.read();
before = new Date();
}
}
sortFault.Sort(sortrecords, "getType", null);
return sortrecords;
}
public List<Fault> retrieveByTime() {
if (!recordDefaultflag) {
sortrecords = readFaultlog.read();
before = new Date();
recordDefaultflag = true;
} else {
now = new Date();
time = now.getTime() - before.getTime();
if (time > bufferedTime) {
sortrecords = readFaultlog.read();
before = new Date();
}
}
sortFault.Sort(sortrecords, "getTimeOfFailure", "desc");
return sortrecords;
}
/**
* get the list of Fault ordered by Level in monthnum month
*/
public List<Fault> retrieveByLevel(int monthnum) {
recordDefaultflag = false;
sortrecords = readFaultlog.read(monthnum);
sortFault.Sort(sortrecords, "getLevel", null);
return sortrecords;
}
public List<Fault> retrieveByPosition(int monthnum) {
recordDefaultflag = false;
sortrecords = readFaultlog.read(monthnum);
sortFault.Sort(sortrecords, "getWorkerNodeName", null);
return sortrecords;
}
public List<Fault> retrieveByType(int monthnum) {
recordDefaultflag = false;
sortrecords = readFaultlog.read(monthnum);
sortFault.Sort(sortrecords, "getType", null);
return sortrecords;
}
public List<Fault> retrieveByTime(int monthnum) {
recordDefaultflag = false;
sortrecords = readFaultlog.read(monthnum);
sortFault.Sort(sortrecords, "getTimeOfFailure", "desc");
return sortrecords;
}
/**
*
* @param FaultLevel
* retrieve by one key level and sort by Level;
* @return
*/
public List<Fault> retrieveByLevel(String faultLevel) {
recordDefaultflag = false;
String[] keys = { faultLevel };
sortrecords = readFaultlog.read(keys);
sortFault.Sort(sortrecords, "getLevel", null);
return sortrecords;
}
public List<Fault> retrieveByPosition(String faultPostion) {
recordDefaultflag = false;
String[] keys = { faultPostion };
sortrecords = readFaultlog.read(keys);
sortFault.Sort(sortrecords, "getWorkerNodeName", null);
return sortrecords;
}
public List<Fault> retrieveByType(String faultType) {
recordDefaultflag = false;
String[] keys = { faultType };
sortrecords = readFaultlog.read(keys);
sortFault.Sort(sortrecords, "getType", null);
return sortrecords;
}
public List<Fault> retrieveByTime(String faultOccurTime) {
recordDefaultflag = false;
String[] keys = { faultOccurTime };
sortrecords = readFaultlog.read(keys);
sortFault.Sort(sortrecords, "getTimeOfFailure", "desc");
return sortrecords;
}
/**
* retrieve by one key level and sort by Level,in monthnum month;
* @param faultLevel
* @param monthnum
* @return
*/
public List<Fault> retrieveByLevel(String faultLevel, int monthnum) {
recordDefaultflag = false;
String[] keys = { faultLevel };
sortrecords = readFaultlog.read(keys, monthnum);
sortFault.Sort(sortrecords, "getLevel", null);
return sortrecords;
}
public List<Fault> retrieveByPosition(String faultPostion, int monthnum) {
recordDefaultflag = false;
String[] keys = { faultPostion };
sortrecords = readFaultlog.read(keys, monthnum);
sortFault.Sort(sortrecords, "getWorkerNodeName", null);
return sortrecords;
}
public List<Fault> retrieveByType(String faultType, int monthnum) {
recordDefaultflag = false;
String[] keys = { faultType };
sortrecords = readFaultlog.read(keys, monthnum);
sortFault.Sort(sortrecords, "getType", null);
return sortrecords;
}
public List<Fault> retrieveByTime(String faultOccurTime, int monthnum) {
recordDefaultflag = false;
String[] keys = { faultOccurTime };
sortrecords = readFaultlog.read(keys, monthnum);
sortFault.Sort(sortrecords, "getTimeOfFailure", "desc");
return sortrecords;
}
/**
* retrieve by some keys and sort by time default, in monthnum month;
* @param keys
* @param monthnum
* @return
*/
public List<Fault> retrieveWithMoreKeys(String[] keys, int monthnum) {
recordDefaultflag = false;
sortrecords = readFaultlog.read(keys, monthnum);
sortFault.Sort(sortrecords, "getTimeOfFailure", null);
return sortrecords;
}
/**
* retrieve by some keys and sort by time default
* @param keys
* @return
*/
public List<Fault> retrieveWithMoreKeys(String[] keys) {
recordDefaultflag = false;
sortrecords = readFaultlog.read(keys);
sortFault.Sort(sortrecords, "getTimeOfFailure", null);
return sortrecords;
}
public long getBufferedTime() {
return bufferedTime;
}
public void setBufferedTime(long bufferedTime) {
this.bufferedTime = bufferedTime;
}
}