/**
* @version $Id: PatternType.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;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
* 構文パターン分類オブジェクト
*
* @author shingo-takahashi
*
*/
public class PatternType implements Comparable<PatternType> {
static Map<Integer, PatternType> patternTypes = new HashMap<Integer, PatternType>();
private int id;
private String patternName;
/** デフォルトパターン分類 */
final static public PatternType OTHER = new PatternType(-99, "その他");
/* スタティックイニシャライザ */
static {
addPatternType(OTHER);
}
/**
* コンストラクター
*
* @param id
* パターン分類ID
* @param patternName
* パターン分類名
*/
public PatternType(int id, String patternName) {
this.id = id;
this.patternName = patternName;
}
/**
* IDで構文パターン分類を取得
*
* @param id
* 構文パターン分類ID
* @return パターン分類オブジェクト
*/
static public PatternType getPatternType(int id) {
return patternTypes.get(id);
}
/**
* 構文パターン分類の一覧を取得
*
* @return 構文パターン分類オブジェクトの配列
*/
static public PatternType[] getPatternTypes() {
Collection<PatternType> values = patternTypes.values();
return values.toArray(new PatternType[values.size()]);
}
/**
* 構文パターン分類を追加する
*
* @param type
* 構文パターン分類オブジェクト
*/
public static void addPatternType(PatternType type) {
// TODO staticメソッドを作ったほうがいい(createPatternType(int, String)みたいな)
patternTypes.put(type.id, type);
}
/**
* 構文パターン分類を削除する
*
* @param type
* 削除する構文パターン分類オブジェクト
* @return 成功した場合true
*/
public static boolean removePatternType(PatternType type) {
return (patternTypes.remove(type.getId()) != null);
}
/**
* 構文パターン分類IDを取得する
*
* @return 構文パターン分類ID
*/
public int getId() {
return id;
}
/**
* 構文パターン分類IDを設定する
*
* @param id
* 構文パターン分類ID
*/
public void setId(int id) {
this.id = id;
}
/**
* 構文パターン分類名を取得する
*
* @return 構文パターン分類名文字列
*/
public String getPatternName() {
return patternName;
}
/**
* 構文パターン分類名を設定する
*
* @param patternName
* 構文パターン分類名文字列
*/
public void setPatternName(String patternName) {
this.patternName = patternName;
}
@Override
public boolean equals(Object o) {
return (o instanceof PatternType) && ((PatternType) o).id == id;
}
@Override
public int hashCode() {
return this.id;
}
@Override
public String toString() {
return patternName;
}
@Override
public int compareTo(PatternType o) {
if (o == null)
return -1;
return getId() - o.getId();
}
}