package org.fastcatsearch.job.management;
import java.io.IOException;
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.service.AbstractService;
import org.fastcatsearch.service.ServiceManager;
public class UpdateModuleStateJob extends Job implements Streamable {
private static final long serialVersionUID = -7054816123263156939L;
private String action;
private String serviceClasses;
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getServiceClasses() {
return serviceClasses;
}
public void setServiceClasses(String serviceClasses) {
this.serviceClasses = serviceClasses;
}
@Override
public JobResult doRun() throws FastcatSearchException {
try {
ServiceManager serviceManager = ServiceManager.getInstance();
AbstractService service = null;
if(serviceClasses == null) { serviceClasses = ""; }
String[] classNames = serviceClasses.split(",");
for(String className : classNames) {
@SuppressWarnings("rawtypes")
Class cls = Class.forName(className.trim());
service = serviceManager.getService(cls);
if("stop".equals(action) || "restart".equals(action)) {
service.stop();
}
if("start".equals(action) || "restart".equals(action)) {
service.start();
}
}
return new JobResult(true);
} catch (Exception e) {
logger.error("", e);
}
return new JobResult(false);
}
@Override
public void readFrom(DataInput input) throws IOException {
action = input.readString();
serviceClasses = input.readString();
}
@Override
public void writeTo(DataOutput output) throws IOException {
output.writeString(action);
output.writeString(serviceClasses);
}
}