package org.fastcatsearch.processlogger;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import org.fastcatsearch.common.io.Streamable;
import org.fastcatsearch.exception.FastcatSearchException;
import org.fastcatsearch.ir.io.DataInput;
import org.fastcatsearch.ir.io.DataOutput;
import org.fastcatsearch.job.Job;
import org.fastcatsearch.processlogger.log.ProcessLog;
import org.fastcatsearch.service.ServiceManager;
public class ProcessLoggerJob extends Job implements Streamable {
private static final long serialVersionUID = -1455315501463956117L;
private Class<? extends ProcessLogger> processLoggerClasss;
private ProcessLog processLog;
public ProcessLoggerJob(){
}
public ProcessLoggerJob(Class<? extends ProcessLogger> processLoggerClasss, ProcessLog processLog) {
this.processLoggerClasss = processLoggerClasss;
this.processLog = processLog;
}
public ProcessLog getProcessLog(){
return processLog;
}
@Override
public JobResult doRun() throws FastcatSearchException {
logger.debug(">>WRITE ProcessLog >> {}", processLog);
ProcessLogger processLogger = ServiceManager.getInstance().getService(ProcessLoggerService.class).getProcessLogger(processLoggerClasss);
processLogger.log(processLog);
return new JobResult();
}
@Override
public void readFrom(DataInput input) throws IOException {
Class<? extends ProcessLog> processLogClass = null;
ObjectInputStream ois = new ObjectInputStream(input);
try {
processLoggerClasss = (Class<? extends ProcessLogger>) ois.readObject();
processLogClass = (Class<? extends ProcessLog>) ois.readObject();
processLog = processLogClass.newInstance();
} catch (Exception e) {
throw new IOException(e);
}
processLog.readFrom(input);
}
@Override
public void writeTo(DataOutput output) throws IOException {
ObjectOutputStream oos = new ObjectOutputStream(output);
oos.writeObject(processLoggerClasss);
oos.writeObject(processLog.getClass());
processLog.writeTo(output);
}
}