diff --git a/cs656/lab4/User.java b/cs656/lab4/User.java new file mode 100644 index 0000000..6f08652 --- /dev/null +++ b/cs656/lab4/User.java @@ -0,0 +1,43 @@ + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.restlet.data.MediaType; +import org.restlet.resource.DomRepresentation; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import com.db4o.query.Predicate; + +import edu.gvsu.cis.cs656.lab4.server.RegistrationInfo; + +public class User extends RegistrationInfo +{ + public DomRepresentation getDomRepresentation() throws IOException + { + DomRepresentation rep = new DomRepresentation(MediaType.TEXT_XML); + Document d = rep.getDocument(); + Element eltRoot = d.createElement("user"); + d.appendChild(eltRoot); + + Element eltName = d.createElement("name"); + eltName.appendChild(d.createTextNode(getUserName())); + eltRoot.appendChild(eltName); + + Element eltHost = d.createElement("host"); + eltHost.appendChild(d.createTextNode(getHost())); + eltRoot.appendChild(eltHost); + + Element eltPort = d.createElement("port"); + eltPort.appendChild(d.createTextNode(getPort())); + eltRoot.appendChild(eltPort); + + Element eltStatus = d.createElement("status"); + eltStatus.appendChild( + d.createTextNode(getStatus() ? "available" : "away")); + eltRoot.appendChild(eltStatus); + + return rep; + } +} diff --git a/cs656/lab4/UsersResource.java b/cs656/lab4/UsersResource.java new file mode 100644 index 0000000..98de716 --- /dev/null +++ b/cs656/lab4/UsersResource.java @@ -0,0 +1,105 @@ +//---------------------------------------------------------------------- +// +// Filename: UsersResource.java +// Description: +// +// $Id:$ +// +//---------------------------------------------------------------------- + +import java.io.IOException; + +import org.restlet.Context; +import org.restlet.data.Form; +import org.restlet.data.MediaType; +import org.restlet.data.Request; +import org.restlet.data.Response; +import org.restlet.resource.Resource; +import org.restlet.data.Status; +import org.restlet.resource.DomRepresentation; +import org.restlet.resource.Representation; +import org.restlet.resource.Variant; + + +public class UsersResource extends Resource +{ + + public UsersResource(Context context, Request request, Response response) + { + super(context, request, response); + getVariants().add(new Variant(MediaType.TEXT_XML)); + } + + /** + * handle HTTP GET requests. + */ + @Override + public Representation getRepresentation(Variant variant) + { + DomRepresentation rep = null; + if (variant.getMediaType().equals(MediaType.TEXT_XML)) + { + try + { + rep = new DomRepresentation(MediaType.TEXT_XML); + getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND); + rep.getDocument().normalizeDocument(); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + return rep; + } + + @Override + public boolean allowDelete() + { + return false; + } + + @Override + public boolean allowPut() + { + return false; + } + + @Override + public boolean allowPost() + { + return true; + } + + /** + * Handle HTTP POST. Create a new book resource. + */ + @Override + public void post(Representation entity) + { + if (entity.getMediaType().equals(MediaType.APPLICATION_WWW_FORM, true)) + { + // Parse the entity as a web form + Form form = new Form(entity); + + // create a new User object + Book book = new Book(); + book.setId(form.getFirstValue("book[id]")); + book.setAuthors(form.getFirstValue("book[authors]")); + book.setIsbn(form.getFirstValue("book[isbn]")); + book.setTitle(form.getFirstValue("book[title]")); + book.setPublisher(form.getFirstValue("book[publisher]")); + book.setYear(form.getFirstValue("book[year]")); + getResponse().setStatus(Status.SUCCESS_CREATED); + + // commit the changes. + getContainer().set(book); + getContainer().commit(); + + } + else + { + getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND); + } + } +}