package hycom; import hycom.dao.MapperPublishDao; import hycom.dao.MapperSubmitDao; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.xml.sax.SAXException; /** * Kontroler zapewniający API do obsługi przesyłanych formularzy */ @RestController public class MapperController { private final MapperPublishDao mapperPublishDao; private final MapperSubmitDao mapperSubmitDao; public MapperController(MapperPublishDao mapperPublishDao, MapperSubmitDao mapperSubmitDao) { this.mapperPublishDao = mapperPublishDao; this.mapperSubmitDao = mapperSubmitDao; } /** * Przyjmuje pusty formularz. * @param appName nazwa Aplikacji formularza * @param formName nazwa Formy formularza * @param formXML pusty formularz * @return Kod odpowiedzi. * @throws ParserConfigurationException Wyjątek wyrzucany, w przypadku próby parsowania nie odpowiedniego pliku. * @throws IOException Wyjątek wyrzucany, w przypadku odczytywania z zamkniętego strumienia danych. * @throws SAXException Wyjątek wyrzucany, w przypadku nieudanego budowania pliku dokumentu. */ @RequestMapping(value = "/rest/mapper/publish/{application-name}/{form-name}", method = RequestMethod.PUT) public @ResponseBody ResponseEntity get(@PathVariable("application-name") String appName, @PathVariable("form-name") String formName, @RequestBody String formXML ) throws IOException, SAXException, ParserConfigurationException { mapperPublishDao.parseStringToXML(formXML, appName, formName); return ResponseEntity.noContent().build(); } /** * Przyjmuje uzupełniony formularz. * @param appName nazwa Aplikacji formularza * @param formName nazwa Formy formularza * @param formXML pusty formularz * @param username nazwa Użytkownika wysyłającego formularz * @return Kod odpowiedzi. * @throws ParserConfigurationException Wyjątek wyrzucany, w przypadku próby parsowania nie odpowiedniego pliku. * @throws IOException Wyjątek wyrzucany, w przypadku odczytywania z zamkniętego strumienia danych. * @throws SAXException Wyjątek wyrzucany, w przypadku nieudanego budowania pliku dokumentu. */ @RequestMapping(value = "/rest/mapper/submit/{app}/{form}/{username}", method = RequestMethod.POST) public ResponseEntity getMapper(@PathVariable("app") String appName, @PathVariable("form") String formName, @PathVariable("username") String username, @RequestBody String formXML) throws IOException, SAXException, ParserConfigurationException { mapperSubmitDao.parseXML(formXML, appName, formName, username); return ResponseEntity.noContent().build(); } }