Klasse DavDBRepository

java.lang.Object
de.svws_nrw.davapi.data.dav.DavDBRepository

public final class DavDBRepository extends Object
Diese Klasse handhabt den Zugriff auf DAV-Ressource-Collections, Berechtigungen dazu und die zugehörigen Ressourcen, welche in der SVWS-Datenbank gespeichert werden.
  • Konstruktordetails

    • DavDBRepository

      public DavDBRepository(DBEntityManager conn)
      Erstellt ein neues Objekt für den Zugriff auf die in der Datenbank gespeicherten DAV-Ressource-Collections.
      Parameter:
      conn - die Datenbankverbindung, welche für den Zugriff verwendet werden soll.
  • Methodendetails

    • getCollectionsByTypes

      public List<DavCollection> getCollectionsByTypes(DavRessourceCollectionTyp... typen)
      Gibt alle Collections für die angegebenen Typen zurück, auf welche eine Lese-Berechtigung des Benutzers existiert.
      Parameter:
      typen - die DavRessourceCollectionTyp die aus der Datenbank gesucht werden.
      Gibt zurück:
      eine Liste mit den Collections
    • getCollectionsByIDs

      public List<DavCollection> getCollectionsByIDs(Collection<Long> idsCollection)
      Gibt alle Collections für die angegebenen IDs zurück, auf welche eine Lese-Berechtigung des Benutzers existiert.
      Parameter:
      idsCollection - die IDs der Collections
      Gibt zurück:
      eine Liste mit den Collections
    • getCollectionByID

      public DavCollection getCollectionByID(long idCollection)
      Gibt die Collection für die angegebenen ID zurück, wenn darauf mindestens eine Lese-Berechtigung des Benutzers existiert.
      Parameter:
      idCollection - die ID der Collection
      Gibt zurück:
      eine Collection oder null
    • insertOrUpdateCollection

      public DavCollection insertOrUpdateCollection(DavCollection collection) throws DavException
      Fügt eine neue Collection hinzu oder aktualisiert eine bestehende, sofern für diese die ID und Lese- und Schreibberechtigung gegeben ist.
      Parameter:
      collection - die Collection (neu oder bestehend)
      Gibt zurück:
      die Collection
      Löst aus:
      DavException - im Falle von fehlenden Berechtigungen oder Fehlern beim Schreiben in die Datenbank
    • deleteCollection

      public boolean deleteCollection(long idCollection, long syncToken) throws DavException
      Löscht eine Collection wenn das übergebene Synctoken aktuell ist und dem in der Datenbank entspricht. Außerdem wird geprüft, ob die Berechtigung als Administrator oder Besitzer vorliegt
      Parameter:
      idCollection - die ID der Collection
      syncToken - das Synctoken für den Abgleich
      Gibt zurück:
      true, wenn das Löschen erfolgreich war, und ansonsten false
      Löst aus:
      DavException - im Fehlerfall
    • getRessources

      public List<DavRessource> getRessources(Collection<Long> idsCollection, boolean withPayload)
      Gibt die Ressourcen der Collections mit den übergebenen IDs zurück. Die übergebenen Abfrage-Parameter werden dabei für das Mapping verwendet. Collections, wo der Benutzer keine Zugriffsrechte drauf hat werden ausgelassen.
      Parameter:
      idsCollection - die IDs der Collections, für welche die Ressourcen gelesen werden sollen
      withPayload - gibt an, ob die Ressource mit dem Ressourceninhalt/Payload erzeugt werden soll
      Gibt zurück:
      Eine Liste mit den Informationen zu den Ressourcen
    • insertOrUpdateRessource

      public DavRessource insertOrUpdateRessource(DavRessource davRessource)
      Fügt eine neue Ressource hinzu oder aktualisiert eine vorhandene auf Basis der UID, sofern die Lese- und Schreibberechtigungen auf der zugehörigen Collection vorhanden sind.
      Parameter:
      davRessource - die Ressource die hinzugefügt bzw. aktualisiert werden soll.
      Gibt zurück:
      die aktuelle Ressource mit gesetzer ID oder null im Fehlerfall, z.B. bei fehlenden Berechtigungen oder Fehlern beim Schreiben in die Datenbank
    • deleteRessource

      public boolean deleteRessource(long idCollection, String uid, Long lastModified) throws DavException
      Löscht eine Ressource anhand UID aus der Collection mit der übergebenen ID, sofern das gespeicherte Synctoken mit dem übergebenen übereinstimmt, d.h. der Benutzer der Anfrage die aktuelle Ressource hatte.
      Parameter:
      idCollection - die ID der Collection
      uid - die UID der Ressource
      lastModified - der SyncToken aus der Anfrage für den Abgleich der letzten Änderung an der Ressource
      Gibt zurück:
      true, wenn das Löschen erfolgreich war, und ansonsten false
      Löst aus:
      DavException - im Fehlerfall, z.B. bei fehlenden Rechten auf der Collection, einer fehlenden Ressource, einem abweichende Synctoken oder bei Fehlern beim Datenbankzugriff
    • insertOrUpdatePermissions

      public DavPermissions insertOrUpdatePermissions(DavPermissions permissions) throws DavException
      Aktualisiert oder erzeugt einen Eintrag für Berechtigungen auf einer Collection. Dies ist nur erlaubt, sofern der Benutzer ein Administrator ist oder im Besitz der Collection.
      Parameter:
      permissions - die Informationen zu der neuen bzw. angepassten Berechtigung
      Gibt zurück:
      der aktualisierte Berechtigungseintrag
      Löst aus:
      DavException - im Fehlerfall, z.B. bei fehlenden Rechten oder bei Fehlern beim Schreiben in die Datenbank
    • deletePermission

      public boolean deletePermission(long idCollection, long idBenutzer) throws DavException
      Löscht einen Eintrag für Berechtigungen auf eine Collection durch einen Benutzer.
      Parameter:
      idCollection - die ID der Collection
      idBenutzer - die ID des Benutzers
      Gibt zurück:
      true, wenn der Löschvorgang erfolgreich war, und ansonsten false
      Löst aus:
      DavException - im Fehlerfall, z.B. bei fehlenden Rechten, Ressource oder Benutzers oder bei Fehlern beim Schreiben in die Datenbank
    • tryCreateOwnedCollectionIfNotExists

      public void tryCreateOwnedCollectionIfNotExists(DavRessourceCollectionTyp typ)
      Erstellt eine neue Ressourcensammlung mit dem angemeldeten Nutzer als Besitzer, sofern eine Ressourcensammlung vom gegebenen Typ noch nicht existiert. Nutzbar um einen eigenen Kalender oder ein eigenes Adressbuch anzulegen.
      Parameter:
      typ - der Typ der Ressourcensammlung
    • getDeletedResourceUIDsSince

      public List<String> getDeletedResourceUIDsSince(Long collectionId, Long syncTokenMillis)
      Gibt eine Liste aller Ressourcen-UIDs einer Sammlung zurück, welche seit dem gegebenen Synctoken gelöscht wurden.
      Parameter:
      collectionId - die Sammlung auf der nach gelöschten Ressourcen gesucht werden soll.
      syncTokenMillis - das Synctoken, seit dem nach Löschvorgängen gesucht werden soll
      Gibt zurück:
      eine Liste aller UIDs, welche gelöscht wurden.