DasherJava / src / dasherJava / core / alphabets / xml / Node.java
Node.java
Raw
package dasherJava.core.alphabets.xml;

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

import dasherJava.core.alphabets.actions.Action;
import dasherJava.core.alphabets.actions.Action.TextCharAction;

class Node {
	
	private final String label;
	private final int trainingUnicode;
	private final float fixedProbability;
	private final Group group;
	private final List<Action> actions = new ArrayList<>();
	
	Node(String label, int trainingUnicode, float fixedProbability, Group group) {
		this.label=label;
		this.trainingUnicode=trainingUnicode;
		this.fixedProbability=fixedProbability;
		this.group=group;
	}
	
	String getLabel() {
		return label;
	}
	
	int getTrainingUnicode() {
		if (trainingUnicode>=0) return trainingUnicode;
		//if unspecified, infer from the first TextCharAction if present
		for (Action action : actions) {
			if (action instanceof TextCharAction) {
				TextCharAction textCharAction = (TextCharAction) action;
				return textCharAction.getUnicode();
			}
		}
		//otherwise infer from the label if it consists of exactly one Unicode character
		if (label!=null && label.length()==1) return label.codePointAt(0);
		return -1; //error
	}
	
	float getFixedProbability() {
		return fixedProbability;
	}
	
	Group getGroup() {
		return group;
	}
	
	List<Action> getActions() {
		return actions;
	}
	
	void addAction(Action action) {
		actions.add(action);
	}
}