/** * @version $Id: DeleteDicAction.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $ * * 2012/01/12 18:53:00 * @author kousuke-morishima * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.ui.views.db.action; import java.util.List; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.Action; import com.tida_okinawa.corona.internal.ui.actions.CoronaElementDeleteOperation; import com.tida_okinawa.corona.internal.ui.views.model.IUIElement; import com.tida_okinawa.corona.internal.ui.views.model.impl.CoronaModel; import com.tida_okinawa.corona.io.IoActivator; import com.tida_okinawa.corona.io.model.dic.DicType; import com.tida_okinawa.corona.io.model.dic.ICoronaDic; import com.tida_okinawa.corona.io.model.dic.IFlucDic; import com.tida_okinawa.corona.io.model.dic.ILabelDic; import com.tida_okinawa.corona.io.model.dic.ISynonymDic; import com.tida_okinawa.corona.io.model.dic.IUserDic; import com.tida_okinawa.corona.io.service.IIoService; import com.tida_okinawa.corona.ui.UIActivator; /** * @author kousuke-morishima */ public class DeleteDicAction extends Action { public DeleteDicAction() { } private ICoronaDic dic = null; public void setDictionay(ICoronaDic dic) { this.dic = dic; } @Override public void run() { IIoService service = IoActivator.getService(); /* 子辞書チェック */ int id = dic.getId(); if (dic instanceof IUserDic) { if (DicType.JUMAN.equals(((IUserDic) dic).getDicType())) { setResult(Status.CANCEL_STATUS); return; } List<ICoronaDic> allDics = service.getDictionarys(ICoronaDic.class); for (ICoronaDic dic : allDics) { if (dic instanceof ILabelDic) { } else if (dic instanceof IFlucDic) { } else if (dic instanceof ISynonymDic) { } else { continue; } for (Integer parentId : dic.getParentIds()) { if (parentId == id) { setResult(new Status(IStatus.ERROR, UIActivator.PLUGIN_ID, "子辞書がいます")); return; } } } } List<IUIElement> uiElements = CoronaModel.INSTANCE.adapter(dic); /* ローカルファイルシステムから削除 */ CoronaElementDeleteOperation op = new CoronaElementDeleteOperation(uiElements.toArray(new IUIElement[uiElements.size()]), ""); try { IStatus status = op.execute(null, null); service.removeDictionary(id); setResult(status); } catch (ExecutionException e) { e.printStackTrace(); setResult(new Status(IStatus.ERROR, UIActivator.PLUGIN_ID, "ファイル削除中にエラーが発生しました。 ")); } } private IStatus result; public IStatus getResult() { return result; } private void setResult(IStatus result) { this.result = result; } }