package org.ilrt.mca.rest.resources;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.vocabulary.RDFS;
import com.sun.jersey.api.view.Viewable;
import com.sun.jersey.spi.resource.Singleton;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.IOException;
import java.util.Properties;
@Singleton
@Path("/feedback/")
public class FeedBackResource {
public FeedBackResource() throws IOException {
mailProperties = new Properties();
mailProperties.load(getClass().getResourceAsStream("/feedback.properties"));
Model m = ModelFactory.createDefaultModel();
r = m.createResource();
r.addProperty(RDFS.label, "Feedback");
}
@GET
@Produces({MediaType.TEXT_HTML})
public Response processForm(@QueryParam("email") String email,
@QueryParam("comment") String comment) throws MessagingException {
if (comment == null || comment.isEmpty()) {
return Response.ok(new Viewable("/feedback", r)).build();
}
// create the session
Session session = Session.getDefaultInstance(mailProperties);
// construct the message
MimeMessage message = new MimeMessage(session);
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(mailProperties.getProperty("mail.to")));
// Note the email if one exists
if (!(email == null || email.isEmpty())) {
comment = "Mail from: " + email + "\n" + comment;
}
message.setSubject(mailProperties.getProperty("mail.subject"));
message.setText(comment);
// send the message
Transport.send(message);
// show a thank you page
return Response.ok(new Viewable("/feedback_thanks", r)).build();
}
Properties mailProperties;
Resource r;
}