Skip to content

Instantly share code, notes, and snippets.

@criztovyl
Created June 27, 2017 08:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save criztovyl/ac5106a2aa885f3c253a3438e3ff3337 to your computer and use it in GitHub Desktop.
Save criztovyl/ac5106a2aa885f3c253a3438e3ff3337 to your computer and use it in GitHub Desktop.
commit 15375f08900f69ae9c8074c3be57182ea676fb81
Author: joham97 <joham97@web.de>
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