/** * @version $Id: TemplateTerm.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $ * * 2012/11/28 17:51:12 * @author s.takuro * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.correction.template; import com.tida_okinawa.corona.correction.parsing.model.IQuantifier; import com.tida_okinawa.corona.correction.parsing.model.QuantifierType; import com.tida_okinawa.corona.io.model.MorphemeElement; import com.tida_okinawa.corona.io.model.dic.TermClass; import com.tida_okinawa.corona.io.model.dic.TermPart; /** * @author s.takuro * #187 構文パターン自動生成 */ public class TemplateTerm extends VariableTemplate implements IQuantifier, ITemplateTermType { /** * 単語(Term) * * @param parent * 親要素 */ public TemplateTerm(TemplateContainer parent) { super(parent); word = ""; //$NON-NLS-1$ label = ""; //$NON-NLS-1$ } private String word; private TermPart part = TermPart.NONE; private TermClass wordClass = TermClass.NONE; private String label; private QuantifierType quant = QuantifierType.QUANT_NONE; /** * @return 単語。非null */ public String getWord() { return word; } /** * @param word * 単語(Word) */ public void setWord(String word) { word = (word == null) ? "" : word; //$NON-NLS-1$ if (this.word.equals(word)) { return; } this.word = word; propertyChanged(); } /** * 品詞 * * @return not null */ public TermPart getPart() { return part; } /** * @param part * 品詞 */ public void setPart(TermPart part) { part = (part == null) ? TermPart.NONE : part; if (this.part.equals(part)) { return; } this.part = part; propertyChanged(); } /** * 品詞詳細 * * @return not null */ public TermClass getWordClass() { return wordClass; } /** * @param wordClass * 品詞詳細 */ public void setWordClass(TermClass wordClass) { wordClass = (wordClass == null) ? TermClass.NONE : wordClass; if (this.wordClass.equals(wordClass)) { return; } this.wordClass = wordClass; propertyChanged(); } /** * @return ラベル(ラベル辞書に登録されている必要がある)。非null */ public String getLabel() { return label; } /** * @param label * ラベル */ public void setLabel(String label) { label = (label == null) ? "" : label; //$NON-NLS-1$ if (this.label.equals(label)) { return; } this.label = label; propertyChanged(); } @Override public String toString() { StringBuilder buf = new StringBuilder(128); buf.append(word).append(Messages.TEMPLATE_COLON1); buf.append((part == null) ? "" : part.getName()).append(Messages.TEMPLATE_COLON2); //$NON-NLS-1$ buf.append((wordClass == null) ? "" : wordClass.getName()).append(Messages.TEMPLATE_COLON2); //$NON-NLS-1$ buf.append(label).append(Messages.TEMPLATE_COLON2); buf.append((quant == null) ? "" : quant.getName()); //$NON-NLS-1$ buf.append(Messages.TEMPLATE_TERM_STRING); return buf.toString(); } /* **************************************** * 数量子 */ @Override public QuantifierType getQuant() { return quant; } @Override public void setQuant(QuantifierType quant) { quant = (quant == null) ? QuantifierType.QUANT_NONE : quant; if (this.quant.equals(quant)) { return; } this.quant = quant; propertyChanged(); } /** 不要だがインターフェースに含まれるので */ @Override public MorphemeElement getHitElement() { return null; } /** 不要だがインターフェースに含まれるので */ @Override public void setHitElement(MorphemeElement hitElement) { } /* **************************************** * 単語の種類(固定or可変) */ /** 単語(Word)or ラベル(Label)を判定 */ private String type = null; @Override public void setState(String type) { if (this.type != null) { if (this.type.equals(type)) { return; } } else { if (type == null) { return; } } this.type = type; propertyChanged(); } @Override public String getState() { return type; } }