/** * @version $Id: AbstractUserDic.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.HashMap; import java.util.List; import java.util.Map; import com.tida_okinawa.corona.io.model.TextItem; import com.tida_okinawa.corona.io.model.dic.DicType; import com.tida_okinawa.corona.io.model.dic.IDicItem; import com.tida_okinawa.corona.io.model.dic.ITerm; import com.tida_okinawa.corona.io.model.dic.IUserDic; import com.tida_okinawa.corona.io.model.dic.UserDicFieldType; /** * @author shingo-takahashi * */ /** * @author shingo-takahashi * */ public abstract class AbstractUserDic extends AbstractDic implements IUserDic { protected List<ITerm> items; protected String _fileName; protected DicType _dicType; protected TextItem _dicCategory; protected List<IDicItem> delItems = new ArrayList<IDicItem>(); public AbstractUserDic(int id, String name, String file, DicType dicType, Date lasted) { super(id, name, lasted); this._dicType = dicType; this._fileName = file; } /* **************************************** * property */ @Override public DicType getDicType() { return _dicType; } @Override public void setName(String name) { super.setName(name); /* 一緒に出力ファイル名を変更 */ String namePart; if (name.indexOf('.') != -1) { namePart = _name.substring(0, _name.lastIndexOf('.')); } else { namePart = name; } setFileName(namePart + ".dic"); } @Override public String getFileName() { return _fileName; } @Override public void setFileName(String filename) { this._fileName = filename; } @Override public void setDicCategory(TextItem dicCategory) { this._dicCategory = dicCategory; } @Override public TextItem getDicCategory() { if (_dicCategory == null) { _dicCategory = new TextItem(0, ""); } return _dicCategory; } /* ******************** * ソート */ private Map<UserDicFieldType, Object[]> filterFields = new HashMap<UserDicFieldType, Object[]>(); protected Map<UserDicFieldType, Object[]> getFilters() { return filterFields; } private boolean acceptOrNot; protected boolean isAcceptOrNot() { return acceptOrNot; } @Override public void setAcceptOrNot(boolean acceptOrNot) { this.acceptOrNot = acceptOrNot; } @Override public void setFilter(UserDicFieldType filterField, Object[] values, boolean acceptOrNot) { filterFields.clear(); filterFields.put(filterField, (values == null) ? new Object[0] : values); setAcceptOrNot(acceptOrNot); } @Override public void addFilter(UserDicFieldType filterField, Object[] values) { filterFields.put(filterField, (values == null) ? new Object[0] : values); } @Override public void clearFilter() { filterFields.clear(); setAcceptOrNot(false); } /* ******************** * フィルタ */ private UserDicFieldType sortField = UserDicFieldType.NONE; protected UserDicFieldType getSortField() { return sortField; } private boolean sortAsc; protected boolean isAscending() { return sortAsc; } @Override public void setSortOrder(UserDicFieldType sortField, boolean asc) { this.sortField = sortField; this.sortAsc = asc; } /* **************************************** * 更新 */ @Override public boolean update() { addFilter(UserDicFieldType.NONE, new Object[0]); setSortOrder(UserDicFieldType.READING, true); return super.update(); } /* **************************************** * 編集 */ @Override public void addItem(IDicItem item) { if (items == null) { updateRecords(); } assert item instanceof ITerm; if (items.add((ITerm) 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(); } if (items.remove(item)) { ((DicItem) item).setInActive(true); ((DicItem) item).setDicId(UNSAVED_ID); delItems.add(item); setDirty(true); } } /* **************************************** * import/export */ @Override public void importDic(String path, String parentDicName, DicType dicType) { importDicDam(path, parentDicName, dicType); } /** * @param path */ abstract protected void importDicDam(String path, String parentDicName, DicType dicType); @Override public void exportDic(String path, String encoding) { exportDicDam(path, encoding); } /** * 辞書エクスポート * * @param path * @param encoding */ abstract protected void exportDicDam(String path, String encoding); }