TEINamedEntityImpl.java 2.46 KB
package ipipan.clarin.tei.impl.entities;

import ipipan.clarin.tei.api.entities.TEIMorph;
import ipipan.clarin.tei.api.entities.TEINamedEntity;
import ipipan.clarin.tei.api.entities.TEINamedEntityChild;
import ipipan.clarin.tei.api.entities.TEINamedEntityDerivation;

import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author mlenart
 */
public class TEINamedEntityImpl extends TEIAbstractEntity implements
		TEINamedEntity {

	private final String orth;
	private final String type;
	private final String subtype;
	private String base;
	private String certainty;
	private String comment;
	private TEINamedEntityDerivation deriv;
	private final List<TEINamedEntityChild> children;

	public TEINamedEntityImpl(String id, String orth, String type,
			String subtype, List<TEINamedEntityChild> children) {
		super(id);
		this.orth = orth;
		this.type = type;
		this.subtype = subtype;
		this.children = children;
	}

	@Override
	public String getType() {
		return type;
	}

	@Override
	public String getSubtype() {
		return subtype;
	}

	@Override
	public String getOrth() {
		return orth;
	}

	@Override
	public String getBase() {
		return base;
	}

	@Override
	public void setBase(String base) {
		this.base = base;
	}

	@Override
	public TEINamedEntityDerivation getDerivation() {
		return deriv;
	}

	@Override
	public void setDerivation(TEINamedEntityDerivation deriv) {
		this.deriv = deriv;
	}

	@Override
	public String getCertainty() {
		return certainty;
	}

	@Override
	public void setCertainty(String certainty) {
		this.certainty = certainty;
	}

	@Override
	public String getComment() {
		return comment;
	}

	@Override
	public void setComment(String comment) {
		this.comment = comment;
	}

	@Override
	public List<TEINamedEntityChild> getChildren() {
		return children;
	}

	@Override
	public boolean isNamedEntity() {
		return true;
	}

	@Override
	public boolean isMorph() {
		return false;
	}

	@Override
	public List<TEIMorph> getLeaves() {
		List<TEIMorph> res = new LinkedList<TEIMorph>();
		for (TEINamedEntityChild child : children) {
			if (child.isMorph()) {
				res.add((TEIMorph) child);
			} else {
				res.addAll(((TEINamedEntity) child).getLeaves());
			}
		}
		return res;
	}

	@Override
	public String toString() {
		return "TEINamedEntityImpl{" + "id=" + getId() + '}';
	}

	@Override
	public TEIMorph asMorph() {
		throw new UnsupportedOperationException(
				"Cannot treat named entity as morph");
	}

	@Override
	public TEINamedEntity asNamedEntity() {
		return this;
	}
}