package edu.isi.karma.controller.command;
import java.io.PrintWriter;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import edu.isi.karma.controller.update.AbstractUpdate;
import edu.isi.karma.controller.update.UpdateContainer;
import edu.isi.karma.rep.Workspace;
import edu.isi.karma.util.SavedModelURLs;
import edu.isi.karma.view.VWorkspace;
public class GetR2RMLModelURLsCommand extends Command {
private static Logger logger = LoggerFactory.getLogger(GetR2RMLModelURLsCommand.class);
protected GetR2RMLModelURLsCommand(String id, String model) {
super(id, model);
}
@Override
public String getCommandName() {
return GetR2RMLModelURLsCommand.class.getName();
}
@Override
public String getTitle() {
// TODO Auto-generated method stub
return "Get R2RML Model URLs";
}
@Override
public String getDescription() {
return null;
}
@Override
public CommandType getCommandType() {
return CommandType.notInHistory;
}
@Override
public UpdateContainer doIt(Workspace workspace) throws CommandException {
UpdateContainer c = new UpdateContainer();
c.add(new AbstractUpdate() {
@Override
public void generateJson(String prefix, PrintWriter pw,
VWorkspace vWorkspace) {
try {
JSONObject outputObject = (new SavedModelURLs()).getSavedModels(vWorkspace.getWorkspace().getContextId());
JSONArray models = outputObject.getJSONArray("models");
JSONArray revModels = new JSONArray();
for(int i=models.length()-1; i>=0; i--)
revModels.put(models.get(i));
outputObject.put("models", revModels);
pw.println(outputObject.toString());
} catch (Exception e) {
e.printStackTrace();
logger.error("Error occured while generating JSON!");
}
}
});
return c;
}
@Override
public UpdateContainer undoIt(Workspace workspace) {
return null;
}
}