package edu.isi.karma.controller.command.alignment;
import java.io.PrintWriter;
import java.util.Set;
import org.json.JSONObject;
import edu.isi.karma.controller.command.Command;
import edu.isi.karma.controller.command.CommandException;
import edu.isi.karma.controller.command.CommandType;
import edu.isi.karma.controller.update.AbstractUpdate;
import edu.isi.karma.controller.update.UpdateContainer;
import edu.isi.karma.modeling.alignment.Alignment;
import edu.isi.karma.modeling.alignment.AlignmentManager;
import edu.isi.karma.rep.Workspace;
import edu.isi.karma.rep.alignment.LabeledLink;
import edu.isi.karma.rep.alignment.LinkKeyInfo;
import edu.isi.karma.view.VWorkspace;
public class FetchHNodeIdFromAlignmentCommand extends Command{
private String alignmentId;
private String columnUri;
public FetchHNodeIdFromAlignmentCommand(String id, String model, String alignmentId, String columnUri) {
super(id, model);
this.alignmentId = alignmentId;
this.columnUri = columnUri;
}
@Override
public String getCommandName() {
// TODO Auto-generated method stub
return this.getClass().getSimpleName();
}
@Override
public String getTitle() {
// TODO Auto-generated method stub
return "Fetch HNodeId From Alignment";
}
@Override
public String getDescription() {
// TODO Auto-generated method stub
return null;
}
@Override
public CommandType getCommandType() {
// TODO Auto-generated method stub
return CommandType.notInHistory;
}
@Override
public UpdateContainer doIt(Workspace workspace) throws CommandException {
String hNodeId = gethNodeId(alignmentId, columnUri);
final String copy = hNodeId;
return new UpdateContainer(new AbstractUpdate() {
@Override
public void generateJson(String prefix, PrintWriter pw, VWorkspace vWorkspace) {
JSONObject obj = new JSONObject();
obj.put("HNodeId", copy);
pw.print(obj.toString());
}
});
}
public static String gethNodeId(String alignmentId, String columnUri) {
Alignment alignment = AlignmentManager.Instance().getAlignment(alignmentId);
Set<LabeledLink> tmp = alignment.getCurrentOutgoingLinksToNode(columnUri);
String hNodeId = null;
for (LabeledLink link : tmp) {
if (link.getKeyType() == LinkKeyInfo.UriOfInstance) {
hNodeId = link.getTarget().getId();
}
}
return hNodeId;
}
@Override
public UpdateContainer undoIt(Workspace workspace) {
// TODO Auto-generated method stub
return null;
}
}