package org.hadatac.console.controllers.studies;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import org.hadatac.console.controllers.AuthApplication;
import org.hadatac.console.models.DeploymentForm;
import org.hadatac.console.models.StudyForm;
import org.hadatac.console.views.html.studies.*;
import org.hadatac.entity.pojo.DataAcquisition;
import org.hadatac.entity.pojo.Study;
import be.objectify.deadbolt.java.actions.Group;
import be.objectify.deadbolt.java.actions.Restrict;
public class CloseStudy extends Controller {
@Restrict(@Group(AuthApplication.DATA_OWNER_ROLE))
public static Result index(String study_uri) {
StudyForm studyForm = new StudyForm();
Study study = null;
try {
if (study_uri != null) {
study_uri = URLDecoder.decode(study_uri, "UTF-8");
} else {
study_uri = "";
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (!study_uri.equals("")) {
study = Study.find(study_uri);
/*
* Add deployment information into handler
*/
if (study.getDataAcquisitions() != null) {
Iterator<DataAcquisition> iterDataAcquisitions = study.getDataAcquisitions().iterator();
while (iterDataAcquisitions.hasNext()) {
studyForm.addDataAcquisition(((DataAcquisition)iterDataAcquisitions.next()).getLabel());
}
}
studyForm.setStartDateTime(study.getStartedAt());
System.out.println("closing deployment");
return ok(closeStudy.render(study_uri, studyForm));
}
return ok(closeStudy.render(study_uri, studyForm));
}
@Restrict(@Group(AuthApplication.DATA_OWNER_ROLE))
public static Result postIndex(String study_uri) {
StudyForm studyForm = new StudyForm();
Study study = null;
try {
if (study_uri != null) {
study_uri = URLDecoder.decode(study_uri, "UTF-8");
} else {
study_uri = "";
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (!study_uri.equals("")) {
study = Study.find(study_uri);
/*
* Add study da information into handler
*/
if (study.getDataAcquisitions() != null) {
Iterator<DataAcquisition> iterDataAcquisitions = study.getDataAcquisitions().iterator();
while (iterDataAcquisitions.hasNext()) {
studyForm.addDataAcquisition(((DataAcquisition)iterDataAcquisitions.next()).getLabel());
}
}
studyForm.setStartDateTime(study.getStartedAt());
System.out.println("closing study");
return ok(closeStudy.render(study_uri, studyForm));
}
return ok(closeStudy.render(study_uri, studyForm));
}
@Restrict(@Group(AuthApplication.DATA_OWNER_ROLE))
public static Result processForm(String study_uri) {
Study study = null;
try {
if (study_uri != null) {
study_uri = URLDecoder.decode(study_uri, "UTF-8");
} else {
study_uri = "";
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (!study_uri.equals("")) {
study = Study.find(study_uri);
}
Form<StudyForm> form = Form.form(StudyForm.class).bindFromRequest();
StudyForm data = form.get();
String dateStringFromJs = data.getEndDateTime();
String endDateString = "";
DateFormat jsFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm a");
Date dateFromJs;
try {
dateFromJs = jsFormat.parse(dateStringFromJs);
DateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
endDateString = isoFormat.format(dateFromJs);
} catch (ParseException e) {
e.printStackTrace();
}
study.close(endDateString);
if (study.getDataAcquisitions() != null) {
Iterator<DataAcquisition> iterDataAcquisitions = study.getDataAcquisitions().iterator();
while (iterDataAcquisitions.hasNext()) {
data.addDataAcquisition(((DataAcquisition)iterDataAcquisitions.next()).getLabel());
}
}
data.setStartDateTime(study.getStartedAt());
data.setEndDateTime(study.getEndedAt());
if (form.hasErrors()) {
System.out.println("HAS ERRORS");
return badRequest(closeStudy.render(study_uri, data));
} else {
return ok(closeStudy.render("Close Study", data));
}
}
}