diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoOperations.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoOperations.java index e6d2f7a..4fd3dc8 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoOperations.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoOperations.java @@ -1,7 +1,6 @@ package org.texttechnologylab.project.gruppe_05_1.database; import org.bson.Document; -import org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory; import java.util.List; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoPprUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoPprUtils.java index 38ca84e..aec92aa 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoPprUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoPprUtils.java @@ -2,27 +2,21 @@ package org.texttechnologylab.project.gruppe_05_1.database; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; -import com.mongodb.client.model.Indexes; +import lombok.extern.slf4j.Slf4j; import org.bson.Document; import org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier; import org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails; import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership; -import org.texttechnologylab.project.gruppe_05_1.domain.speech.Speech; -import org.texttechnologylab.project.gruppe_05_1.util.PPRUtils; import java.time.LocalDate; -import java.time.LocalDateTime; import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; /** * Diese Klasse beinhaltet Mongo-Utilities, welche spezifisch für die PPR-Datenstrukturen sind. - * * Mongo-Utilities genereller Natur stehen in der Klasse MongoDBHandler. */ +@Slf4j public class MongoPprUtils { /* @@ -34,29 +28,29 @@ public class MongoPprUtils { public static final String PICTURES_COLLECTION_NAME = "pictures"; public static final String COMMENT_COLLECTION_NAME = "comment"; - private static MongoCollection speakerCollecion = null; - private static MongoCollection speechCollecion = null; - private static MongoCollection picturesCollecion = null; - private static MongoCollection commentCollecion = null; + private static MongoCollection speakerCollection = null; + private static MongoCollection speechCollection = null; + private static MongoCollection picturesCollection = null; + private static MongoCollection commentCollection = null; public static MongoCollection getSpeakerCollection() { - if (speakerCollecion == null) speakerCollecion = MongoDBHandler.getMongoDatabase().getCollection(SPEAKER_COLLECTION_NAME); - return speakerCollecion; + if (speakerCollection == null) speakerCollection = MongoDBHandler.getMongoDatabase().getCollection(SPEAKER_COLLECTION_NAME); + return speakerCollection; } public static MongoCollection getSpeechCollection() { - if (speechCollecion == null) speechCollecion = MongoDBHandler.getMongoDatabase().getCollection(SPEECH_COLLECTION_NAME); - return speechCollecion; + if (speechCollection == null) speechCollection = MongoDBHandler.getMongoDatabase().getCollection(SPEECH_COLLECTION_NAME); + return speechCollection; } public static MongoCollection getPicturesCollection() { - if (picturesCollecion == null) picturesCollecion = MongoDBHandler.getMongoDatabase().getCollection(PICTURES_COLLECTION_NAME); - return picturesCollecion; + if (picturesCollection == null) picturesCollection = MongoDBHandler.getMongoDatabase().getCollection(PICTURES_COLLECTION_NAME); + return picturesCollection; } public static MongoCollection getCommentCollection() { - if (commentCollecion == null) commentCollecion = MongoDBHandler.getMongoDatabase().getCollection(COMMENT_COLLECTION_NAME); - return commentCollecion; + if (commentCollection == null) commentCollection = MongoDBHandler.getMongoDatabase().getCollection(COMMENT_COLLECTION_NAME); + return commentCollection; } /** @@ -143,7 +137,7 @@ public class MongoPprUtils { plist.add(p); } } catch (Throwable t) { - System.err.println(t); + System.err.print(t); } finally { cursor.close(); } @@ -164,11 +158,7 @@ public class MongoPprUtils { p.setNachname((String) doc.get("name")); p.setVorname((String) doc.get("firstName")); String partei = (String) doc.get("party"); - if (partei == null) { - p.setPartei("(parteilos)"); - } else { - p.setPartei(partei); - } + p.setPartei(Objects.requireNonNullElse(partei, "(parteilos)")); return p; } @@ -186,8 +176,7 @@ public class MongoPprUtils { */ public static ParlamentarierDetails getParlamentarierDetailsByID(String id) { Document doc = MongoDBHandler.findFirstDocumentInCollection(getSpeakerCollection(), "_id", id); - ParlamentarierDetails p = readParlamentarierDetailsFromSpeaker(doc); - return p; + return readParlamentarierDetailsFromSpeaker(doc); } @@ -198,8 +187,7 @@ public class MongoPprUtils { */ public static ParlamentarierDetails getParlamentarierDetailsByID(Integer id) { Document doc = MongoDBHandler.findFirstDocumentInCollection(getSpeakerCollection(), "_id", id.toString()); - ParlamentarierDetails p = readParlamentarierDetailsFromSpeaker(doc); - return p; + return readParlamentarierDetailsFromSpeaker(doc); } /** @@ -215,16 +203,12 @@ public class MongoPprUtils { p.setNachname((String) doc.get("name")); p.setVorname((String) doc.get("firstName")); String partei = (String) doc.get("party"); - if (partei == null) { - p.setPartei("(parteilos)"); - } else { - p.setPartei(partei); - } + p.setPartei(Objects.requireNonNullElse(partei, "(parteilos)")); p.setTitle((String) doc.get("title")); p.setGeburtsort((String) doc.get("geburtsort")); p.setGeschlecht((String) doc.get("geschlecht")); p.setBeruf((String) doc.get("beruf")); - p.setAkademischertitel((String) doc.get("akademischertitel")); + p.setAkademischerTitel((String) doc.get("akademischertitel")); p.setFamilienstand((String) doc.get("familienstand")); p.setReligion((String) doc.get("religion")); p.setVita((String) doc.get("vita")); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/SpeechIndex.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/SpeechIndex.java index 1696c86..7d7c378 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/SpeechIndex.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/SpeechIndex.java @@ -1,6 +1,5 @@ package org.texttechnologylab.project.gruppe_05_1.database; -import lombok.Getter; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.*; import java.util.List; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/SpeechIndexFactoryImpl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/SpeechIndexFactoryImpl.java index 0bf0208..5f9c6de 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/SpeechIndexFactoryImpl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/SpeechIndexFactoryImpl.java @@ -3,10 +3,7 @@ package org.texttechnologylab.project.gruppe_05_1.database; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.*; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser; -import org.xml.sax.SAXException; -import javax.xml.parsers.ParserConfigurationException; -import java.io.IOException; import java.util.List; import java.util.stream.Collectors; @@ -16,18 +13,15 @@ public class SpeechIndexFactoryImpl implements SpeechIndexFactory { private List agendaItems; private List speeches; private List members; - private List fractions; - private Boolean parseLegislativePeriods = true; @Override public SpeechIndexFactoryImpl parseLegislativePeriods(Boolean parseLegislativePeriods) { - this.parseLegislativePeriods = parseLegislativePeriods; try {this.speechParser.setParseLegislativePeriods(parseLegislativePeriods);} catch (NullPointerException ignored) {} return this; } - public SpeechIndexFactoryImpl builder() throws ParserConfigurationException { + public SpeechIndexFactoryImpl builder() { this.speechParser = new SpeechParser(); return this; } @@ -41,7 +35,7 @@ public class SpeechIndexFactoryImpl implements SpeechIndexFactory { @Override - public SpeechIndex build() throws IOException, SAXException { + public SpeechIndex build() { return new SpeechIndex(sessions, speeches, agendaItems); } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiografischeAngaben_Mongo_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiografischeAngaben_Mongo_Impl.java index 5d47cb3..dce9a48 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiografischeAngaben_Mongo_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiografischeAngaben_Mongo_Impl.java @@ -26,8 +26,8 @@ public class BiografischeAngaben_Mongo_Impl extends BiografischeAngaben implemen fields.put("parteiKuerzel", entity.getParteiKuerzel()); fields.put("vitaKurz", entity.getVitaKurz()); fields.put("veroeffentlichungspflichtiges", entity.getVeroeffentlichungspflichtiges()); - Document doc = MongoDBHandler.createDocument(false, fields); - return doc; + + return MongoDBHandler.createDocument(false, fields); } @Override diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Institution_Mongo_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Institution_Mongo_Impl.java index 6d5f245..a33bf13 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Institution_Mongo_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Institution_Mongo_Impl.java @@ -22,8 +22,7 @@ public class Institution_Mongo_Impl extends Institution implements MongoOperatio fields.put("fktinsVon", entity.getFktinsVon()); fields.put("fktinsBis", entity.getFktinsBis()); - Document doc = MongoDBHandler.createDocument(false, fields); - return doc; + return MongoDBHandler.createDocument(false, fields); } @Override diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/MdbName_Mongo_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/MdbName_Mongo_Impl.java index 4b7e4be..fad4e0f 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/MdbName_Mongo_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/MdbName_Mongo_Impl.java @@ -23,6 +23,7 @@ public class MdbName_Mongo_Impl extends MdbName implements MongoOperations { "bio", bioDoc, "wahlperioden", wpDocs ); - Document doc = MongoDBHandler.createDocument(false, fields); - return doc; + return MongoDBHandler.createDocument(false, fields); } @Override 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 494922e..c11be39 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 @@ -25,9 +25,7 @@ public class Membership_Mongo_Impl extends Membership implements MongoOperations fields.put("member", entity.getMember()); // TODO: wahrscheinlich nicht nötig fields.put("wp", entity.getWp()); - Document doc = MongoDBHandler.createDocument(false, fields); - - return doc; + return MongoDBHandler.createDocument(false, fields); } @Override diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_Mongo_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_Mongo_Impl.java index a321599..20fc049 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_Mongo_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_Mongo_Impl.java @@ -35,9 +35,7 @@ public class Speaker_Mongo_Impl extends Speaker implements MongoOperations { + JCasUtil.select(tCas, Sentence.class).forEach(sentence -> { System.out.println(sentence.getBegin()+"-"+sentence.getEnd()+": "+sentence.getCoveredText()); System.out.println(JCasUtil.selectCovered(org.hucompute.textimager.uima.type.Sentiment.class, sentence)); }); } private static void casInit() { - JCas jcas = null; + JCas jcas; try { jcas = JCasFactory.createJCas(); } catch (ResourceInitializationException e) { System.err.println("ResourceInitializationException: " + e.getMessage()); - System.err.println(e.getStackTrace()); + System.err.println(Arrays.toString(e.getStackTrace())); throw new RuntimeException(e); } catch (CASException e) { System.err.println("CASException: " + e.getMessage()); - System.err.println(e.getStackTrace()); + System.err.println(Arrays.toString(e.getStackTrace())); throw new RuntimeException(e); } @@ -256,7 +234,7 @@ public class NlpUtils { /** * Execution of video processing via DUUI using the RemoteDriver - * @throws Exception + * @throws Exception in case of an error */ public static void runVideos() throws Exception { @@ -265,6 +243,7 @@ public class NlpUtils { URL fVideo = classLoader.getResource("example.mp4"); // TODO // convertieren eines Videos in einen Base64-String + assert fVideo != null; File fFile = new File(fVideo.getPath()); byte[] bFile = FileUtils.readFileToByteArray(fFile); String encodedString = Base64.getEncoder().encodeToString(bFile); @@ -307,14 +286,10 @@ public class NlpUtils { pComposer.run(pCas); // select some data - JCasUtil.selectAll(videoCas).stream().forEach(videoAnnotation->{ - System.out.println(videoAnnotation); - }); + JCasUtil.selectAll(videoCas).forEach(System.out::println); // select some data - JCasUtil.selectAll(transcriptCas).stream().forEach(tAnnotation->{ - System.out.println(tAnnotation); - }); + JCasUtil.selectAll(transcriptCas).forEach(System.out::println); } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/JavalinConfig.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/JavalinConfig.java index 4d37a16..f47aac4 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/JavalinConfig.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/JavalinConfig.java @@ -23,7 +23,7 @@ public class JavalinConfig extends Properties { /** * Constructor mit Pfad zur Properties-Datei - * @param sPath + * @param sPath Pfad zur Properties-Datei */ public JavalinConfig(String sPath) { @@ -49,7 +49,7 @@ public class JavalinConfig extends Properties { /** * Liefert den Port zurück, auf dem Javalin läuft - * @return + * @return Port */ public Integer getPort() { return GeneralUtils.parseInt(getProperty("port")); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/FileUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/FileUtils.java index 1e2a740..b53da1a 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/FileUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/FileUtils.java @@ -20,17 +20,18 @@ public abstract class FileUtils { * Creates a (possibly nested) directory * @param dir (e.g. "generated" , "level1/level2/level3" etc. */ - public static void createDirectoryIFNotExists(String dir) { + public static boolean createDirectoryIFNotExists(String dir) { File directory = new File(dir); - if (! directory.exists()){ - directory.mkdirs(); + if (!directory.exists()){ + return directory.mkdirs(); } + return true; } /** * Write a list of Strings to file - * @param fileName - * @param stringsList + * @param fileName the filename + * @param stringsList the list of strings to be written to the file */ public static void writeStringsToFile(String fileName, List stringsList) { FileWriter fileWriter = null; @@ -55,8 +56,8 @@ public abstract class FileUtils { /** * - * @param fileName - * @param string + * @param fileName the filename + * @param string the string to be written to the file */ public static void writeStringToFile(String fileName, String string) { FileWriter fileWriter = null; @@ -81,9 +82,9 @@ public abstract class FileUtils { /** * - * @param fileName - * @return - * @throws IOException + * @param fileName the filename + * @return the filewriter object + * @throws IOException if the file cannot be created */ public static FileWriter createFileWriter(String fileName) throws IOException{ FileWriter fileWriter = null; @@ -94,8 +95,8 @@ public abstract class FileUtils { /** * - * @param fileWriter - * @param stringsList + * @param fileWriter the filewriter object + * @param stringsList the list of strings to be written to the file */ public static void writeStringsToFile(FileWriter fileWriter, List stringsList) { @@ -116,8 +117,8 @@ public abstract class FileUtils { /** * - * @param dir - * @return + * @param dir the directory + * @return a set of filenames in the directory */ public static Set listFilesInDirectory(String dir) { try (Stream stream = Files.list(Paths.get(dir))) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/GeneralUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/GeneralUtils.java index fff29e9..0b013a3 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/GeneralUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/GeneralUtils.java @@ -1,28 +1,16 @@ package org.texttechnologylab.project.gruppe_05_1.util; -import java.io.IOException; -import java.nio.file.DirectoryStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.time.LocalDate; -import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; public abstract class GeneralUtils { /** * - * @param integer - * @return + * @param integer the integer to be parsed + * @return the parsed integer or null if the integer could not be parsed */ public static Integer parseInt(String integer) { @@ -35,8 +23,8 @@ public abstract class GeneralUtils { /** * Parse a date in the format used in Germany - * @param date - * @return + * @param date the date to be parsed + * @return the parsed date or null if the date could not be parsed */ public static LocalDate parseDate(String date) { @@ -50,9 +38,9 @@ public abstract class GeneralUtils { /** * Parse tiem in a give format - * @param date - * @param timeFormat - * @return + * @param date the time to be parsed + * @param timeFormat the format of the time + * @return the parsed time or null if the time could not be parsed */ public static LocalTime parseTime(String date, String timeFormat) { @@ -66,8 +54,8 @@ public abstract class GeneralUtils { /** * Parse a Formatiere Datumsfelder wie in Deutschland üblich ist. - * @param date - * @return + * @param date the date to be formatted + * @return the formatted date or an empty string if the date is null */ public static String formatDate(LocalDate date) { @@ -77,8 +65,8 @@ public abstract class GeneralUtils { /** * Format time in the format used in Germany - * @param time - * @return + * @param time the time to be formatted + * @return the formatted time or an empty string if the time is null */ public static String formatTime(LocalTime time) { 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 86f38f5..b506a78 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 @@ -1,8 +1,6 @@ package org.texttechnologylab.project.gruppe_05_1.util; import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoDatabase; -import com.mongodb.client.model.Indexes; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; @@ -12,10 +10,8 @@ import org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils; 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.Element; import org.w3c.dom.Node; @@ -34,8 +30,9 @@ import java.util.zip.ZipInputStream; public abstract class PPRUtils { public static final String PARTEILOS_KUERZEL = "Parteilos"; - private static Set processedProtocols = new HashSet<>(); - private static Set xmlProtocols = new HashSet<>(); + private static final Set processedProtocols = new HashSet<>(); + private static final Set xmlProtocols = new HashSet<>(); + public static final Integer legislaturPeriode = 20; @@ -63,7 +60,8 @@ public abstract class PPRUtils { * - Kommentare * - etc. * ... und in die Mongo-DB persistieren, falls noch nicht vorhanden sind. - * @param xmlFactory + * @param xmlFactory Factory für die XML-Objekte + * @param mongoFactory Factory für die MongoDB-Objekte */ public static void parlamentExplorerInit(FileObjectFactory xmlFactory, MongoObjectFactory mongoFactory) { @@ -93,7 +91,7 @@ public abstract class PPRUtils { /** * Fotos hochladen - TODO - * @param mongoFactory + * @param mongoFactory Factory für die MongoDB-Objekte */ public static void readPhotos(MongoObjectFactory mongoFactory) { @@ -101,8 +99,8 @@ public abstract class PPRUtils { /** * Reden und Kommentare einlesen - TODO - * @param xmlFactory - * @param mongoFactory + * @param xmlFactory Factory für die XML-Objekte + * @param mongoFactory Factory für die MongoDB-Objekte */ public static void readSpeechesAndComments(FileObjectFactory xmlFactory, MongoObjectFactory mongoFactory) { @@ -110,8 +108,8 @@ public abstract class PPRUtils { /** * Liest die MdBs aus der Bundestag-Seite und persistiere sie in die MongoDB - * @param mdbUrl - * @param xmlFactory + * @param mdbUrl URL der MDBs + * @param xmlFactory Factory für die XML-Objekte */ public static void readAndPersistMdbs(String mdbUrl, FileObjectFactory xmlFactory, MongoObjectFactory mongoFactory) { org.w3c.dom.Document mdbRoot = getMdbFromRemoteXmlZipfile(mdbUrl); @@ -125,7 +123,7 @@ public abstract class PPRUtils { Speaker speaker = xmlFactory.createSpeaker(mdbNode); // System.out.println("Speaker " + speaker.getId() + " (" + speaker.getFirstName() + " " + speaker.getName() + ", " + speaker.getParty() + ")"); - if (mdbActiveInWp(speaker, 20)) { + if (mdbActiveInWp(speaker, legislaturPeriode)) { org.bson.Document speakerDoc = mongoFactory.createSpeaker(speaker); MongoDBHandler.insertDocument(speakerCollection, speakerDoc); } @@ -140,19 +138,19 @@ public abstract class PPRUtils { private static boolean mdbActiveInWp(Speaker speaker, Integer legislaturPeriode) { List wps = speaker.getMemberships().stream() .map(Membership::getWp) - .collect(Collectors.toList()); + .toList(); return wps.contains(legislaturPeriode); } /** * Liest die MDB aus einer Zip-Datei der bundestag,de-Seite - * @param zipUrl - * @return + * @param zipUrl URL der ZIP-Datei + * @return the MDB Document */ private static org.w3c.dom.Document getMdbFromRemoteXmlZipfile(String zipUrl) { - URL url = null; - InputStream urlInputStream = null; + URL url; + InputStream urlInputStream; try { url = new URL(zipUrl); urlInputStream = url.openStream(); @@ -196,9 +194,9 @@ public abstract class PPRUtils { /** * Helper method to save a stream for a later use. * We use it to save the DTD and the XML files of the MDBs, which are within a zipfile on the bundestag.de site - * @param input - * @param output - * @throws IOException + * @param input the input stream + * @param output the output stream + * @throws IOException if an error occurs */ private static void copyStream(InputStream input, OutputStream output) throws IOException { @@ -212,7 +210,7 @@ public abstract class PPRUtils { /** * Eine Liste von Parlamentariern nach Namen (erst nach Nachnamen, dann nach Vornamen) sortieren (aufsteigend) - * @param mdbList + * @param mdbList Liste der Parlamentarier */ public static void sortParlamentarierByName(List mdbList) { @@ -231,8 +229,8 @@ public abstract class PPRUtils { /** * Alle Parteien (aus einer Liste der MdBs) herausfinden. * null-Einträge durch einen Platzhalter ersetzen, damit später keine null pointer exceptions auftretten - * @param mdbList - * @return + * @param mdbList Liste der MdBs + * @return Set der Parteien */ public static Set getFraktionenFromMdbList(List mdbList) { @@ -259,8 +257,8 @@ public abstract class PPRUtils { /** * Eine Zuordnung zwischen Partei und deren Mitgliedern erzeugen. Ein Mitglied ist hier die MDB-Struktur - * @param mdbList - * @return + * @param mdbList Liste der MdBs + * @return Map mit Partei als Key und Liste der MdBs als Value */ public static Map> createMdbParteiZuordnung(List mdbList) { @@ -285,9 +283,9 @@ public abstract class PPRUtils { /** * Eine Zuordnung zwischen Partei und deren Mitgliedern erzeugen. Ein Mitglied wird hier durch seine ID erfaßt - * @param parteien - * @param mdbList - * @return + * @param parteien Set der Parteien + * @param mdbList Liste der MdBs + * @return Map mit Partei als Key und Liste der MdB-IDs als Value */ public static Map> getMdbParteiZuordnung(Set parteien, List mdbList) { @@ -314,8 +312,8 @@ public abstract class PPRUtils { /** * Eine Zuordnung zwischen MdB (repräsentiert durch seine ID) und seien biographischen Daten erzeugen. - * @param mdbList - * @return + * @param mdbList Liste der MdBs + * @return Map mit MdB-ID als Key und biographischen Daten als Value */ public static Map getMdbParteiZuordnung(List mdbList) { @@ -330,7 +328,7 @@ public abstract class PPRUtils { /** * Eine Liste von MdBs nach Namen (erst nach Nachnamen, dann nach Vornamen) sortieren (aufsteigend) - * @param mdbList + * @param mdbList Liste der MdBs */ public static void sortMdbByName(List mdbList) { @@ -375,7 +373,7 @@ public abstract class PPRUtils { xmlProtocols.add(xmlDoc); } catch (Exception e) { System.err.println("Fehler beim Verarbeiten der XML-Datei: " + xmlUrl); - e.printStackTrace(); + System.err.println("Fehler: " + e.getLocalizedMessage()); } } @@ -393,7 +391,7 @@ public abstract class PPRUtils { } } catch (IOException e) { System.err.println("Fehler beim Laden der Seite: " + queryUrl); - e.printStackTrace(); + System.err.println("Fehler: " + e.getLocalizedMessage()); break; } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/XmlUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/XmlUtils.java index 8ff4ae6..243cc43 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/XmlUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/XmlUtils.java @@ -16,7 +16,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; public abstract class XmlUtils { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/XmlOperations.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/XmlOperations.java index ff2fc96..5696833 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/XmlOperations.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/XmlOperations.java @@ -4,5 +4,5 @@ import org.w3c.dom.Node; public interface XmlOperations { FileObjectFactory factory = FileObjectFactory.getFactory(); - public Object fromXmlNode(Node node); + Object fromXmlNode(Node node); } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/BiografischeAngaben_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/BiografischeAngaben_File_Impl.java index c49f1bd..be24918 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/BiografischeAngaben_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/BiografischeAngaben_File_Impl.java @@ -1,6 +1,5 @@ package org.texttechnologylab.project.gruppe_05_1.xml.mdb; -import org.texttechnologylab.project.gruppe_05_1.domain.Gender; import org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben; import org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils; import org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbDocument_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbDocument_File_Impl.java index 0dc96cb..b60f4b8 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbDocument_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbDocument_File_Impl.java @@ -15,6 +15,7 @@ public class MdbDocument_File_Impl extends MdbDocument implements XmlOperations MdbDocument doc = new MdbDocument_File_Impl(); Node versionNode = XmlUtils.getFirstChildByName(node, "VERSION"); + assert versionNode != null; doc.setVersion(versionNode.getFirstChild().getNodeValue()); List mdbs = new ArrayList<>(); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Mdb_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Mdb_File_Impl.java index c651c07..a22adac 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Mdb_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Mdb_File_Impl.java @@ -15,9 +15,11 @@ public class Mdb_File_Impl extends Mdb implements XmlOperations { public Mdb fromXmlNode(Node node) { Mdb mdb = new Mdb_File_Impl(); Node idNode = XmlUtils.getFirstChildByName(node, "ID"); + assert idNode != null; mdb.setId(idNode.getFirstChild().getNodeValue()); Node namenNode = XmlUtils.getFirstChildByName(node, "NAMEN"); + assert namenNode != null; List nameNodeList = XmlUtils.getChildrenByName(namenNode, "NAME"); List mdbNameList = new ArrayList<>(); for (Node nameNode : nameNodeList) { @@ -31,6 +33,7 @@ public class Mdb_File_Impl extends Mdb implements XmlOperations { Node wpenNode = XmlUtils.getFirstChildByName(node, "WAHLPERIODEN"); + assert wpenNode != null; List wpNodeList = XmlUtils.getChildrenByName(wpenNode, "WAHLPERIODE"); List wpList = new ArrayList<>(); for (Node wpNode : wpNodeList) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speaker/Speaker_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speaker/Speaker_File_Impl.java index 1e64039..468888c 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speaker/Speaker_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speaker/Speaker_File_Impl.java @@ -3,7 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speaker; import org.texttechnologylab.project.gruppe_05_1.domain.mdb.*; 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.util.GeneralUtils; import org.texttechnologylab.project.gruppe_05_1.util.PPRUtils; import org.texttechnologylab.project.gruppe_05_1.util.XmlUtils; import org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations; @@ -20,10 +19,12 @@ public class Speaker_File_Impl extends Speaker implements XmlOperations { // ID Node idNode = XmlUtils.getFirstChildByName(node, "ID"); + assert idNode != null; speaker.setId(idNode.getFirstChild().getNodeValue()); // Name: alle Namen lesen, nur den letzten berücksichtigen Node namenNode = XmlUtils.getFirstChildByName(node, "NAMEN"); + assert namenNode != null; List nameNodeList = XmlUtils.getChildrenByName(namenNode, "NAME"); List mdbNameList = new ArrayList<>(); for (Node nameNode : nameNodeList) { @@ -58,6 +59,7 @@ public class Speaker_File_Impl extends Speaker implements XmlOperations { // Memberships Node wpenNode = XmlUtils.getFirstChildByName(node, "WAHLPERIODEN"); + assert wpenNode != null; List wpNodeList = XmlUtils.getChildrenByName(wpenNode, "WAHLPERIODE"); List wpList = new ArrayList<>(); for (Node wpNode : wpNodeList) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java index 20d7abf..a71b8c1 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java @@ -1,6 +1,5 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls; -import lombok.Getter; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java index 2d1dff8..3d164b8 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java @@ -1,6 +1,5 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls; -import lombok.Getter; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/SpeechParser.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/SpeechParser.java index 124d359..21456fc 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/SpeechParser.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/SpeechParser.java @@ -1,8 +1,5 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches; -import lombok.Getter; -import lombok.Setter; -import org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils; import org.texttechnologylab.project.gruppe_05_1.util.PPRUtils; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.*; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem; @@ -29,7 +26,6 @@ public class SpeechParser { private List speeches; private List agendaItems; - private Boolean parseLegislativePeriods; public List getSpeeches() { return speeches; @@ -40,7 +36,6 @@ public class SpeechParser { } public void setParseLegislativePeriods(Boolean parseLegislativePeriods) { - this.parseLegislativePeriods = parseLegislativePeriods; } public List parseAllSessions() { @@ -58,7 +53,7 @@ public class SpeechParser { tempFile.delete(); // Lösche die temporäre Datei nach der Verarbeitung } catch (Exception e) { System.err.println("Error parsing XML document."); - e.printStackTrace(); + System.err.println(e.getMessage()); } } return sessions;