package org.hibernate.ogm.hiking.rest;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import org.hibernate.ogm.hiking.model.Person;
import org.hibernate.ogm.hiking.model.Trip;
import org.hibernate.ogm.hiking.repository.TripRepository;
import org.hibernate.ogm.hiking.rest.model.ExternalTrip;
import org.hibernate.ogm.hiking.rest.model.ExternalTripWithHikes;
@Path("/trips")
@Stateless
public class TripResource {
@Inject
private TripRepository tripRepository;
public TripResource() {
}
@GET
@Path("/")
@Produces("application/json")
public List<ExternalTrip> getAllTrips() {
List<Trip> trips = tripRepository.getAllTrips();
List<ExternalTrip> externalTrip = new ArrayList<>( trips.size() );
for ( Trip trip : trips ) {
externalTrip.add( new ExternalTrip( trip, true ) );
}
return externalTrip;
}
@GET
@Path("/{id}")
@Produces("application/json")
public ExternalTripWithHikes getTripById(@PathParam("id") long tripId) {
// full load
return new ExternalTripWithHikes( tripRepository.getTripById( tripId ) );
}
@POST
@Path("/")
@Consumes("application/json")
@Produces("application/json")
public long createTrip(ExternalTrip externalTrip) {
Trip trip = new Trip();
externalTrip.populateTrip( trip );
trip = tripRepository.createTrip( trip );
return trip.id;
}
}