diff --git a/pom.xml b/pom.xml index 64e8a2df6b66dfc974ca2c756e54129e5f6ccfbc..ef3e925b8c9631552d51949fff50a0ebf56ee578 100644 --- a/pom.xml +++ b/pom.xml @@ -1,16 +1,17 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - + <modelVersion>4.0.0</modelVersion> - + <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.0</version> - <relativePath/> <!-- lookup parent from repository --> + <relativePath /> <!-- lookup parent from repository --> </parent> - + <groupId>de.itvsh.ozg</groupId> <artifactId>intelliform-adapter</artifactId> <version>0.0.1-SNAPSHOT</version> @@ -32,6 +33,20 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> + + <!-- Dev --> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-devtools</artifactId> + <scope>runtime</scope> + </dependency> + + + </dependencies> <build> diff --git a/src/main/java/com/example/demo/IntelliformAdapterApplication.java b/src/main/java/de/itvsh/ozg/adapter/intelliform/Application.java similarity index 58% rename from src/main/java/com/example/demo/IntelliformAdapterApplication.java rename to src/main/java/de/itvsh/ozg/adapter/intelliform/Application.java index 07e5e34d98ef8ef319d3df46483975d568c230ad..b0c3056cb4dd0b0c62b9c7f0e77eca07e3d1589b 100644 --- a/src/main/java/com/example/demo/IntelliformAdapterApplication.java +++ b/src/main/java/de/itvsh/ozg/adapter/intelliform/Application.java @@ -1,13 +1,13 @@ -package com.example.demo; +package de.itvsh.ozg.adapter.intelliform; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class IntelliformAdapterApplication { +public class Application { public static void main(String[] args) { - SpringApplication.run(IntelliformAdapterApplication.class, args); + SpringApplication.run(Application.class, args); } } diff --git a/src/main/java/de/itvsh/ozg/adapter/intelliform/FileUploadController.java b/src/main/java/de/itvsh/ozg/adapter/intelliform/FileUploadController.java new file mode 100644 index 0000000000000000000000000000000000000000..a581bcb544028597768fcc4a39ea69d0de45e28a --- /dev/null +++ b/src/main/java/de/itvsh/ozg/adapter/intelliform/FileUploadController.java @@ -0,0 +1,25 @@ +package de.itvsh.ozg.adapter.intelliform; + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import lombok.extern.java.Log; + +@RestController +@RequestMapping("/api/adapter/intelliform/upload") +@Log +public class FileUploadController { + + @PostMapping + public FileUploadResponse handleFileUpload( // + @RequestParam("xmlFormData") MultipartFile xmlFormData, // + @RequestParam("attachments") MultipartFile[] files) { + + log.info("Received files: " + files.length); + + return FileUploadResponse.builder().message("Success").build(); + } +} diff --git a/src/main/java/de/itvsh/ozg/adapter/intelliform/FileUploadResponse.java b/src/main/java/de/itvsh/ozg/adapter/intelliform/FileUploadResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..a39a93cbbbad39210f56e91e1047070983f84e9a --- /dev/null +++ b/src/main/java/de/itvsh/ozg/adapter/intelliform/FileUploadResponse.java @@ -0,0 +1,13 @@ +package de.itvsh.ozg.adapter.intelliform; + +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +@Builder +public class FileUploadResponse { + + String message; +} diff --git a/src/main/java/de/itvsh/ozg/adapter/intelliform/SystemStatController.java b/src/main/java/de/itvsh/ozg/adapter/intelliform/SystemStatController.java new file mode 100644 index 0000000000000000000000000000000000000000..ce07d6ba1d2492e7f86f344bd08a2dd620ed4f8e --- /dev/null +++ b/src/main/java/de/itvsh/ozg/adapter/intelliform/SystemStatController.java @@ -0,0 +1,15 @@ +package de.itvsh.ozg.adapter.intelliform; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/adapter/intelliform/sysstat") +public class SystemStatController { + + @GetMapping + public String getStatus() { + return "OK"; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b137891791fe96927ad78e64b0aad7bded08bdc..b30e8bf56881891c9adce5355effd5114a3412f0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,2 @@ +server.port=9292 diff --git a/src/test/java/com/example/demo/IntelliformAdapterApplicationTests.java b/src/test/java/com/example/demo/IntelliformAdapterApplicationTests.java deleted file mode 100644 index a82a4b2ab974df64e85259688a2e0e7266b4e2a4..0000000000000000000000000000000000000000 --- a/src/test/java/com/example/demo/IntelliformAdapterApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.example.demo; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class IntelliformAdapterApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/src/test/java/de/itvsh/ozg/adapter/intelliform/FileUploadControllerITCase.java b/src/test/java/de/itvsh/ozg/adapter/intelliform/FileUploadControllerITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..81631ec4ee08101b6a850566f6aefc5680fd0095 --- /dev/null +++ b/src/test/java/de/itvsh/ozg/adapter/intelliform/FileUploadControllerITCase.java @@ -0,0 +1,59 @@ +package de.itvsh.ozg.adapter.intelliform; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import java.io.IOException; +import java.io.InputStream; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.MockMvc; + +@SpringBootTest +@AutoConfigureMockMvc +class FileUploadControllerITCase { + + @Autowired + MockMvc mvc; + + @Test + void contextLoads() throws IOException, Exception { + + mvc.perform(multipart("/api/adapter/intelliform/upload") // + .file(buildOdtTestFile()) // + .file(buildPdfTestFile()) // + .file(buildXmlTestFile()) // + ) // + .andExpect(status().isOk()) // + .andReturn(); + } + + private MockMultipartFile buildPdfTestFile() throws IOException { + + final InputStream inputStream = Thread.currentThread().getContextClassLoader() + .getResourceAsStream("fileupload/testpdf1.pdf"); + + return new MockMultipartFile("attachments", "testpdf1.pdf", "application/pdf", inputStream); + } + + private MockMultipartFile buildOdtTestFile() throws IOException { + + final InputStream inputStream = Thread.currentThread().getContextClassLoader() + .getResourceAsStream("fileupload/testpdf1.pdf"); + + return new MockMultipartFile("attachments", "testodt1.pdf", "application/vnd.oasis.opendocument.text", + inputStream); + } + + private MockMultipartFile buildXmlTestFile() throws IOException { + + final InputStream inputStream = Thread.currentThread().getContextClassLoader() + .getResourceAsStream("fileupload/XML-Daten-1.pdf"); + + return new MockMultipartFile("xmlFormData", "XML-Daten-1.pdf", "application/xml", inputStream); + } +} diff --git a/src/test/java/de/itvsh/ozg/adapter/intelliform/SystemStatControllerITCase.java b/src/test/java/de/itvsh/ozg/adapter/intelliform/SystemStatControllerITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..8631d29feca4f50c68c202afb2a736375b36cc78 --- /dev/null +++ b/src/test/java/de/itvsh/ozg/adapter/intelliform/SystemStatControllerITCase.java @@ -0,0 +1,24 @@ +package de.itvsh.ozg.adapter.intelliform; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.test.web.servlet.MockMvc; + +@WebMvcTest +class SystemStatControllerITCase { + + @Autowired + MockMvc mvc; + + @Test + void test() throws Exception { + mvc.perform(get("/api/adapter/intelliform/sysstat")) // + .andExpect(status().isOk()) // + .andExpect(content().string("OK")); + } +} diff --git a/src/test/resources/fileupload/XML-Daten-1.xml b/src/test/resources/fileupload/XML-Daten-1.xml new file mode 100644 index 0000000000000000000000000000000000000000..df8e960a0b2cecbd482b0a445d84a67e340a87e3 --- /dev/null +++ b/src/test/resources/fileupload/XML-Daten-1.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:id="20201118365670866101" t:timestamp="2020-11-18T09:09:27.627Z" t:sender="afm.schleswig-holstein.de" t:form="Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)" t:form-id="waffen/kleinerWaffenschein" t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" t:client="Schleswig-Holstein" t:client-id="land"><kontaktsystemtypid>233034600</kontaktsystemtypid><kontaktsystemtypidln>233034601</kontaktsystemtypidln><AnliegenID>8966671</AnliegenID><antragsteller><pers_anrede>Herr$03</pers_anrede><pers_nachname>Testermann</pers_nachname><pers_vorname>Max</pers_vorname><pers_geburtsname>Max Testermann</pers_geburtsname><pers_geburtsdatum>1995-03-21</pers_geburtsdatum><pers_geburtsort>Flensburg</pers_geburtsort><pers_geburtsland>deutsch$Deutschland$000</pers_geburtsland><pers_staatsangehoerigkeit>deutsch$Deutschland$000</pers_staatsangehoerigkeit><b_anrede>Herr</b_anrede><b_anrede_schluesselnr>03</b_anrede_schluesselnr><b_geburtsland>Deutschland</b_geburtsland><b_geburtsland_signatur>000</b_geburtsland_signatur><b_staatsangehoerigkeit>deutsch</b_staatsangehoerigkeit><b_staatsangehoerigkeit_signatur>000</b_staatsangehoerigkeit_signatur><sh_strasse>Königsweg</sh_strasse><sh_hausnummer>74</sh_hausnummer><sh_plz>24837</sh_plz><ort_auswahl>9007314$01059075</ort_auswahl><ort>Schleswig</ort><GebietID>9007314</GebietID><GebietBEZEICHNUNG>Schleswig</GebietBEZEICHNUNG><GebietGNR94_GNR>01059075</GebietGNR94_GNR><staat>000</staat><iso3166numerisch>276</iso3166numerisch><kont_telefonnummer>+ 49 4621 9654</kont_telefonnummer><kont_mobilnummer>+49 123</kont_mobilnummer><kont_telefaxnummer>+ 49 4621 9654</kont_telefaxnummer><kont_email>max.testermann@gmx.de</kont_email><kont_demail>max.testermann@gmx.de-mail.de</kont_demail><persoenlicheEignung><maengelvorhanden>false</maengelvorhanden><ermittlungsverfahren>false</ermittlungsverfahren><MitgliedschaftInVerboternerVereinigung>false</MitgliedschaftInVerboternerVereinigung></persoenlicheEignung></antragsteller><GebietID>9007314</GebietID><zustaendigestelle><OrganisationseinheitenAuswahl>9535669</OrganisationseinheitenAuswahl><OrganisationseinheitenID>9535669</OrganisationseinheitenID><OrganisationseinheitenBEZEICHNUNG>Kreis Schleswig-Flensburg/Kreisverwaltung - Allgemeine Ordnungsangelegenheiten</OrganisationseinheitenBEZEICHNUNG><strasse>Flensburger Straße</strasse><hausnummer>7</hausnummer><postleitzahl>24837</postleitzahl><ortID>9007314</ortID><ort>Schleswig</ort><telefonnummer>04621 87-0</telefonnummer><telefaxnummer>04621 87-366</telefaxnummer><emailadresse/><demailadresse/><kontaktsystem_kennung>afmsh:9535669_kleinerWaffenschein</kontaktsystem_kennung><kontaktsystem_kennungzusatz/><AnliegenBEZEICHNUNG>Waffenschein / Kleiner Waffenschein</AnliegenBEZEICHNUNG><leikaKEYLIST>99089008000000;99089008001000</leikaKEYLIST><auswahl_zustellung>abholen</auswahl_zustellung><b_zustellung>Ich hole den Kleinen Waffenschein selbst ab.</b_zustellung></zustaendigestelle><empfangendestelle><OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl><OrganisationseinheitenID>9068873</OrganisationseinheitenID><OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG><strasse>Reventlouallee</strasse><hausnummer>6</hausnummer><postleitzahl>24105</postleitzahl><ortID>9006402</ortID><ort>Kiel</ort><telefonnummer>+49 431 988-8650</telefonnummer><telefaxnummer>+49 431 988-6161111</telefaxnummer><emailadresse>info@ea-sh.de</emailadresse><demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse><kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung><kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz></empfangendestelle><erklaerungen><check_gebuehren>true</check_gebuehren><check_richtigkeit>true</check_richtigkeit><check_datenschutz>true</check_datenschutz><check_missbrauch>true</check_missbrauch><b_gebuehren_beschriftung>* Mir ist bekannt, dass durch das Einreichen des elektronischen Antrages von der zuständigen Stelle Gebühren erhoben werden können.</b_gebuehren_beschriftung><b_gebuehren_intro>Gebühr bei Ausstellung des kleinen Waffenscheins: 60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro. +Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister, eine Auskunft aus dem zentralen staatsanwaltschaftlichen Verfahrensregister, eine Stellungnahme der örtlichen Polizeidienststelle und Ihrer Wohnsitzgemeinde ein.</b_gebuehren_intro><b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit><b_datenschutz>* Ich erkläre mich damit einverstanden, dass der Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner Aufgaben meine Daten unter Einhaltung der Bestimmungen der Datenschutz-Grundverordnung (DS-GVO) und des Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich mit der rechtskonformen Datenverarbeitung und Speicherung durch die zuständige Stelle einverstanden. Mir ist bekannt, dass ich die Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen Daten und die mir nach den datenschutzrechtlichen Regelungen zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung Kenntnis erlangt.</b_datenschutz><b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes aufgezeichnet und verwendet werden können.</b_missbrauch><policyurl>http://wafmxpa002.dpaor.de/sh/datenschutz/datenschutzerklaerungEA_de.doc</policyurl></erklaerungen><logourl>http://wafmxpa002.dpaor.de/sh/logos/kopf_9068873.doc</logourl><fm><ansprechpartner><firmenname/><anrede>Herr</anrede><vorname>Max</vorname><familienname>Testermann</familienname><anschrift><strasse>Königsweg</strasse><hausnummer>74</hausnummer><postfach/><postleitzahl>24837</postleitzahl><ort>Schleswig</ort><ortsteil/><zusatz/><staat>Deutschland</staat></anschrift><kontakt><telefonnummer>+ 49 4621 9654</telefonnummer><mobilnummer>+49 123</mobilnummer><telefaxnummer>+ 49 4621 9654</telefaxnummer><emailadresse>max.testermann@gmx.de</emailadresse><demailadresse>max.testermann@gmx.de-mail.de</demailadresse></kontakt></ansprechpartner><verwaltungsleistungen><verwaltungsleistung><ausgewaehlte_zustaendigestelle><OrganisationseinheitenID>9535669</OrganisationseinheitenID><OrganisationseinheitenBEZEICHNUNG>Kreis Schleswig-Flensburg/Kreisverwaltung - Allgemeine Ordnungsangelegenheiten</OrganisationseinheitenBEZEICHNUNG></ausgewaehlte_zustaendigestelle><GebietID>9007314</GebietID><GebietBEZEICHNUNG>Schleswig</GebietBEZEICHNUNG><AnliegenID>8966671</AnliegenID><AnliegenBEZEICHNUNG>Waffenschein / Kleiner Waffenschein</AnliegenBEZEICHNUNG><leikaKEYLIST>99089008000000;99089008001000</leikaKEYLIST><leikaBEZEICHNUNG/></verwaltungsleistung></verwaltungsleistungen></fm></myForm> \ No newline at end of file