package pl.piotrsukiennik.whowhen.web.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import pl.piotrsukiennik.whowhen.backend.api.outer.*; import pl.piotrsukiennik.whowhen.shared.util.HttpUtil; import pl.piotrsukiennik.whowhen.shared.util.progress.Progress; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; @Controller() public class RequestController { @Resource( name = "backendService" ) private IBackendService backendService; @RequestMapping( value = "{requestId}/request", method = RequestMethod.GET ) public String indexGet( @PathVariable( value = "requestId" ) String requestIdentifier, Map<String, String> model ) { if ( getProgress( requestIdentifier ) != null ) { model.put( "requestIdentifier", "" + requestIdentifier ); return "results"; } else { return "redirect:/"; } } @RequestMapping( value = "{requestId}/progress", method = RequestMethod.GET ) public @ResponseBody Progress getProgress( @PathVariable( value = "requestId" ) String requestIdentifier ) { GetProgressRequest getProgressRequest = new GetProgressRequest( requestIdentifier ); GetProgressResponse getProgressResponse = backendService.getProgress( getProgressRequest ); Progress progress = getProgressResponse.getProgress(); return getProgressResponse.getProgress(); } @RequestMapping( value = "{requestId}/timeline", method = RequestMethod.GET ) public @ResponseBody List<Map<String, List<double[]>>> getTimeline( @PathVariable( value = "requestId" ) String requestIdentifier ) { GetTimelineRequest getProgressRequest = new GetTimelineRequest( requestIdentifier ); GetTimelineResponse getProgressResponse = backendService.handle( getProgressRequest ); return getProgressResponse.getLevelledLabelledIntervals(); } @ModelAttribute( "domainPath" ) public String getDomainPath( HttpServletRequest request ) { return HttpUtil.getDomainPath( request ); } @ModelAttribute( "applicationPath" ) public String getApplicationPath( HttpServletRequest request ) { return HttpUtil.getApplicationContextPath( request ); } }