package no.niths.application.rest.location; import no.niths.application.rest.AbstractRESTControllerImpl; import no.niths.application.rest.lists.ListAdapter; import no.niths.application.rest.lists.location.RoomList; import no.niths.application.rest.location.interfaces.RoomController; import no.niths.common.constants.DomainConstantNames; import no.niths.domain.location.Room; import no.niths.domain.signaling.AccessField; import no.niths.services.interfaces.GenericService; import no.niths.services.location.interfaces.RoomService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; /** * Controller for room * has the basic CRUD methods and * methods too add and remove accessField * in addition too method for findRoom * * For the URL too get Room add /rooms * after the {@value no.niths.common.constants.MiscConstants#NITHS_BASE_DOMAIN} */ @Controller @RequestMapping(DomainConstantNames.ROOMS) public class RoomControllerImpl extends AbstractRESTControllerImpl<Room> implements RoomController { @Autowired private RoomService service; private RoomList roomList = new RoomList(); @Override public GenericService<Room> getService() { return service; } @Override public ListAdapter<Room> getList() { return roomList; } /** * {@inheritDoc} */ @Override @RequestMapping(value = "{roomId}/accessfield/{accessFieldId}", method = RequestMethod.POST) @ResponseStatus(value = HttpStatus.OK, reason = "AcessField added") public void addAccessField(@PathVariable long roomId, @PathVariable long accessFieldId) { service.addAccessField(roomId, accessFieldId); } /** * {@inheritDoc} */ @Override @RequestMapping(value = "{roomId}/accessfield/{accessFieldId}", method = RequestMethod.DELETE) @ResponseStatus(value = HttpStatus.OK, reason = "Access Field Removed") public void removeAccessField(@PathVariable long roomId, @PathVariable long accessFieldId) { service.removeAccessField(roomId, accessFieldId); } /** * {@inheritDoc} */ @Override @RequestMapping( value = "search/accesspoint") @ResponseBody public Room findRoom(AccessField accessField) { return service.getRoom(accessField); } }