package edu.isi.karma.controller.command;
import java.io.PrintWriter;
import org.json.JSONStringer;
import org.json.JSONWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import edu.isi.karma.config.UIConfiguration;
import edu.isi.karma.config.UIConfigurationRegistry;
import edu.isi.karma.controller.update.AbstractUpdate;
import edu.isi.karma.controller.update.ErrorUpdate;
import edu.isi.karma.controller.update.UpdateContainer;
import edu.isi.karma.rep.Workspace;
import edu.isi.karma.view.VWorkspace;
public class UpdateUIConfigurationCommand extends Command {
private boolean show_rdfs_label_first;
private boolean show_rdfs_id_first;
private static Logger logger = LoggerFactory.getLogger(UpdateUIConfigurationCommand.class);
protected UpdateUIConfigurationCommand(String id, String model, boolean show_rdfs_label_first, boolean show_rdfs_id_first) {
super(id, model);
this.show_rdfs_label_first = show_rdfs_label_first;
this.show_rdfs_id_first = show_rdfs_id_first;
}
@Override
public String getCommandName() {
return this.getClass().getSimpleName();
}
@Override
public String getTitle() {
return "Set UI Configuration";
}
@Override
public String getDescription() {
return null;
}
@Override
public CommandType getCommandType() {
return CommandType.notInHistory;
}
@Override
public UpdateContainer doIt(Workspace workspace) throws CommandException {
UpdateContainer uc = new UpdateContainer();
try {
uc.add(new AbstractUpdate() {
@Override
public void generateJson(String prefix, PrintWriter pw,
VWorkspace vWorkspace) {
try {
UIConfiguration uiConfiguration = UIConfigurationRegistry.getInstance().getUIConfiguration(vWorkspace.getWorkspace().getContextId());
uiConfiguration.updateShowRDFSLabelWithIDFirst(show_rdfs_id_first);
uiConfiguration.updateShowRDFSLabelWithLabelFirst(show_rdfs_label_first);
JSONStringer jsonStr = new JSONStringer();
JSONWriter writer = jsonStr.object();
writer.key("updateType").value("UpdateUIConfigurationUpdate");
writer.key("show_rdfs_id_first").value(show_rdfs_id_first);
writer.key("show_rdfs_label_first").value(show_rdfs_label_first);
writer.endObject();
pw.print(writer.toString());
} catch (Exception e) {
logger.error("Error updating UI Configuraion", e);
}
}
});
return uc;
} catch (Exception e) {
logger.error("Error updating UI Configuraion:" , e);
uc.add(new ErrorUpdate("Error updating UI Configuraion"));
return uc;
}
}
@Override
public UpdateContainer undoIt(Workspace workspace) {
return null;
}
}