Start of Javadoc Auther-entries, work in progress

This commit is contained in:
vysitor 2025-03-23 21:04:47 +01:00
parent 51485c3379
commit fba66751e5
4 changed files with 90 additions and 12 deletions

View file

@ -56,7 +56,9 @@ public class MongoDBHandler {
private MongoCollection<Document> memberPhotoCollection;
private MongoCollection<Document> historyCollection;
/**
* Implementiert von Valentin
*/
public MongoDBHandler() {
// Set loglevel for slf4j to avoid spam // TODO: Fix this (optional)
System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "error");
@ -115,6 +117,7 @@ public class MongoDBHandler {
/**
* Get the MongoDB according to properties.
* If a local server URI is defined, use it. Otherwise, use remote server.
* Implementiert von Valentin
* @return MongoDatabase
*/
static public MongoDatabase getMongoDatabase() {
@ -175,6 +178,7 @@ public class MongoDBHandler {
/**
*
* @return List<String> with the names of all collections
* Implementiert von Valentin
*/
public Set<String> getCollectionNames() {
// return getDatabase().listCollectionNames().into(new ArrayList<>());
@ -185,6 +189,7 @@ public class MongoDBHandler {
*
* @param name Name of collection to check for existance
* @return does the collection exist
* Implementiert von Valentin
*/
public boolean collectionExists(String name) {
return getDatabase().listCollectionNames().into(new ArrayList<>()).contains(name);
@ -193,6 +198,7 @@ public class MongoDBHandler {
/**
* Tries to create a collection. If the collection exists and contains documents, throw an exception
* Implementiert von Valentin
* @param database
* @param collectionName
*/
@ -218,6 +224,7 @@ public class MongoDBHandler {
/**
* Create Collection
* Implementiert von Valentin
* @param database
* @param collectionName
*/
@ -236,6 +243,7 @@ public class MongoDBHandler {
/**
* Creates a collection. If the collection exists already, delete all its document
* Implementiert von Valentin
* @param database
* @param collectionName
*/
@ -251,7 +259,12 @@ public class MongoDBHandler {
}
}
/**
* Implementiert von Valentin
* @param collection
* @param indexName
* @param isAscending
*/
static public void createIndexForCollection(MongoCollection<Document> collection, String indexName, boolean isAscending) {
// MongoDB creates automatically an index on "_id"
if (indexName.equals(DEFAULT_ID_FIELD_NAME)) {
@ -265,6 +278,12 @@ public class MongoDBHandler {
}
}
/**
* Implementiert von Valentin
* @param collection
* @param indexNames
* @param isAscending
*/
static public void createIndexForCollection(MongoCollection<Document> collection, List<String> indexNames, boolean isAscending) {
// MongoDB creates automatically an index on "_id"
if (indexNames.contains(DEFAULT_ID_FIELD_NAME)) {
@ -279,6 +298,9 @@ public class MongoDBHandler {
}
}
/**
* Implementiert von Valentin
*/
public void createIndicesForSpeakerCollection() {
if (speakerCollection.listIndexes().into(new ArrayList<>()).size() == 1) {
MongoDBHandler.createIndexForCollection(speakerCollection,"name", true);
@ -287,6 +309,10 @@ public class MongoDBHandler {
}
}
/**
* Implementiert von Valentin
*/
public void createIndicesForSpeechCollection() {
if (speechesCollection.listIndexes().into(new ArrayList<>()).size() == 1) {
MongoDBHandler.createIndexForCollection(speechesCollection, "speakerId", true);
@ -301,6 +327,7 @@ public class MongoDBHandler {
/**
* Does a document with a given ID (for the "_id"-field) exists in a given collection?
* Implementiert von Valentin
* @param collection
* @param id
* @return
@ -314,6 +341,7 @@ public class MongoDBHandler {
/**
* Find a document with a given ID (for the "_id"-field) in a given collection
* Implementiert von Valentin
* @param collection
* @param id
* @return the document (null if not found)
@ -325,7 +353,7 @@ public class MongoDBHandler {
}
/**
*
*Implementiert von Valentin
* @param collection
* @return count of documents in the collection
*/
@ -339,7 +367,7 @@ public class MongoDBHandler {
/**
*
*Implementiert von Valentin
* @param database
* @param collectionName
* @return count of documents in the collection
@ -353,7 +381,7 @@ public class MongoDBHandler {
}
/**
*
*Implementiert von Valentin
* @param database
* @param collectionName
*/
@ -372,6 +400,7 @@ public class MongoDBHandler {
*/
/**
* Implementiert von Valentin
* Creates a BSON document containing only simple fields according to fields given in a map
* @param attributes
* @return
@ -390,6 +419,7 @@ public class MongoDBHandler {
}
/**
* Implementiert von Valentin
* Creates a BSON document containing simple fields (attributes) as well as other (possibly nested) objects
* @param attributes the simple fields
* @param fields the (possibly nested) objects
@ -418,6 +448,7 @@ public class MongoDBHandler {
}
/**
* Implementiert von Valentin
* Liefert ein Feldwert aks Double, auch wenn er in der Datenbank als Integer oder String steht
* @param doc Mongo-Dokument
* @param fieldName Feldname
@ -439,7 +470,7 @@ public class MongoDBHandler {
/**
*
*Implementiert von Valentin
* @param collection
* @param doc
* @return
@ -449,7 +480,7 @@ public class MongoDBHandler {
}
/**
*
*Implementiert von Valentin
* @param collection
* @param docs
* @return
@ -459,7 +490,7 @@ public class MongoDBHandler {
}
/**
*
*Implementiert von Valentin
* @param collection
* @param fieldName
* @param fieldValue
@ -471,6 +502,7 @@ public class MongoDBHandler {
/**
* Implementiert von Valentin
* Searches a document and performs an update on it
* The document to update must be matched by name and value of a certain field
* @param collection
@ -493,7 +525,7 @@ public class MongoDBHandler {
/**
*
*Implementiert von Valentin
* @param collection
* @param searchCriteriaName search criteria: name of the field
* @param searchCriteriaValue search criteria: value of the field

View file

@ -13,7 +13,7 @@ public class MongoObjectFactory {
private static MongoObjectFactory factory = null;
/**
*
*Gesamte File implementiert von Valentin
* @return MongoObjectFactory
*/
public static MongoObjectFactory getFactory() {

View file

@ -4,6 +4,10 @@ import org.bson.Document;
import java.util.List;
/**
* Implementiert von Valentin
* @param <T>
*/
public interface MongoOperations<T> {
MongoObjectFactory factory = MongoObjectFactory.getFactory();
public Document createEntity(T entity);

View file

@ -57,11 +57,18 @@ public class MongoPprUtils {
private static MongoCollection<Document> commentCollection = null;
private static MongoCollection<Document> metadataCollection = null;
/**
* Implementiert von Valentin
* @return
*/
public static MongoCollection<Document> getSpeakerCollection() {
if (speakerCollection == null) speakerCollection = MongoDBHandler.getMongoDatabase().getCollection(SPEAKER_COLLECTION_NAME);
return speakerCollection;
}
/**
* Implementiert von Valentin
* @return
*/
public static MongoCollection<Document> getSpeechCollection() {
if (speechCollection == null) speechCollection = MongoDBHandler.getMongoDatabase().getCollection(SPEECH_COLLECTION_NAME);
return speechCollection;
@ -82,12 +89,17 @@ public class MongoPprUtils {
return picturesCollection;
}
/**
* Implementiert von Valentin
* @return
*/
public static MongoCollection<Document> getMetadataCollection() {
if (metadataCollection == null) metadataCollection = MongoDBHandler.getMongoDatabase().getCollection(METADATA_COLLECTION_NAME);
return metadataCollection;
}
/**
* Implementiert von Valentin
* Create the Speaker Collection and useful indices for it
*/
public static void createIndexForSpeakerCollection() {
@ -98,6 +110,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Create the Speech Collection and useful indices for it
*/
public static void createIndexForSpeechCollection() {
@ -107,6 +120,7 @@ public class MongoPprUtils {
/**
* Implementiert von Valentin
* Truncate the Speaker Collection.
* Note that it is quicker (and saves space) to drop and re-create rather than removing all documents using "remove({})"
*/
@ -123,6 +137,7 @@ public class MongoPprUtils {
/**
* Implementiert von Valentin
* Holt alle Parlamentarier, die einen Suchkriterium erfüllen.
* Das Suchkriterium wird auf allen Feldern angewandt: Vorname, Nachname, Partei.
* Ist das Suchkriterium leer, werden alle Parlamentarier zurückgeliefert
@ -246,6 +261,7 @@ public class MongoPprUtils {
/**
* Implementiert von Valentin
* Hole alle Reden gefiltert nach den Form-Parameter
* @param ctx Session Context, aus dem man alle Parameter abfragen kann
* @return
@ -301,6 +317,7 @@ public class MongoPprUtils {
/**
* Implementiert von Valentin
* Liest einen Parlamentarier von der MongoDB
* @param doc - MongoDB Dokument eines Parlamentariers
* @return Parlamentarier
@ -367,6 +384,7 @@ public class MongoPprUtils {
/**
* Implementiert von Valentin
* Holt die Details eines Parlamentariers
* @param id Parlamentarier-ID (Integer)
* @return ParlamentarierDetails
@ -474,9 +492,9 @@ public class MongoPprUtils {
// Speech
// TODO: kopiere die Speech-Sachen von Übung 4 hierher!
/**
* Implementiert von Valentin
* Aufzählen, wie viele Reden eines bestimmten Redners gespeichert sind
* @param speakerId
* @return Anzahl Reden
@ -487,6 +505,7 @@ public class MongoPprUtils {
/**
* Implementiert von Valentin
* Liefert alle Reden eines Redners zurück
* @param speakerId
* @return Alle Reden eines Redners
@ -505,6 +524,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Liefert alle Reden zurück
* Die Auswahl kann durch einen (textuellen) Filter eingeschränkt werden
* @param filter
@ -541,6 +561,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Liefert Metadaten (aber keine Inhalte!) für alle Reden eines Redners zurück.
* Als Metadaten zählen das Datum, Agenda-ID etc.
* @param speakerId
@ -584,6 +605,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Liefert Metadaten (aber keine Inhalte!) für alle Reden zurück.
* Die Auswahl kann durch einen (textuellen) Filter eingeschränkt werden
* Als Metadaten zählen das Datum, Agenda-ID etc.
@ -646,6 +668,7 @@ public class MongoPprUtils {
/**
* Implementiert von Valentin
* Holt die Redeinformationen aus der Datenbank, die wichtig sind, um eine Liste der Reden in HTML darzustellen
* @return
*/
@ -682,6 +705,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Holt die Redeinformationen aus der Datenbank, die wichtig sind, um eine Liste der Reden eines Parlamentariers in HTML darzustellen
* @param speakerId
* @return
@ -721,6 +745,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Füge Rede-Metadaten (welche in der Session-Collection stehen) der Rede hinzu.
* Achtung: Redezeit ist in der Datenbank in unterschiedlichen Formaten vorhanden.
* @param sessionId
@ -746,6 +771,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Liefert das Datum und die Uhrzeit einer Sitzung zurück
* @param sessionId
* @return
@ -761,6 +787,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Liefert den Agenda-Titel zurück
* @param sessionId
* @return
@ -777,6 +804,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Liefert die Rede-Informationen für die Anzeige einer Rede:
* - die Rede-ID
* - Name und Fraktion des Redners
@ -827,6 +855,7 @@ public class MongoPprUtils {
/**
* Implementiert von Valentin
* Aktualisiert (or erzeugt, falls nicht bereits vorhanden) diverse Metadaten:
* - Die Liste der Parteien/Fraktionen, wie sie im Speaker-Collection stehen
* - Die Liste der Parteien/Fraktionen, wie sie im Speech-Collection stehen (diese Listen sind recht unterschiedlich)
@ -879,6 +908,11 @@ public class MongoPprUtils {
Logger.info("Updating Metadata Collection: end");
}
/**
* Implementiert von Valentin
* @param speakerId
* @return
*/
public static List<Speech> getSpeechesBySpeakerId(String speakerId) {
List<Speech> speechIds = new ArrayList<>();
Document filter = new Document("speakerId", Integer.parseInt(speakerId));
@ -889,6 +923,10 @@ public class MongoPprUtils {
return speechIds;
}
/**
* Implementiert von Valentin
* @return
*/
public static List<Speech> getAllSpeeches() {
List<Speech> speechIds = new ArrayList<>();
Document filter = new Document();
@ -949,6 +987,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Liefert die Liste aller Parteien/Fraktionen, welche in der Liste der Parlamentarier stehen, zurück.
* Diese Liste dient zur Filterung der Parlamentarier auf der entsprechenden Seite.
* @return List<String> Liste aller Parteien/Fraktionen, welche in der Liste der Parlamentarier stehen
@ -970,6 +1009,7 @@ public class MongoPprUtils {
);
/**
* Implementiert von Valentin
* Liefert die Liste aller Parteien/Fraktionen, welche in der Liste der Reden stehen, zurück.
* Diese Liste dient zur Filterung der Reden auf der entsprechenden Seite.
* Da die Datenqualität dieses Feldes extrem schlecht ist, muss man hier etwas tricksen:
@ -986,6 +1026,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Reichere die Rede-Dokumente um Informationen an:
* - Datum und Uhrzeit der Rede (als DateTime und textuell): dateTimeString , dateTime
* - Agenda-Titel: agendaTitel
@ -1051,6 +1092,7 @@ public class MongoPprUtils {
}
/**
* Implementiert von Valentin
* Liefert die Liste aller Topics, zurück.
* Diese Liste dient zur Filterung der Reden auf der entsprechenden Seite.
* @return Liste aller Topics