package com.dataiku.wt1.gae;

import java.io.IOException;
import java.nio.channels.Channels;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.backends.BackendServiceFactory;
import com.google.appengine.api.files.AppEngineFile;
import com.google.appengine.api.files.FileService;
import com.google.appengine.api.files.FileServiceFactory;
import com.google.appengine.api.files.FileWriteChannel;
import com.google.appengine.api.files.GSFileOptions.GSFileOptionsBuilder;

/**
 * Google App Engine implementation of the tracked request processor.
 * It stores data in the Google Cloud Storage.
 */
public class TestServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	private String newFileName() {
		long now = System.currentTimeMillis();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/HH/mm-ss");
		String name = "trackerz/" + 
		BackendServiceFactory.getBackendService().getCurrentBackend() + "-" +
		BackendServiceFactory.getBackendService().getCurrentInstance() + "/" +
		sdf.format(new Date(now)) + ".log";
		return name;
	}
	
	@Override
	public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		try {
		System.out.println(newFileName());
		 FileService fileService = FileServiceFactory.getFileService();
		GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
		.setBucket("wt1-test1")
		.setKey(newFileName());

		AppEngineFile aef = fileService.createNewGSFile(optionsBuilder.build());
		
		FileWriteChannel ch = fileService.openWriteChannel(aef, true);
		
		Channels.newWriter(ch, "utf8").append("pouet").flush();
		
		ch.closeFinally();
		System.out.println("SUCCESS **************");
		} catch (Exception e) {
			System.out.println("FAILURE **************************");
			e.printStackTrace();
		}
	}

}