/** * Liefert alle oder eine Auswahl an Spielen * * @param search Suchwort für eine Auswahl * @return Spiele * @throws JAXBException */ @GET @Produces(MediaType.APPLICATION_XML) public Spiele getSpiele( @QueryParam("search") String search, @QueryParam("namesonly") boolean namesonly) throws JAXBException { Spiele spiele = (Spiele) XmlTools.unmarshal(Spiele.class); Spiele spieleNew; // kein Filter angegeben, alle ausgeben if (search == null || search.equals("")) { spieleNew = spiele; // Filter, nur bestimmte ausgeben } else { spieleNew = new Spiele(); for (Spiel s : spiele.getSpiel()) { if (s.getName().contains(search)) { spieleNew.getSpiel().add(s); } } } if (namesonly) { Spiele spieleNamesonly = new Spiele(); for (Spiel s : spieleNew.getSpiel()) { Spiel sp = new Spiel(); sp.setName(s.getName()); spieleNamesonly.getSpiel().add(sp); } spieleNew = spieleNamesonly; } return spieleNew; }
/** * Liefert alle Spieler die ein bestimmtes Spiel spielen * * @param id ID des Spiels * @return * @throws JAXBException */ @GET @Path("/{id}/spieler") @Produces(MediaType.APPLICATION_XML) public Spielerdaten getSpielSpieler(@PathParam("id") int id) throws JAXBException { SpieleSpieler spieleSpieler = (SpieleSpieler) XmlTools.unmarshal(SpieleSpieler.class); Spielerdaten spielerdaten = (Spielerdaten) XmlTools.unmarshal(Spielerdaten.class); Spielerdaten spielerdatenNew = new Spielerdaten(); for (SpielSpieler ss : spieleSpieler.getSpielSpieler()) { if (ss.getSpielId().intValue() == id) { for (Spieler s : spielerdaten.getSpieler()) { if (s.getId().intValue() == ss.getSpielerId().intValue()) { spielerdatenNew.getSpieler().add(s); break; } } } } return spielerdatenNew; }
@GET @Produces(MediaType.APPLICATION_XML) @Path("/{id}/kommentare") public Kommentare getKommentare(@PathParam("id") int id) throws JAXBException { Spiele spiele = (Spiele) XmlTools.unmarshal(Spiele.class); for (Spiel s : spiele.getSpiel()) { if (s.getId().intValue() == id) { return s.getKommentare(); } } throw new WebApplicationException(Response.Status.NOT_FOUND); }
/** * Löscht ein bestimmtes Spiel * * @param id ID des Spiels * @throws JAXBException * @throws FileNotFoundException */ @DELETE @Path("/{id}") public void deleteSpiel(@PathParam("id") int id) throws JAXBException, FileNotFoundException { Spiele spiele = (Spiele) XmlTools.unmarshal(Spiele.class); for (Spiel s : spiele.getSpiel()) { if (s.getId().intValue() == id) { spiele.getSpiel().remove(s); XmlTools.marshal(Spiele.class, spiele); throw new WebApplicationException(Response.Status.NO_CONTENT); } } throw new WebApplicationException(Response.Status.NOT_FOUND); }
/** * Erstellt ein neues Spiel * * @param src Spiel * @throws JAXBException * @throws FileNotFoundException */ @POST @Consumes(MediaType.APPLICATION_XML) public void createSpiel(Spiel src) throws JAXBException, FileNotFoundException { Spiele spiele = (Spiele) XmlTools.unmarshal(Spiele.class); // Check ob bereits vorhanden for (Spiel s : spiele.getSpiel()) { if (s.getName().equals(src.getName())) { throw new WebApplicationException(Response.Status.CONFLICT); } } // nicht vorhanden, hinzufügen src.setId(XmlTools.getNextSpielId()); spiele.getSpiel().add(src); XmlTools.marshal(Spiele.class, spiele); throw new WebApplicationException(Response.Status.CREATED); }
@DELETE @Path("/spieler/{spielid}/{spielerid}") public void deleteSpielSpieler( @PathParam("spielid") int spielid, @PathParam("spielerid") int spielerid) throws JAXBException, FileNotFoundException { SpieleSpieler ss = (SpieleSpieler) XmlTools.unmarshal(SpieleSpieler.class); for (SpielSpieler s : ss.getSpielSpieler()) { if (s.getSpielId().intValue() == spielid && s.getSpielerId().intValue() == spielerid) { ss.getSpielSpieler().remove(s); XmlTools.marshal(SpieleSpieler.class, ss); throw new WebApplicationException(Response.Status.NO_CONTENT); } } // Zwar nichts gelöscht, aber egal, nicht dramatisch throw new WebApplicationException(Response.Status.NO_CONTENT); }
@POST @Consumes(MediaType.APPLICATION_XML) @Path("/{id}/kommentare") public void createKommentar(@PathParam("id") int id, Kommentar src) throws JAXBException, FileNotFoundException { Spiele spiele = (Spiele) XmlTools.unmarshal(Spiele.class); src.setId(XmlTools.getNextKommentarId(id)); for (Spiel s : spiele.getSpiel()) { // Spiel, zu dem der Kommentar gehört if (s.getId().intValue() == id) { s.getKommentare().getKommentar().add(src); XmlTools.marshal(Spiele.class, spiele); throw new WebApplicationException(Response.Status.CREATED); } } throw new WebApplicationException(Response.Status.NOT_FOUND); }
@DELETE @Path("/{id}/kommentare/{comment_id}") public void deleteKommentar(@PathParam("id") int id, @PathParam("comment_id") int cid) throws JAXBException, FileNotFoundException { Spiele spiele = (Spiele) XmlTools.unmarshal(Spiele.class); for (Spiel s : spiele.getSpiel()) { if (s.getId().intValue() == id) { Kommentare kommentare = s.getKommentare(); for (Kommentar k : kommentare.getKommentar()) { if (k.getId().intValue() == cid) { kommentare.getKommentar().remove(k); XmlTools.marshal(Spiele.class, spiele); throw new WebApplicationException(Response.Status.NO_CONTENT); } } } } throw new WebApplicationException(Response.Status.NOT_FOUND); }
/** * Erstellt eine neue Zuordnung zwischen einem Spiel und einem Spieler, falls diese noch nicht * existiert * * @param src * @throws JAXBException * @throws FileNotFoundException */ @POST @Path("/spieler") @Consumes(MediaType.APPLICATION_XML) public void createSpielSpieler(SpielSpieler src) throws JAXBException, FileNotFoundException, DatatypeConfigurationException { SpieleSpieler spieleSpieler = (SpieleSpieler) XmlTools.unmarshal(SpieleSpieler.class); for (SpielSpieler ss : spieleSpieler.getSpielSpieler()) { // System.out.println("SpielSpieler iteration: ss.spielerid: " + ss.getSpielerId() + " // src.spielerid: " + src.getSpielerId() + " -- ss.spielid: " + ss.getSpielId() + " // src.spielid: " + src.getSpielId()); if (ss.getSpielerId().intValue() == src.getSpielerId().intValue() && ss.getSpielId().intValue() == src.getSpielId().intValue()) { throw new WebApplicationException(Response.Status.CONFLICT); } } XMLGregorianCalendar xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()); src.setDatumzeit(xgc); spieleSpieler.getSpielSpieler().add(src); XmlTools.marshal(SpieleSpieler.class, spieleSpieler); throw new WebApplicationException(Response.Status.CREATED); }
/** * Aktualisiert oder erstellt ein bestimmtes Spiel * * @param id ID des Spiels * @param src zu aktualisierendes oder erstellendes Spiel * @throws JAXBException * @throws FileNotFoundException */ @PUT @Path("/{id}") @Consumes(MediaType.APPLICATION_XML) public void setSpiel(@PathParam("id") int id, Spiel src) throws JAXBException, FileNotFoundException { src.setId(BigInteger.valueOf(id)); Spiele spiele = (Spiele) XmlTools.unmarshal(Spiele.class); // Check ob Name bereits vorhanden for (Spiel s : spiele.getSpiel()) { if (s.getName().equals(src.getName())) { throw new WebApplicationException(Response.Status.CONFLICT); } } // überschreiben da bereits vorhanden for (Spiel s : spiele.getSpiel()) { if (s.getId().intValue() == id) { spiele.getSpiel().set(spiele.getSpiel().indexOf(s), src); XmlTools.marshal(Spiele.class, spiele); throw new WebApplicationException(Response.Status.NO_CONTENT); } } // einfügen da nicht vorhanden Spiele spieleNew = new Spiele(); int lastId = 0; for (Spiel s : spiele.getSpiel()) { if (id < s.getId().intValue() && id > lastId) { spieleNew.getSpiel().add(src); } spieleNew.getSpiel().add(s); lastId = s.getId().intValue(); } if (id > lastId) { spieleNew.getSpiel().add(src); } XmlTools.marshal(Spiele.class, spieleNew); throw new WebApplicationException(Response.Status.CREATED); }