package no.niths.application.rest.signaling;
import javax.servlet.http.HttpServletResponse;
import no.niths.aop.ApiEvent;
import no.niths.application.rest.AbstractRESTControllerImpl;
import no.niths.application.rest.lists.ListAdapter;
import no.niths.application.rest.lists.signaling.AccessFieldList;
import no.niths.application.rest.signaling.interfaces.AccessFieldController;
import no.niths.common.constants.DomainConstantNames;
import no.niths.common.constants.SecurityConstants;
import no.niths.domain.signaling.AccessField;
import no.niths.services.interfaces.GenericService;
import no.niths.services.signaling.interfaces.AccessFieldService;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
/**
* Controller for AccessField
* has the basic CRUD methods and
* methods too add and remove an accessPoint
*
* For the URL too get Access fields add /accessfields
* after the {@value no.niths.common.constants.MiscConstants#NITHS_BASE_DOMAIN}
*/
@Controller
@RequestMapping(DomainConstantNames.ACCESS_FIELDS)
public class AccessFieldControllerImpl extends
AbstractRESTControllerImpl<AccessField> implements
AccessFieldController {
Logger logger = org.slf4j.LoggerFactory
.getLogger(AccessFieldControllerImpl.class);
@Autowired
private AccessFieldService service;
private AccessFieldList list = new AccessFieldList();
@Override
public GenericService<AccessField> getService() {
return service;
}
@Override
public ListAdapter<AccessField> getList() {
return list;
}
@Override
@ApiEvent(title = "Access field created")
@PreAuthorize(SecurityConstants.ADMIN_AND_SR)
public AccessField create(@RequestBody AccessField domain, HttpServletResponse res) {
return super.create(domain, res);
}
@Override
@ApiEvent(title = "Access field updated")
@PreAuthorize(SecurityConstants.ADMIN_AND_SR)
public void update(@RequestBody AccessField domain) {
super.update(domain);
}
@Override
@ApiEvent(title = "Access field deleted")
@PreAuthorize(SecurityConstants.ADMIN_AND_SR)
public void delete(@PathVariable long id) {
super.delete(id);
}
/**
* {@inheritDoc}
*/
@Override
@ApiEvent(title = "Access point added to access field")
@RequestMapping(value = "{afId}/accesspoint/{apId}", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK, reason = "AcessPoint Added")
@PreAuthorize(SecurityConstants.ADMIN_AND_SR)
public void addAccessPoint(@PathVariable long afId, @PathVariable long apId) {
service.addAccessPoint(afId, apId);
}
/**
* {@inheritDoc}
*/
@Override
@ApiEvent(title = "Access point removed from access field")
@RequestMapping(value = "{afId}/accesspoint", method = RequestMethod.DELETE)
@ResponseStatus(value = HttpStatus.OK, reason = "AcessPoint Removed")
@PreAuthorize(SecurityConstants.ADMIN_AND_SR)
public void removeAccessPoint(@PathVariable long afId) {
service.removeAccessPoint(afId);
}
}