package pl.edu.icm.saos.api.services.links; import static pl.edu.icm.saos.api.ApiConstants.SELF; import static pl.edu.icm.saos.api.services.links.ControllerProxyLinkBuilder.linkTo; import org.springframework.hateoas.Link; import org.springframework.stereotype.Service; import pl.edu.icm.saos.api.single.ccdivision.CcDivisionController; import pl.edu.icm.saos.api.single.court.CommonCourtController; import pl.edu.icm.saos.api.single.judgment.JudgmentController; import pl.edu.icm.saos.api.single.scchamber.ScChamberController; import pl.edu.icm.saos.api.single.scdivision.ScDivisionController; /** * Provides functionality for links creation for linked data. * @author pavtel */ @Service("linksBuilder") public class LinksBuilder { //------------------------ LOGIC -------------------------- public String urlToJudgment(long judgmentId){ return urlToElement(JudgmentController.class, judgmentId); } public Link linkToJudgment(long judgmentId){ return linkFor(JudgmentController.class, judgmentId); } public String urlToCcDivision(long divisionId){ return urlToElement(CcDivisionController.class, divisionId); } public Link linkToCcDivision(long divisionId) { return linkFor(CcDivisionController.class, divisionId); } public String urlToScDivision(long divisionId){ return urlToElement(ScDivisionController.class, divisionId); } public Link linkToScDivision(long divisionId){ return linkFor(ScDivisionController.class, divisionId); } public Link linkToScDivision(long divisionId, String relName){ return linkFor(ScDivisionController.class, divisionId, relName); } public String urlToScChamber(long chamberId){ return urlToElement(ScChamberController.class, chamberId); } public Link linkToScChamber(long chamberId){ return linkFor(ScChamberController.class, chamberId); } public Link linkToScChamber(long chamberId, String relName){ return linkFor(ScChamberController.class, chamberId, relName); } public String urlToCommonCourt(long courtId) { return urlToElement(CommonCourtController.class, courtId); } public Link linkToCommonCourt(long courtId){ return linkFor(CommonCourtController.class, courtId); } public Link linkToCommonCourt(long courtId, String relName){ return linkFor(CommonCourtController.class, courtId, relName); } private String urlToElement(Class<?> controller, long elementId){ return linkFor(controller, elementId).getHref(); } private Link linkFor(Class<?> controller, long elementId){ return linkFor(controller, elementId, SELF); } private Link linkFor(Class<?> controller , long id, String relName){ return linkFor(controller, String.valueOf(id), relName); } private Link linkFor(Class<?> controller, String elementId, String relName){ return linkTo(controller, elementId).withRel(relName); } }