package edu.isi.karma.controller.command.worksheet; import java.io.File; import java.net.URL; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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.command.WorksheetCommand; import edu.isi.karma.controller.update.ErrorUpdate; import edu.isi.karma.controller.update.UpdateContainer; import edu.isi.karma.rep.Workspace; import edu.isi.karma.rep.metadata.WorksheetProperties.Property; public class ApplyModelFromURLCommand extends WorksheetCommand{ private String modelURL; private String modelContext; private String modelRepository; private String baseUrl = "http://localhost:8080/R2RMLMapping/local/repository/"; private boolean override; private static Logger logger = LoggerFactory.getLogger(ApplyModelFromURLCommand.class); public ApplyModelFromURLCommand(String id, String model, String worksheetId, String modelURL, String modelContext, String modelRepository, String baseURL, boolean override) { super(id, model, worksheetId); this.modelURL = modelURL; this.modelContext = modelContext; this.modelRepository = modelRepository; this.baseUrl = baseURL; this.override = override; } @Override public String getCommandName() { return ApplyModelFromURLCommand.class.getSimpleName(); } @Override public String getTitle() { return "Apply Models"; } @Override public String getDescription() { return modelURL; } @Override public CommandType getCommandType() { return CommandType.notUndoable; } @Override public UpdateContainer doIt(Workspace workspace) throws CommandException { ApplyHistoryFromR2RMLModelCommandFactory factory = new ApplyHistoryFromR2RMLModelCommandFactory(); try { String context = (modelContext != null && !modelContext.isEmpty()? (modelContext + "/") : ""); URL url = new URL(baseUrl + context + modelURL + "?modelRepository=" + modelRepository); File file = new File("tmp.ttl"); FileUtils.copyURLToFile(url, file); Command cmd = factory.createCommandFromFile(model, worksheetId, file, workspace, override); UpdateContainer uc = cmd.doIt(workspace); workspace.getWorksheet(worksheetId).getMetadataContainer().getWorksheetProperties().setPropertyValue(Property.modelUrl, modelURL); workspace.getWorksheet(worksheetId).getMetadataContainer().getWorksheetProperties().setPropertyValue(Property.modelContext, modelContext); workspace.getWorksheet(worksheetId).getMetadataContainer().getWorksheetProperties().setPropertyValue(Property.modelRepository, modelRepository); file.delete(); return uc; }catch(Exception e) { String msg = "Error occured while applying history!"; logger.error(msg, e); return new UpdateContainer(new ErrorUpdate(msg)); } } @Override public UpdateContainer undoIt(Workspace workspace) { // TODO Auto-generated method stub return null; } }