備忘録 〜プログラミング〜

プログラミングに関する事をつらつらと、、

Play frameworkでCSVファイルのダウンロード

以下のCSVクラスを使用する。

public interface OutputFile {
   public boolean output();
}

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;

public class Csv implements OutputFile {
  private String inputFile = "";
  private String outputFile = getCurrentDate();
  
  public Csv(String outputFile) {
    this.outputFile = outputFile;
  }
  
  public Csv(String inputFile, String outputFile){
    this.inputFile = inputFile;
    this.outputFile = outputFile;
  }
  
  public String getOutputFile(){
    return this.outputFile;
  }
  
  public String getInputFile(){
    return this.inputFile;
  }
  
  @Override
  public boolean output() {
    try {
      FileWriter fileWriter = new FileWriter(this.outputFile, false);
      PrintWriter printWriter = new PrintWriter(new BufferedWriter(fileWriter));
      printWriter.print("テスト");
      printWriter.print(",");
      printWriter.print("テスト2");
      printWriter.close();
      return true;
    } catch (Exception e) {
      return false;
    }
  }
  
  private String getCurrentDate(){
    Calendar calendar = Calendar.getInstance();
    String year = String.valueOf(calendar.get(Calendar.YEAR));
    String month = String.valueOf(calendar.get(Calendar.MONTH));
    String date = String.valueOf(calendar.get(Calendar.DATE));
    String seconds = String.valueOf(calendar.get(Calendar.SECOND));
    return year + "-" + month + "-" + date + "-" + seconds + UUID.randomUUID().toString() + ".csv";
  }
}

次に、playframeworkのコントローラーの実装。

def get = Action { implicit request =>
  val csv:Csv = new Csv()
  val csvFile:String = csv.getOutputFile()
  csv.output() match{
    case true => {
      val file = new File(csvFile)
      Ok.sendFile(file)
    }
    case false => Ok("bad Access")
  }
}

これでCSVファイルをダウンロードする事が出来る。