gate.alignment.gui.actions.impl.FeatureTransferrerAction Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of alignment Show documentation
Show all versions of alignment Show documentation
A selection of tools for processing parallel texts.
package gate.alignment.gui.actions.impl;
import gate.Annotation;
import gate.alignment.Alignment;
import gate.alignment.AlignmentActionInitializationException;
import gate.alignment.AlignmentException;
import gate.alignment.gui.AlignmentTask;
import gate.alignment.gui.FinishedAlignmentAction;
import gate.alignment.gui.PUAPair;
import java.util.Set;
/**
* This actions is useful for transferring features from source
* annotations to the respective aligned target annotations.
*
* User need to provide names of features to transfer. If none provided,
* all features are transferred.
*
* @author niraj
*
*/
public class FeatureTransferrerAction implements FinishedAlignmentAction {
/**
* What feature to use to store in the dictionary. User can provide
* his/her own feature
*/
private String[] featureToUse = new String[0];
/**
* Is the init called?
*/
boolean initCalled = false;
/**
* the init method. Arguments: names of features to transfer. If none
* provided, all features are transferred.
*/
public void init(String[] args) throws AlignmentActionInitializationException {
if(initCalled) return;
initCalled = true;
if(args.length == 0) {
throw new AlignmentActionInitializationException(
"provide at least one feature name to transfer");
}
featureToUse = new String[args.length];
for(int i = 0; i < args.length; i++) {
featureToUse[i] = args[i];
}
}
public void cleanup() {
}
public String getToolTip() {
return "Feature Transferrer";
}
public void executeFinishedAlignmentAction(PUAPair pair)
throws AlignmentException {
// task
AlignmentTask task = pair.getAlignmentTask();
Alignment alignment = task.getAlignment();
for(Annotation srcAnnot : pair.getSourceUnitAnnotations()) {
Set tgtAlignedAnnots = alignment
.getAlignedAnnotations(srcAnnot);
if(tgtAlignedAnnots == null || tgtAlignedAnnots.isEmpty()) {
continue;
}
for(String feature : featureToUse) {
Object value = srcAnnot.getFeatures().get(feature);
if(value == null) continue;
for(Annotation tgtAnnot : tgtAlignedAnnots) {
Object tcat = tgtAnnot.getFeatures().get(feature);
if(tcat == null) {
tcat = value;
}
else {
tcat = tcat.toString() + "," + value.toString();
}
tgtAnnot.getFeatures().put(feature, tcat);
}
}
}
}
}