package org.hadatac.console.controllers.dataacquisitionmanagement;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import play.mvc.Controller;
import play.mvc.Result;
import org.hadatac.console.controllers.AuthApplication;
import org.hadatac.console.controllers.dataacquisitionmanagement.routes;
import org.hadatac.console.models.SysUser;
import org.hadatac.console.views.html.dataacquisitionmanagement.*;
import org.hadatac.entity.pojo.DataAcquisition;
import org.hadatac.entity.pojo.Measurement;
import be.objectify.deadbolt.java.actions.Group;
import be.objectify.deadbolt.java.actions.Restrict;
public class DeleteDataAcquisition extends Controller {
@Restrict(@Group(AuthApplication.DATA_OWNER_ROLE))
public static Result index(String oper, String uri) {
DataAcquisition dc = new DataAcquisition();
try {
if (uri != null) {
uri = URLDecoder.decode(uri, "UTF-8");
} else {
uri = "";
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (!uri.equals("")) {
/*
* Add deployment information into handler
*/
dc = DataAcquisition.findByUri(uri);
if (dc == null) {
return badRequest("Incorrect data acquisition uri detected!");
}
final SysUser user = AuthApplication.getLocalUser(session());
return ok(deleteDataAcquisition.render(oper, dc, user.isDataManager()));
}
return badRequest("No data acquisition uri specified!");
}
@Restrict(@Group(AuthApplication.DATA_OWNER_ROLE))
public static Result postIndex(String oper, String uri) {
return index(oper, uri);
}
public static String delete(String uri) {
DataAcquisition dc = new DataAcquisition();
try {
if (uri != null) {
uri = URLDecoder.decode(uri, "UTF-8");
} else {
uri = "";
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (!uri.equals("")) {
/*
* Add deployment information into handler
*/
dc = DataAcquisition.findByUri(uri);
dc.delete();
return "Data Acquisition deleted.";
}
return "Data Acquisition failed to be deleted.";
}
public static Result deleteDataPoints(String uri, int state) {
DataAcquisition dc = new DataAcquisition();
try {
if (uri != null) {
uri = URLDecoder.decode(uri, "UTF-8");
} else {
uri = "";
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (!uri.equals("")) {
/*
* Add deployment information into handler
*/
dc = DataAcquisition.findByUri(uri);
if (!dc.deleteMeasurementData()) {
dc.setNumberDataPoints(Measurement.getNumByDataAcquisition(dc));
dc.save();
return badRequest("Measurement data in this data acquisition failed to be deleted.");
}
dc.setNumberDataPoints(0);
dc.save();
return redirect(routes.DataAcquisitionManagement.index(state));
}
return badRequest("Measurement data in this data acquisition failed to be deleted.");
}
public static Result postDeleteDataPoints(String uri, int state) {
return deleteDataPoints(uri, state);
}
}