package de.twenty11.skysail.server.ext.mail;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.restlet.data.Form;
import org.restlet.resource.Get;
import de.twenty11.skysail.common.Presentation;
import de.twenty11.skysail.common.PresentationStyle;
import de.twenty11.skysail.common.responses.FailureResponse;
import de.twenty11.skysail.common.responses.FormResponse;
import de.twenty11.skysail.common.responses.SkysailResponse;
import de.twenty11.skysail.common.responses.SuccessResponse;
import de.twenty11.skysail.server.ext.mail.internal.MyApplication;
import de.twenty11.skysail.server.restlet.AddServerResource;
@Presentation(preferred = PresentationStyle.EDIT)
public class AddAccountResource extends AddServerResource<AccountDescriptor> {
public AddAccountResource() {
setName("add account");
}
@Override
@Get("html")
public FormResponse<AccountDescriptor> createForm() {
return new FormResponse<AccountDescriptor>(new AccountDescriptor(), "../accounts/");
}
@Override
public AccountDescriptor getData(Form form) {
AccountDescriptor accountDescriptor = new AccountDescriptor(form.getFirstValue("name"));
accountDescriptor.setUsername(form.getFirstValue("username"));
accountDescriptor.setPassword(form.getFirstValue("password"));
accountDescriptor.setHost(form.getFirstValue("host"));
return accountDescriptor;
}
@Override
public SkysailResponse<AccountDescriptor> addEntity(AccountDescriptor entity) {
MyApplication application = (MyApplication) getApplication();
EntityManagerFactory emf = application.getEmf();
EntityManager em = emf.createEntityManager();
try {
em.getTransaction().begin();
em.persist(entity);
em.getTransaction().commit();
em.close();
return new SuccessResponse<AccountDescriptor>();
} catch (Exception e) {
e.printStackTrace();
return new FailureResponse<AccountDescriptor>(e.getMessage());
}
}
}