Parlamentarier sind auf 20. Legislaturperiode beschränkt

This commit is contained in:
vysitor 2025-03-02 17:12:45 +01:00
parent 1e6c3954ce
commit fe20c86c35
4 changed files with 47 additions and 7 deletions

View file

@ -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);

View file

@ -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> parlamentarier = MongoPprUtils.getAllParlamentarier("");
Map<String, Object> attributes = new HashMap<>();
attributes.put("parlamentarier", parlamentarier);
attributes.put("filter", "filter");
ctx.render("parlamentarier.ftl", attributes);
}
}

View file

@ -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

View file

@ -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 <VERSION>1723434311</VERSION> element
MdbDocument doc = xmlFactory.createMdbDocument(rootElement);
List<Mdb> mdbList = doc.getMdbs();
List<Node> mdbNodes = XmlUtils.getChildrenByName(rootElement, "MDB");
MongoCollection<org.bson.Document> 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<Integer> 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