/** * @version $Id: ClaimWorkDataRecordProvider.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $ * * 2011/09/16 09:27:04 * @author imai * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.ui.controllers; import org.eclipse.core.runtime.IProgressMonitor; import com.tida_okinawa.corona.io.model.ClaimWorkDataType; import com.tida_okinawa.corona.io.model.IClaimWorkData; import com.tida_okinawa.corona.io.model.ICoronaProduct; import com.tida_okinawa.corona.io.model.table.ITextRecord; import com.tida_okinawa.corona.ui.data.ClaimWorkDataRecord; /** * DBから中間データを取り出す * * @author imai * @param <T> * データ * */ abstract class ClaimWorkDataRecordProvider<T extends ClaimWorkDataRecord> extends QueueDataProvider<T> { final IClaimWorkData claimWorkData; ClaimWorkDataRecordProvider(ICoronaProduct product, int claimId, int fieldId, ClaimWorkDataType type) { this(product.getClaimWorkData(claimId, type, fieldId)); } ClaimWorkDataRecordProvider(IClaimWorkData claimWorkData) { // this(claimWorkData, Runtime.getRuntime().availableProcessors()); this(claimWorkData, 1024); // サーバーに対応したのでスレッド数より増やす } ClaimWorkDataRecordProvider(IClaimWorkData claimWorkData, int capacity) { super(capacity); this.claimWorkData = claimWorkData; if (claimWorkData == null) { throw new IllegalArgumentException(); } } @Override public int total() { return claimWorkData.getClaimWorkDatas().size(); } @Override public void run(IProgressMonitor monitor) throws InterruptedException { for (ITextRecord record : claimWorkData.getClaimWorkDatas()) { if (monitor.isCanceled()) return; int recordId = record.getId(); String text = record.getText(); put(createRecord(claimWorkData.getClaimId(), claimWorkData.getFieldId(), recordId, text)); } end(); } abstract T createRecord(int claimId, int filedId, int recordId, String text); }