/** * @version $Id: UICorrectionFolder.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $ * * 2011/10/13 9:23:41 * @author kousuke-morishima * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.internal.ui.views.model.impl; import java.util.Date; import java.util.Set; import org.eclipse.core.resources.IContainer; import org.eclipse.ui.views.properties.IPropertyDescriptor; import com.tida_okinawa.corona.internal.ui.CoronaConstants; import com.tida_okinawa.corona.internal.ui.util.ClaimUtil; import com.tida_okinawa.corona.internal.ui.views.model.ICorrectionFolder; import com.tida_okinawa.corona.internal.ui.views.model.IUICorrectionFolder; import com.tida_okinawa.corona.internal.ui.views.model.IUIElement; import com.tida_okinawa.corona.internal.ui.views.model.IUIProduct; import com.tida_okinawa.corona.internal.ui.views.model.IUIWork; import com.tida_okinawa.corona.io.PropertyUtil; import com.tida_okinawa.corona.io.PropertyUtil.PropertyItem; import com.tida_okinawa.corona.io.model.IClaimWorkData; import com.tida_okinawa.corona.io.model.ICoronaProduct; /** * @author kousuke-morishima */ public class UICorrectionFolder extends UIContainer implements IUICorrectionFolder { private ICorrectionFolder folder; /* public */UICorrectionFolder(IUIProduct parent, ICorrectionFolder object, IContainer resource) { super(parent, object, resource); folder = object; } @Override public IUIProduct getParent() { return (IUIProduct) parent; } @Override public ICorrectionFolder getObject() { return folder; } @Override protected IUIElement[] createChildren() { ICoronaProduct product = getParent().getObject(); if (product == null) { return new IUIWork[0]; } else { Set<IClaimWorkData> works = product.getClaimWorkDatas(); int i = 0; for (IClaimWorkData work : works) { String ClaimName = CoronaConstants.createCorrectionFolderName(ClaimUtil.getClaimName(work.getClaimId())); if (ClaimName.equals(folder.getName())) { i++; } } IUIWork[] children = new IUIWork[i]; i = 0; for (IClaimWorkData work : works) { String claimName = CoronaConstants.createCorrectionFolderName(ClaimUtil.getClaimName(work.getClaimId())); if (claimName.equals(folder.getName())) { String name = work.getClaimWorkDataType().getName() + "(" + ClaimUtil.getFieldName(work.getClaimId(), work.getFieldId()) + ")"; children[i] = (IUIWork) CoronaModel.INSTANCE.create(this, work, createFile(name)); i++; } } return children; } } @Override public IUIWork[] getWorks() { return (IUIWork[]) getChildren(); } /* ******************************* * property view */ @Override public IPropertyDescriptor[] getPropertyDescriptors() { IPropertyDescriptor[] sp = super.getPropertyDescriptors(); IPropertyDescriptor[] descriptor = new IPropertyDescriptor[sp.length + 1]; int i; for (i = 0; i < sp.length; i++) { descriptor[i] = sp[i]; } PropertyUtil prop = new PropertyUtil(); /* Forの最後のi++が利いているのでiを1増やす必要はない */ descriptor[i] = prop.getDescriptor(PropertyItem.PROP_RESULT); return descriptor; } @Override public Object getPropertyValue(Object id) { if (PropertyItem.PROP_RESULT.getKey().equals(id)) { ICoronaProduct product = getParent().getObject(); Set<IClaimWorkData> cwd = product.getClaimWorkDatas(); /* 最初の値を初期値に設定 */ Date lasted = ((IClaimWorkData) product.getClaimWorkDatas().toArray()[0]).getLasted(); IClaimWorkData lastWork = (IClaimWorkData) product.getClaimWorkDatas().toArray()[0]; for (IClaimWorkData work : cwd) { if (lasted == null) { /* 処理順が後ろのものが先に取得されるので、lastedがnullなら何もしない */ } else { if ((work.getLasted() != null) && work.getLasted().after(lasted)) { lastWork = work; lasted = work.getLasted(); } } } return lastWork.getClaimWorkDataType().getName(); } return super.getPropertyValue(id); } }