package org.insightech.er.editor.model.diagram_contents.not_element.dictionary;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.insightech.er.editor.model.AbstractModel;
import org.insightech.er.editor.model.diagram_contents.element.node.table.ERVirtualTable;
import org.insightech.er.editor.model.diagram_contents.element.node.table.TableView;
import org.insightech.er.editor.model.diagram_contents.element.node.table.column.NormalColumn;
public class Dictionary extends AbstractModel {
private static final long serialVersionUID = -4476318682977312216L;
public static final String PROPERTY_CHANGE_DICTIONARY = "dictionary";
private Map<Word, List<NormalColumn>> wordMap;
public Dictionary() {
this.wordMap = new HashMap<Word, List<NormalColumn>>();
}
public void add(NormalColumn column) {
Word word = column.getWord();
if (word == null) {
return;
}
List<NormalColumn> useColumns = this.wordMap.get(word);
if (useColumns == null) {
useColumns = new ArrayList<NormalColumn>();
this.wordMap.put(word, useColumns);
}
if (!useColumns.contains(column)) {
useColumns.add(column);
}
this.firePropertyChange(PROPERTY_CHANGE_DICTIONARY, null, null);
}
public void remove(NormalColumn column) {
Word word = column.getWord();
if (word == null) {
return;
}
List<NormalColumn> useColumns = this.wordMap.get(word);
if (useColumns != null) {
useColumns.remove(column);
if (useColumns.isEmpty()) {
this.wordMap.remove(word);
}
}
this.firePropertyChange(PROPERTY_CHANGE_DICTIONARY, null, null);
}
public void remove(TableView tableView) {
if (tableView instanceof ERVirtualTable) {
return; // ���z�e�[�u���������Ƃ��̓��[�h�͏����Ȃ�
}
for (NormalColumn normalColumn : tableView.getNormalColumns()) {
this.remove(normalColumn);
}
}
public void clear() {
this.wordMap.clear();
}
public List<Word> getWordList() {
List<Word> list = new ArrayList<Word>(this.wordMap.keySet());
Collections.sort(list);
return list;
}
public List<NormalColumn> getColumnList(Word word) {
return this.wordMap.get(word);
}
public void copyTo(Word from, Word to) {
from.copyTo(to);
}
}