/** @author damien */
@Path("attributionsecteurborneacces")
public class AttributionSecteurBorneAccesFacadeREST {

  private AttributionSecteurBorneAccesService attributionSecteurBorneAccesSrv =
      MetierFactory.getAttributionSecteurBorneAccesService();
  private BorneAccesService borneAccesSrv = MetierFactory.getBorneAccesService();
  private SecteurService secteurSrv = MetierFactory.getSecteurService();

  @POST
  @Consumes({"application/xml", "application/json"})
  public void create(AttributionSecteurBorneAcces entity) {
    this.attributionSecteurBorneAccesSrv.add(entity);
  }

  @PUT
  @Consumes({"application/xml", "application/json"})
  public void edit(AttributionSecteurBorneAcces entity) {
    this.attributionSecteurBorneAccesSrv.update(entity);
  }

  @PUT
  @Path("attribuer/{secteur}/{borne}")
  public void attribuer(@PathParam("secteur") Long idSecteur, @PathParam("borne") Long idBorne) {
    this.attributionSecteurBorneAccesSrv.attribuerBorneAcces(
        this.secteurSrv.getById(idSecteur), this.borneAccesSrv.getById(idBorne));
  }

  @PUT
  @Path("desattribuer/{secteur}/{borne}")
  public void desattribuer(@PathParam("secteur") Long idSecteur, @PathParam("borne") Long idBorne) {
    this.attributionSecteurBorneAccesSrv.desattribuerBorneAcces(
        this.secteurSrv.getById(idSecteur), this.borneAccesSrv.getById(idBorne));
  }

  @DELETE
  @Path("{id}")
  public void remove(@PathParam("id") Long id) {
    AttributionSecteurBorneAcces a = new AttributionSecteurBorneAcces();
    a.setId(id);
    this.attributionSecteurBorneAccesSrv.add(a);
  }

  @GET
  @Path("{idSecteur}")
  @Produces({"application/xml", "application/json"})
  public AttributionSecteurBorneAcces find(@PathParam("idSecteur") Long idSecteur) {
    return this.attributionSecteurBorneAccesSrv.getBySecteur(this.secteurSrv.getById(idSecteur));
  }

  @GET
  @Produces({"application/xml", "application/json"})
  public List<AttributionSecteurBorneAcces> findAll() {
    return this.attributionSecteurBorneAccesSrv.getAll();
  }

  //    @GET
  //    @Path("{from}/{nb}")
  //    @Produces({"application/xml", "application/json"})
  //    public List<AttributionSecteurBorneAcces> findRange(@PathParam("from") Integer from,
  // @PathParam("nb") Integer nb) {
  //        return this.attributionSecteurBorneAccesSrv.ge;
  //    }
  @GET
  @Path("count")
  @Produces("text/plain")
  public String countREST() {
    return String.valueOf(this.attributionSecteurBorneAccesSrv.count());
  }
}