NEBuilder.java 2.08 KB
package ipipan.clarin.tei.impl.io.read;

import ipipan.clarin.tei.api.entities.EntitiesFactory;
import ipipan.clarin.tei.api.entities.TEINamedEntity;
import ipipan.clarin.tei.api.entities.TEINamedEntityChild;
import ipipan.clarin.tei.api.entities.TEINamedEntityDerivation;
import ipipan.clarin.tei.api.exceptions.TEIException;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 *
 * @author mlenart
 */
class NEBuilder {
	private final static EntitiesFactory ef = EntitiesFactory.getInstance();
	private final String id;
	private String orth;
	private String base;
	private String type;
	private String subtype;
	private String certainty;
	private String comment;
	private TEINamedEntityDerivation deriv;
	private List<String> ptrs;

	public NEBuilder(String id) {
		this.id = id;
	}

	TEINamedEntity getNe(Map<String, TEINamedEntityChild> ptr2Entity)
			throws TEIException {
		List<TEINamedEntityChild> children = getChildrenList(ptr2Entity);
		TEINamedEntity res = ef.createNamedEntity(id, orth, type, subtype,
				children);
		res.setBase(base);
		res.setCertainty(certainty);
		res.setComment(comment);
		res.setDerivation(deriv);
		return res;
	}

	public void setOrth(String orth) {
		this.orth = orth;
	}

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

	public void setType(String type) {
		this.type = type;
	}

	public void setSubtype(String subtype) {
		this.subtype = subtype;
	}

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

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

	public void setDeriv(TEINamedEntityDerivation deriv) {
		this.deriv = deriv;
	}

	public void setPtrs(List<String> ptrs) {
		this.ptrs = ptrs;
	}

	private List<TEINamedEntityChild> getChildrenList(
			Map<String, TEINamedEntityChild> ptr2Entity) throws TEIException {
		List<TEINamedEntityChild> res = new ArrayList<TEINamedEntityChild>();
		for (String ptr : ptrs) {
			TEINamedEntityChild child = ptr2Entity.get(ptr);
			if (child == null)
				throw new TEIException("Invalid ptr target: " + ptr);
			res.add(child);
		}
		return res;
	}
}