import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.neodatis.odb.ODB;
import org.neodatis.odb.ODBFactory;
import org.neodatis.odb.Objects;
import org.neodatis.odb.core.query.IQuery;
import org.neodatis.odb.core.query.criteria.Where;
import org.neodatis.odb.impl.core.query.criteria.CriteriaQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import bee.besta.timer.data.TimeRunnerData;
public class ODBUtil {
private String ODB_NAME = "E://" + "data.odb";
private static final Logger logger = LoggerFactory.getLogger("ODBUtil.class");
public static void main(String[] args) {
ODBUtil util = new ODBUtil();
// 新增
// TimeRunnerData timeRunner = new TimeRunnerData();
// timeRunner.setTimerId("8a925e95444932ce014449437a890021");
// timeRunner.setBusinessId(BusinessId.SENDPACKAGEDATAMSG_BID);
// Map<String, Object> paramMap = new HashMap<String, Object>();
// paramMap.put("taskId", "8a925e95444932ce014449437a890021");
// paramMap.put("tableName", "");
// paramMap.put("startTime", "");
// paramMap.put("endTime", "");
// paramMap.put("endTime", "");
// paramMap.put("exchageCode", "");
// timeRunner.setParamMap(paramMap);
// timeRunner.setStartTime(DateUtil.getFormatStartDate("2014-02-02"));
// timeRunner.setEndTime(DateUtil.getFormatEndDate("2014-02-28"));
// timeRunner.setCronExpression("0/1 * * * * ?");
// util.addTimeRunner(timeRunner);
// 修改
// ProviderTask task = new ProviderTask();
// task.setTaskId("8a925d244357385d01435790c19400a4");
// task.setStartTime("2014-01-06");
// task.setEndTime("2014-01-08");
// task.setCronExp("0/10 * * * * ?");
// util.updateTimeRunnerTask(task);
// 删除
// util.removeTimeRunner("8a925d1843c310e30143c31f86660053");
// 查询
List<TimeRunnerData> list = util.getTimeRunnerList();
// System.out.println(list);
for (TimeRunnerData timeRunners : list) {
System.out.println("---------------------");
System.out.println(timeRunners.getTimerId());
System.out.println(timeRunners.getBusinessId());
System.out.println(timeRunners.getCronExpression());
System.out.println(timeRunners.getStartTime());
System.out.println(timeRunners.getEndTime());
System.out.println(timeRunners.getState());
}
}
public List<TimeRunnerData> getTimeRunnerList() {
ODB odb = null;
try {
odb = ODBFactory.open(ODB_NAME);
IQuery query = new CriteriaQuery(TimeRunnerData.class);
List<TimeRunnerData> reList = new ArrayList<TimeRunnerData>();
Objects<TimeRunnerData> list = odb.getObjects(query);
if (list != null) {
for (TimeRunnerData timeRunner : list) {
reList.add(timeRunner);
}
}
return reList;
} catch (Exception e) {
logger.error("getTimeRunnerList error", e);
} finally {
if (odb != null) {
odb.close();
}
}
return null;
}
public boolean removeTimeRunner(String timerId) {
ODB odb = null;
try {
odb = ODBFactory.open(ODB_NAME);
IQuery query = new CriteriaQuery(TimeRunnerData.class, Where.equal("timerId", timerId));
Objects<TimeRunnerData> timeRunners = odb.getObjects(query);
if (timeRunners != null && timeRunners.size() > 0) {
odb.delete(timeRunners.getFirst());
}
return true;
} catch (Exception e) {
logger.error("removeTimeRunner error", e);
} finally {
if (odb != null) {
odb.close();
}
}
return false;
}
public TimeRunnerData addTimeRunner(TimeRunnerData timer) {
ODB odb = null;
try {
odb = ODBFactory.open(ODB_NAME);
odb.store(timer);
} finally {
if (odb != null) {
odb.close();
}
}
return timer;
}
public boolean updateTimeRunner(String timerId, int state) {
ODB odb = null;
try {
odb = ODBFactory.open(ODB_NAME);
IQuery query = new CriteriaQuery(TimeRunnerData.class, Where.equal("timerId", timerId));
Objects<TimeRunnerData> timeRunners = odb.getObjects(query);
if (timeRunners != null && timeRunners.size() > 0) {
TimeRunnerData oldData = timeRunners.getFirst();
odb.delete(oldData);
oldData.setTimerId(timerId);
oldData.setState(state);
odb.store(oldData);
}
return true;
} catch (Exception e) {
logger.error("updateTimeRunner error", e);
} finally {
if (odb != null) {
odb.close();
}
}
return false;
}
public boolean updateTimeRunnerTask(ProviderTask task) {
ODB odb = null;
try {
odb = ODBFactory.open(ODB_NAME);
IQuery query = new CriteriaQuery(TimeRunnerData.class, Where.equal("timerId", task.getTaskId()));
Objects<TimeRunnerData> timeRunners = odb.getObjects(query);
if (timeRunners != null && timeRunners.size() > 0) {
TimeRunnerData oldData = timeRunners.getFirst();
odb.delete(oldData);
oldData.setTimerId(task.getTaskId());
oldData.setBusinessId(BusinessId.SENDPACKAGEDATAMSG_BID);
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("taskId", task.getTaskId());
paramMap.put("startTime", "");
paramMap.put("endTime", "");
oldData.setParamMap(paramMap);
oldData.setStartTime(DateUtil.getFormatStartDate(task.getStartTime()));
oldData.setEndTime(DateUtil.getFormatEndDate(task.getEndTime()));
oldData.setCronExpression(task.getCronExp());
odb.store(oldData);
}
return true;
} catch (Exception e) {
logger.error("updateTimeRunnerTask error", e);
} finally {
if (odb != null) {
odb.close();
}
}
return false;
}
}