package cc.nfscan.server.controller.be; import org.apache.log4j.Logger; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import java.text.SimpleDateFormat; import java.util.Date; import static cc.nfscan.server.utils.Constants.DATE_FORMAT; /** * Base controller for backend objects using Spring MVC. * This class provides common methods to allow developers to expose through JSON. * * @author Paulo Miguel Almeida <a href="http://github.com/PauloMigAlmeida">@PauloMigAlmeida</a> */ public abstract class AbstractController { /** * Default Logger */ protected Logger logger = Logger.getLogger(getClass().getName()); /** * Content Types */ protected static final String APPLICATION_JSON = "application/json; charset=utf-8"; /** * Initiates the data binding from web request parameters to JavaBeans objects * * @param webDataBinder - a Web Data Binder instance */ @InitBinder public void initBinder(WebDataBinder webDataBinder) { SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); dateFormat.setLenient(true); webDataBinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); } /** * Creates a base HttpHeaders given the content type such as JSON, Excel and so on * * @param contentType a string containing the mime type that will be send through HTTP response * @return a HTTPHeaders object */ protected HttpHeaders createBasicHttpHeaderResponse(String contentType) { HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.add("Content-Type", contentType); return responseHeaders; } }