From fe20c86c35f6da950e20c022d114cf675e0d12e8 Mon Sep 17 00:00:00 2001 From: vysitor Date: Sun, 2 Mar 2025 17:12:45 +0100 Subject: [PATCH] =?UTF-8?q?Parlamentarier=20sind=20auf=2020.=20Legislaturp?= =?UTF-8?q?eriode=20beschr=C3=A4nkt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domainimpl/mdb/Membership_Mongo_Impl.java | 1 + .../rest/ParlamentarierController.java | 27 +++++++++++++++++++ .../project/gruppe_05_1/rest/RESTHandler.java | 1 + .../project/gruppe_05_1/util/PPRUtils.java | 25 ++++++++++++----- 4 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Membership_Mongo_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Membership_Mongo_Impl.java index 8c6306f..494922e 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Membership_Mongo_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Membership_Mongo_Impl.java @@ -23,6 +23,7 @@ public class Membership_Mongo_Impl extends Membership implements MongoOperations fields.put("role", entity.getRole()); fields.put("label", entity.getLabel()); fields.put("member", entity.getMember()); // TODO: wahrscheinlich nicht nötig + fields.put("wp", entity.getWp()); Document doc = MongoDBHandler.createDocument(false, fields); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/ParlamentarierController.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/ParlamentarierController.java index 9760e05..aaed14d 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/ParlamentarierController.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/ParlamentarierController.java @@ -91,4 +91,31 @@ public class ParlamentarierController { attributes.put("speechesCount", pd.getReden() == null ? 0 : pd.getReden().size()); ctx.render("parlamentarierDetails.ftl", attributes); } + + + /** + * Lösche alle Abgeordnete. + * @param ctx JavaLin-Context + */ + + @OpenApi( + summary = "Lösche alle Parlamentarier", + description = "Lösche alle Parlamentarier aus der Datenbank", + operationId = "deleteAllParlamentarier", + path = "/deleteParlamentarier", + methods = HttpMethod.DELETE, + tags = {"Parlamentarier"}, + responses = { + @OpenApiResponse(status = "204", content = {@OpenApiContent(from = Parlamentarier[].class)}) + }) + public static void deleteAllParlamentarier(Context ctx) { + + MongoPprUtils.truncateSpeakerCollection(); + List parlamentarier = MongoPprUtils.getAllParlamentarier(""); + + Map attributes = new HashMap<>(); + attributes.put("parlamentarier", parlamentarier); + attributes.put("filter", "filter"); + ctx.render("parlamentarier.ftl", attributes); + } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandler.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandler.java index 2590ba1..1f5561c 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandler.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandler.java @@ -55,6 +55,7 @@ public class RESTHandler { // Parlamentarier app.get("/", ParlamentarierController::getAllParlamentarier); app.get("/portfolio/{id}", ParlamentarierController::getParlamentarierDetails); + app.delete("/deleteParlamentarier", ParlamentarierController::deleteAllParlamentarier); /* - TODO // Fotos diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PPRUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PPRUtils.java index 9f980d8..128ae21 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PPRUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PPRUtils.java @@ -10,9 +10,11 @@ import org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier; import org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben; import org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb; import org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbDocument; +import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership; import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker; import org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils; import org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory; +import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.xml.sax.InputSource; @@ -116,17 +118,17 @@ public abstract class PPRUtils { Element rootElement = mdbRoot.getDocumentElement(); // TODO: optional! persist the metadata of the 1723434311 element - MdbDocument doc = xmlFactory.createMdbDocument(rootElement); - List mdbList = doc.getMdbs(); - List mdbNodes = XmlUtils.getChildrenByName(rootElement, "MDB"); + + MongoCollection speakerCollection = MongoPprUtils.getSpeakerCollection(); for (Node mdbNode : mdbNodes) { Speaker speaker = xmlFactory.createSpeaker(mdbNode); - System.out.println("Speaker " + speaker.getId() + " (" + speaker.getFirstName() + " " + speaker.getName() + ", " + speaker.getParty() + ")"); + // System.out.println("Speaker " + speaker.getId() + " (" + speaker.getFirstName() + " " + speaker.getName() + ", " + speaker.getParty() + ")"); - org.bson.Document speakerDoc = mongoFactory.createSpeaker(speaker); - - MongoDBHandler.insertDocument(MongoPprUtils.getSpeakerCollection(), speakerDoc); + if (mdbActiveInWp(speaker, 20)) { + org.bson.Document speakerDoc = mongoFactory.createSpeaker(speaker); + MongoDBHandler.insertDocument(speakerCollection, speakerDoc); + } } // TODO: persist each speaker! @@ -134,6 +136,15 @@ public abstract class PPRUtils { } + // TODO - HERE + private static boolean mdbActiveInWp(Speaker speaker, Integer legislaturPeriode) { + List wps = speaker.getMemberships().stream() + .map(Membership::getWp) + .collect(Collectors.toList()); + + return wps.contains(legislaturPeriode); + } + /** * Liest die MDB aus einer Zip-Datei der bundestag,de-Seite * @param zipUrl