Created
June 27, 2017 08:57
-
-
Save criztovyl/ac5106a2aa885f3c253a3438e3ff3337 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
commit 15375f08900f69ae9c8074c3be57182ea676fb81 | |
Author: joham97 <[email protected]> | |
Date: Mon Jun 26 23:17:39 2017 +0200 | |
Anmeldebogen Funktionalität | |
WICHTIG: Ich musste die Anmeldebogen Depencency mit Travis neu builden. Ich wusste nicht wie ich die Version auf 0.1.1 stelle. Dementsprechend muss einmal die Dependency lokal neu herruntergeladen werden. Sorry ging nicht anders. | |
diff --git a/src/main/java/de/atiw/sportfest/backend/resource/KlasseResource.java b/src/main/java/de/atiw/sportfest/backend/resource/KlasseResource.java | |
index 0c53659..4fd9e3e 100644 | |
-- a/src/main/java/de/atiw/sportfest/backend/resource/KlasseResource.java | |
++ b/src/main/java/de/atiw/sportfest/backend/resource/KlasseResource.java | |
@@ -1,27 +1,42 @@ | |
package de.atiw.sportfest.backend.resource; | |
import java.io.File; | |
import java.io.InputStream; | |
import java.sql.Connection; | |
import java.sql.ResultSet; | |
import java.sql.SQLException; | |
import java.util.ArrayList; | |
import java.util.List; | |
import javax.annotation.Resource; | |
import javax.sql.DataSource; | |
import javax.ws.rs.Consumes; | |
import javax.ws.rs.DELETE; | |
import javax.ws.rs.GET; | |
import javax.ws.rs.POST; | |
import javax.ws.rs.PUT; | |
import javax.ws.rs.Path; | |
import javax.ws.rs.PathParam; | |
import javax.ws.rs.Produces; | |
import javax.ws.rs.core.MediaType; | |
import javax.ws.rs.core.Response; | |
import javax.ws.rs.core.Response.ResponseBuilder; | |
import org.glassfish.jersey.media.multipart.FormDataContentDisposition; | |
import org.glassfish.jersey.media.multipart.FormDataParam; | |
import de.atiw.sportfest.backend.ExceptionResponse; | |
import de.atiw.sportfest.backend.auth.Role; | |
import de.atiw.sportfest.backend.auth.Secured; | |
import de.atiw.sportfest.backend.resource.jaxb.Disziplin; | |
import de.atiw.sportfest.backend.resource.jaxb.Klasse; | |
import de.atiw.sportfest.backend.resource.jaxb.Schueler; | |
import excel.exports.DBToExcelDisziplin; | |
import excel.exports.DBToExcelExporter; | |
import excel.exports.DBToExcelSchueler; | |
import excel.imports.ExcelToDBImporter; | |
import excel.imports.ExcelToDBTeilnahme; | |
@Path("/klasse") | |
public class KlasseResource { | |
@@ -80,6 +95,89 @@ public class KlasseResource { | |
return response; | |
} | |
@GET | |
@Path("/{kid}/anmeldung") | |
@Produces("application/vnd.ms-excel") | |
public Response getAnmeldebogen(@PathParam("kid") String kid){ | |
Response response = null; | |
Connection connection = null; | |
try { | |
connection = db.getConnection(); | |
ArrayList<DBToExcelSchueler> schueler = new ArrayList<>(); | |
ResultSet rs = Schueler.getRSgetAllOfKlasse(connection, kid); | |
while(rs.next()){ | |
schueler.add(new DBToExcelSchueler(rs.getString(2), rs.getString(3), rs.getInt(1))); | |
} | |
rs = Disziplin.getRSgetAll(connection); | |
ArrayList<DBToExcelDisziplin> disziplinen = new ArrayList<>(); | |
while(rs.next()){ | |
disziplinen.add(new DBToExcelDisziplin(rs.getString(2), rs.getInt(1), rs.getBoolean(7), rs.getInt(4), rs.getInt(5))); | |
} | |
String klasse = ""; | |
rs = Klasse.getRSgetOne(connection, kid); | |
if(rs.next()){ | |
klasse = rs.getString(2); | |
} | |
String fileName = klasse+".xlsx"; | |
String path = System.getProperty("user.dir")+"/"+fileName; | |
DBToExcelExporter.export(path, klasse, schueler, disziplinen); | |
File file = new File(path); | |
ResponseBuilder responseBuilder = Response.ok((Object) file).header("Content-Disposition", "attachment; filename="+fileName); | |
response = responseBuilder.build(); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
response = ExceptionResponse.internalServerError(e); | |
}finally { | |
try { | |
connection.close(); | |
} catch (SQLException e) { | |
e.printStackTrace(); | |
} | |
} | |
return response; | |
} | |
@POST | |
@Path("/anmeldung") | |
@Consumes(MediaType.MULTIPART_FORM_DATA) | |
public Response putAnmeldebogen( | |
@FormDataParam("file") InputStream uploadedInputStream, | |
@FormDataParam("file") FormDataContentDisposition fileDetail) { | |
Response response = null; | |
Connection connection = null; | |
try { | |
connection = db.getConnection(); | |
List<ExcelToDBTeilnahme> teilnahmen = ExcelToDBImporter.importTeilnahmen(uploadedInputStream); | |
for(ExcelToDBTeilnahme teilnahme : teilnahmen){ | |
Klasse.getRSputAnmeldung(connection, teilnahme.getSchuelerID(), teilnahme.getDisziplinID()); | |
} | |
response = Response.ok().build(); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
response = ExceptionResponse.internalServerError(e); | |
}finally { | |
try { | |
connection.close(); | |
} catch (SQLException e) { | |
e.printStackTrace(); | |
} | |
} | |
return response; | |
} | |
@PUT | |
@Secured({ Role.admin }) | |
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) | |
diff --git a/src/main/java/de/atiw/sportfest/backend/resource/jaxb/Klasse.java b/src/main/java/de/atiw/sportfest/backend/resource/jaxb/Klasse.java | |
index 11e7b0b..5168a49 100644 | |
-- a/src/main/java/de/atiw/sportfest/backend/resource/jaxb/Klasse.java | |
++ b/src/main/java/de/atiw/sportfest/backend/resource/jaxb/Klasse.java | |
@@ -50,6 +50,13 @@ public class Klasse { | |
} | |
} | |
public static void getRSputAnmeldung(Connection conn, int sid, int did) throws SQLException { | |
PreparedStatement ps = conn.prepareStatement("Call AnmeldungAnlegen(?, ?);"); | |
ps.setInt(1, sid); | |
ps.setInt(2, did); | |
ps.execute(); | |
} | |
public static void getRSdelete(Connection conn, String kid) throws SQLException{ | |
PreparedStatement ps = conn.prepareStatement("Call KlasseLoeschen(?)"); | |
ps.setString(1,kid); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment