/** * @version $Id: CleansingWizard.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $ * * 2011/12/01 16:06:20 * @author takayuki-matsumoto * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.ui.wizards; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.wizard.Wizard; import com.tida_okinawa.corona.CoronaActivator; import com.tida_okinawa.corona.internal.ui.views.model.IUIProduct; import com.tida_okinawa.corona.io.model.ClaimWorkDataType; import com.tida_okinawa.corona.io.model.IClaimWorkData; import com.tida_okinawa.corona.io.model.ICoronaDicPri; import com.tida_okinawa.corona.io.model.dic.ICoronaDic; import com.tida_okinawa.corona.ui.UIActivator; /** * @author takayuki-matsumoto */ public class CleansingWizard extends Wizard { private static final String PageName1 = "com.tida_okinawa.corona.ui.wizards.ClensingWizardPage"; private CleansingWizardPage page1; private List<IClaimWorkData> claimWorkDataList; private ClaimWorkDataType claimWorkDataType; private IUIProduct uiProduct; private HashMap<IClaimWorkData, List<ICoronaDicPri>> priMap; /** * @param cwdList * 処理結果の格納先(処理するフィールド分) * @param type * これから行う処理種別 * @param uiProduct * 処理対象のターゲット */ public CleansingWizard(List<IClaimWorkData> cwdList, ClaimWorkDataType type, IUIProduct uiProduct) { Assert.isLegal(cwdList.size() > 0); // Assert this.claimWorkDataList = cwdList; this.claimWorkDataType = type; this.uiProduct = uiProduct; setWindowTitle("クレンジング実行<" + uiProduct.getObject().getName() + ">"); setDialogSettings(UIActivator.getDefault().getDialogSettings()); } @Override public void addPages() { page1 = new CleansingWizardPage(PageName1, this.claimWorkDataType); page1.initializeDicPriorityListCommmon(this.uiProduct, this.claimWorkDataType, this.claimWorkDataList); page1.setClaimWorkData(this.claimWorkDataList); addPage(page1); } @Override public boolean performFinish() { this.priMap = page1.getDicPriorityMap(); page1.finished(); return true; } /* **************************************** * 辞書優先度リストgetter */ /** * @return 共通の辞書優先度リスト */ public List<ICoronaDicPri> getDicPriorityList() { return page1.getCommonDicPriorityList(); } /** * フィールドごとの優先度リストの取得 * * @param cwd * 問い合わせ中間データ * @return フィールドごとの辞書優先度リスト */ public List<ICoronaDicPri> getFieldDicPriorityList(IClaimWorkData cwd) { return priMap.get(cwd); } /** * @return フィールドごとに辞書優先度を設定しているならtrue */ public boolean isFieldSelect() { if (page1 == null) { throw new NullPointerException(); } return page1.isFieldSelected(); } /** * メンテナンス用メソッド。辞書優先度と処理結果の紐づけを行う。<br/> * コンストラクタで受け取ったIClaimWorkDataは保存には使えないことがあるので、 * 処理結果が入ったIClaimWorkDataで置き換える必要がある。 * * @param bfrCwd * コンストラクタで渡したIClaimWorkDataのうちのひとつ * @param aftCwd * bfrCwdを置き換える、処理結果が入ったIClaimWorkData */ public void updateDicPriMap(IClaimWorkData bfrCwd, IClaimWorkData aftCwd) { // 最新のクレームワークデータで置き換える List<ICoronaDicPri> list = priMap.get(bfrCwd); priMap.remove(bfrCwd); priMap.put(aftCwd, list); } /** * 辞書優先度のリストを保存する。 */ public void saveDicPriList() { if (page1 == null) { throw new NullPointerException(); } if (page1.isFieldSelected()) { // mapをまわして保存 for (Entry<IClaimWorkData, List<ICoronaDicPri>> e : priMap.entrySet()) { /*  プライオリティリスト設定  */ IClaimWorkData cwd = e.getKey(); if (cwd != null) { if (cwd.getWorkdataId() == 0) { int claimId = cwd.getClaimId(); int fieldId = cwd.getFieldId(); cwd = uiProduct.getObject().getClaimWorkData(claimId, cwd.getClaimWorkDataType(), fieldId); if (cwd.getLasted() == null) { continue; } } cwd.setDicPrioritys(e.getValue()); } else { CoronaActivator.debugLog("saveDicPriList() : IClaimWorkData is null."); } } } else { IClaimWorkData cwd = claimWorkDataList.get(0); if (cwd.getWorkdataId() == 0) { // ワークIDが0のときは処理済みのクレームワークデータを取得 // Memo dstWorkを作成した時、ターゲットに追加してしまえば置き換えずに済むのでは? int claimId = cwd.getClaimId(); int fieldId = cwd.getFieldId(); cwd = uiProduct.getObject().getClaimWorkData(claimId, cwd.getClaimWorkDataType(), fieldId); if ((cwd == null) || cwd.getLasted() == null) { return; } } /*  プライオリティリスト設定  */ cwd.setDicPrioritysCom(page1.getCommonDicPriorityList()); } } /** * test method * * @param cwd * 問い合わせ中間データ * @param list * 辞書リスト */ public static final void saveDictionaryTest(IClaimWorkData cwd, List<ICoronaDic> list) { List<ICoronaDicPri> pris = new ArrayList<ICoronaDicPri>(); for (ICoronaDic dic : list) { ICoronaDicPri pri = cwd.createDicPriority(dic.getId()); pri.setInActive(true); pris.add(pri); } // テスト用に辞書登録 cwd.setDicPrioritys(pris); cwd.setDicPrioritysCom(pris); } /** * 複数Hitを行うかどうか * * @return 複数Hitを行うならtrue */ public boolean getHitSelectStatus() { return page1.isHitSelectStatus(); } }