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.Play;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import org.hadatac.console.controllers.AuthApplication;
import org.hadatac.console.controllers.metadata.DynamicFunctions;
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.Deployment;
import org.hadatac.entity.pojo.Detector;
import org.hadatac.entity.pojo.Study;
import org.hadatac.metadata.loader.MetadataContext;
import org.hadatac.utils.Feedback;
import org.hadatac.utils.NameSpaces;
import be.objectify.deadbolt.java.actions.Group;
import be.objectify.deadbolt.java.actions.Restrict;
public class DeleteStudy extends Controller {
@Restrict(@Group(AuthApplication.DATA_OWNER_ROLE))
public static Result index(String study_uri) {
StudyForm studyForm = new StudyForm();
Study study = null;
String result = "";
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());
if (study.getEndedAt() != null) {
studyForm.setEndDateTime(study.getEndedAt());
}
System.out.println("Deleting Study");
study.delete();
result = deleteStudy(DynamicFunctions.replaceURLWithPrefix(study_uri));
return ok(deleteStudy.render(study_uri, studyForm, result));
}
return ok(deleteStudy.render(study_uri, studyForm, result));
}
@Restrict(@Group(AuthApplication.DATA_OWNER_ROLE))
public static Result postIndex(String study_uri) {
return index(study_uri);
}
public static String deleteStudy(String studyUri) {
String result = "";
NameSpaces.getInstance();
MetadataContext metadata = new MetadataContext("user", "password",
Play.application().configuration().getString("hadatac.solr.triplestore"), false);
result = metadata.cleanStudy(Feedback.WEB, studyUri);
return result;
}
@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();
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());
study.delete();
//Deployment deployment = DataFactory.closeDeployment(deploymentUri, endDateString);
if (form.hasErrors()) {
System.out.println("HAS ERRORS");
return badRequest(closeStudy.render(study_uri, data));
} else {
return ok(studyConfirm.render("Delete Study", data));
}
}
}