/**
* @version $Id: AbstractLabelDic.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $
*
* 2011/08/03
* @author shingo-takahashi
*
* Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved.
*/
package com.tida_okinawa.corona.io.model.dic.abstraction;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import com.tida_okinawa.corona.io.model.dic.IDicItem;
import com.tida_okinawa.corona.io.model.dic.ILabel;
import com.tida_okinawa.corona.io.model.dic.ILabelDic;
/**
* ラベル辞書抽象クラス
*
* @author OSC
*
*/
public abstract class AbstractLabelDic extends AbstractDic implements ILabelDic {
protected List<IDicItem> items;
protected List<IDicItem> delItems = new ArrayList<IDicItem>();
public AbstractLabelDic(int id, String name, Date lasted) {
super(id, name, lasted);
}
/**
* @param id
* @param name
* @param lasted
* @param parentId
*/
public AbstractLabelDic(int id, String name, Date lasted, Set<Integer> parentId) {
super(id, name, lasted, parentId);
}
@Override
public List<IDicItem> getItems() {
if (items == null) {
updateRecords();
}
return items;
}
@Override
public void addItem(IDicItem item) {
if (items == null) {
updateRecords();
}
if (items.add(item)) {
((DicItem) item).setInActive(false);
((DicItem) item).setDicId(getId());
delItems.remove(item);
setDirty(true);
}
}
@Override
public void removeItem(IDicItem item) {
if (item == null)
return;
if (items == null) {
updateRecords();
}
assert item instanceof ILabel;
ILabel label = (ILabel) item;
ILabel parent = label.getParent();
boolean res = false;
if (parent != null) {
res = parent.removeChild(label);
} else {
res = items.remove(label); /* トップレベルの場合 */
}
if (res) {
((DicItem) item).setInActive(true);
((DicItem) item).setDicId(UNSAVED_ID);
delItems.add(item);
setDirty(true);
}
}
/**
* アイテム設定
*
* @param items
*/
public void setItems(List<IDicItem> items) {
this.items = items;
setDirty(true);
}
}