package org.hadatac.console.controllers.dataacquisitionsearch; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; import java.io.IOException; import play.*; import play.mvc.*; import play.mvc.Http.MultipartFormData; import play.mvc.Http.MultipartFormData.FilePart; import play.libs.*; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.hadatac.console.controllers.annotator.AnnotationLog; import org.hadatac.console.views.html.dataacquisitionsearch.*; import org.hadatac.data.loader.ccsv.Parser; import org.hadatac.data.loader.util.Arguments; import org.hadatac.data.loader.util.FileFactory; import org.hadatac.data.model.ParsingResult; import org.hadatac.utils.Feedback; import org.kohsuke.args4j.Option; public class LoadCCSV extends Controller { static FileFactory files; public static final String UPLOAD_NAME = "uploads/latest.ccsv"; public static Result loadCCSV(String oper) { return ok(loadCCSV.render(oper, "")); } public static Result postLoadCCSV(String oper) { return ok(loadCCSV.render(oper, "")); } public static ParsingResult playLoadCCSV() { int status = 0; String message = ""; Arguments arguments = new Arguments(); arguments.setInputPath(UPLOAD_NAME); arguments.setInputType("CCSV"); arguments.setOutputPath("upload/"); arguments.setVerbose(true); arguments.setPv(false); File inputFile = new File(arguments.getInputPath()); files = new FileFactory(arguments); files.setFile(inputFile, inputFile.getName()); try { files.openFile("log", "w"); files.writeln("log", "[START] " + arguments.getInputPath() + " generating measurements."); if (arguments.getInputType().equals("CCSV")) { Parser parser = new Parser(); if (arguments.isPv()) { ParsingResult result = parser.validate(Feedback.WEB, files); status = result.getStatus(); message += result.getMessage(); } else { ParsingResult result = parser.validate(Feedback.WEB, files); status = result.getStatus(); message += result.getMessage(); if (status == 0) { ParsingResult result_parse = parser.index(Feedback.WEB); status = result_parse.getStatus(); message += result_parse.getMessage(); } } } files.writeln("log", "[END] " + arguments.getInputPath() + " generating measurements."); files.closeFile("log", "w"); } catch (Exception e) { e.printStackTrace(); status = 1; message += "Exception in playLoadCCSV(): "; message += e.toString(); } message += "[" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "] end of file"; return new ParsingResult(status, message); } @BodyParser.Of(value = BodyParser.MultipartFormData.class, maxLength = 500 * 1024 * 1024) public static Result uploadFile() { MultipartFormData body = request().body().asMultipartFormData(); FilePart uploadedfile = body.getFile("pic"); if (uploadedfile != null) { File file = uploadedfile.getFile(); File newFile = new File(UPLOAD_NAME); InputStream isFile; try { isFile = new FileInputStream(file); byte[] byteFile; try { byteFile = IOUtils.toByteArray(isFile); try { FileUtils.writeByteArrayToFile(newFile, byteFile); } catch (Exception e) { e.printStackTrace(); } try { isFile.close(); } catch (Exception e) { return ok(loadCCSV.render("fail", "Could not save uploaded file.")); } } catch (Exception e) { return ok(loadCCSV.render("fail", "Could not process uploaded file.")); } } catch (FileNotFoundException e1) { return ok(loadCCSV.render("fail", "Could not find uploaded file")); } return ok(loadCCSV.render("loaded", "File uploaded successfully.")); } else { return ok(loadCCSV.render("fail", "Error uploading file. Please try again.")); } } }