adapterjob.java
来自「eclipse开发笔记」· Java 代码 · 共 132 行
JAVA
132 行
package rcpdev.adapter.job;
import java.util.Calendar;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import rcpdev.adapter.Activator;
import rcpdev.adapter.lang.Messages;
import rcpdev.contact.core.model.contact.Contact;
import rcpdev.todo.core.model.series.TodoSeries;
import rcpdev.todo.core.model.series.info.MonthInfo;
import rcpdev.todo.core.model.series.info.YearInfo;
import rcpdev.todo.core.storage.ITodoFacade;
import rcpdev.todo.core.storage.TodoFacadeException;
import rcpdev.todo.core.storage.TodoFacadeFactory;
public class AdapterJob extends Job {
public AdapterJob(int type, Contact contact) {
super(NAME);
setPriority(Job.SHORT);
this.actionType = type;
this.target = contact;
}
public static final int ACTION_ADD = 0;
public static final int ACTION_UPDATE = 1;
public static final int ACTION_REMOVE = 2;
private static final String POSTFIX = Messages
.getString("AdapterJob.birthday"); //$NON-NLS-1$
private static final String CONTENT = "Generated by Contact Plug-in";
private int actionType;
private Contact target;
public static final String NAME = Messages.getString("AdapterJob.jobName"); //$NON-NLS-1$
@Override
protected IStatus run(IProgressMonitor monitor) {
ITodoFacade facade = TodoFacadeFactory.getInstance().getFacade();
switch (actionType) {
case ACTION_ADD:
monitor.beginTask(Messages.getString("AdapterJob.taskAdd"), 10); //$NON-NLS-1$
// No birthday info available, just returns
if (target.getBirthday() == null) {
monitor.done();
return Status.OK_STATUS;
}
// Create new todo item representing the birthday of the contact
TodoSeries series = fillSeries(new TodoSeries());
monitor.worked(3);
try {
facade.addTodoItem(series);
} catch (TodoFacadeException e) {
monitor.done();
return new Status(Status.ERROR, Activator.PLUGIN_ID, 0, e
.getDescription(), e);
}
monitor.done();
return Status.OK_STATUS;
case ACTION_UPDATE:
monitor.beginTask("Update Birthday Info", 10);
try {
TodoSeries existed = facade.findBirthdaySeries(target
.getFullName()
+ POSTFIX, CONTENT);
if (existed == null) {
facade.addTodoItem(fillSeries(new TodoSeries()));
} else {
facade.updateTodoItem(fillSeries(existed));
}
} catch (TodoFacadeException e) {
monitor.done();
return new Status(Status.ERROR, Activator.PLUGIN_ID, 0, e
.getDescription(), e);
}
monitor.done();
return Status.OK_STATUS;
case ACTION_REMOVE:
monitor.beginTask("Delete Birthday Info", 10);
try {
TodoSeries existed = facade.findBirthdaySeries(target
.getFullName()
+ POSTFIX, CONTENT);
if (existed != null) {
facade.removeTodoItem(fillSeries(existed));
}
} catch (TodoFacadeException e) {
monitor.done();
return new Status(Status.ERROR, Activator.PLUGIN_ID, 0, e
.getDescription(), e);
}
monitor.done();
return Status.OK_STATUS;
}
return Status.OK_STATUS;
}
protected TodoSeries fillSeries(TodoSeries fill) {
TodoSeries series = fill;
series.setSubject(target.getFullName() + POSTFIX);
series.setContent(CONTENT);
series.setDate(target.getBirthday());
series.setStopDate(target.getBirthday());
series.setSeriesType(TodoSeries.TYPE_ENDLESS);
series.setStartTime(16);
series.setStopTime(17);
YearInfo yearInfo = new YearInfo();
Calendar cal = Calendar.getInstance();
cal.setTime(target.getBirthday());
yearInfo.setMonthOfYear(cal.get(Calendar.MONTH));
MonthInfo monthInfo = new MonthInfo();
monthInfo.setDayOfMonth(cal.get(Calendar.DAY_OF_MONTH));
monthInfo.setBaseDate(series.getDate());
yearInfo.setNext(monthInfo);
series.setInfo(yearInfo);
return series;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?