package de.twenty11.skysail.server.ext.dbviewer;
import java.util.Set;
import javax.persistence.EntityManager;
import javax.validation.ConstraintViolation;
import org.restlet.data.Form;
import org.restlet.resource.Delete;
import org.restlet.resource.Get;
import org.restlet.resource.Post;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.twenty11.skysail.common.Presentation;
import de.twenty11.skysail.common.PresentationStyle;
import de.twenty11.skysail.common.ext.dbviewer.ConnectionDetails;
import de.twenty11.skysail.common.ext.dbviewer.RestfulConnection;
import de.twenty11.skysail.common.responses.FormResponse;
import de.twenty11.skysail.common.responses.SkysailResponse;
import de.twenty11.skysail.server.ext.dbviewer.internal.DbViewerApplication;
import de.twenty11.skysail.server.restlet.UniqueResultServerResource;
@Presentation(preferred = PresentationStyle.EDIT)
public class AddConnectionResource extends UniqueResultServerResource<ConnectionDetails> implements RestfulConnection {
/** slf4j based logger implementation */
private static Logger logger = LoggerFactory.getLogger(AddConnectionResource.class);
public AddConnectionResource() {
setName("new connection ");
setDescription("Providing a form to add a new Connection");
}
@Override
@Get("html")
public FormResponse<ConnectionDetails> getConnection() {
ConnectionDetails connectionDetails = new ConnectionDetails();
setMessage("Adding new Connection");
return new FormResponse<ConnectionDetails>(connectionDetails, "../connections/");
}
@Post("x-www-form-urlencoded:html")
public SkysailResponse<ConnectionDetails> addConnection(Form form) {
logger.info("trying to persist connection");
EntityManager em = ((DbViewerApplication) getApplication()).getEntityManager();
ConnectionDetails details = new ConnectionDetails(form.getFirstValue("username"), form.getFirstValue(
"username"), form.getFirstValue("password"), form.getFirstValue("url"),
form.getFirstValue("driverName"));
Set<ConstraintViolation<ConnectionDetails>> constraintViolations = getValidator().validate(details);
return addEntity(em, details, constraintViolations);
}
// @Override
// @Put
// public SkysailResponse<ConstraintViolations<ConnectionDetails>> updateConnection(ConnectionDetails connection) {
// return null;
// }
@Override
@Delete
public SkysailResponse<String> deleteConnection() {
return null;
}
}