Enum Class CalendarSyncStatus

java.lang.Object
java.lang.Enum<CalendarSyncStatus>
org.exoplatform.caldav.model.CalendarSyncStatus
All Implemented Interfaces:
Serializable, Comparable<CalendarSyncStatus>, Constable

public enum CalendarSyncStatus extends Enum<CalendarSyncStatus>
The lifecycle of one calendar pair. Every value other than ACTIVE is a state the user can be shown and, where it makes sense, act on — the point of recording them rather than logging a failure and retrying blindly.
  • Enum Constant Details

    • ACTIVE

      public static final CalendarSyncStatus ACTIVE
      Bound on both sides and synchronising.
    • REMOTE_CREATE_REFUSED

      public static final CalendarSyncStatus REMOTE_CREATE_REFUSED
      The server refused to create the collection. Real on servers whose CalDAV implementation does not offer MKCALENDAR at all — Google's is the usual one. Not BlueMind's: it answers 201 while creating nothing when the request omits the supported component set, which is a malformed request on our side rather than a refusal, and is why creation is confirmed by a read-back rather than by a status code.
    • REMOTE_GONE

      public static final CalendarSyncStatus REMOTE_GONE
      The remote collection has disappeared. For an EXO pair the engine may recreate it; for a REMOTE pair it means the user deleted their own calendar, which propagates inward.
    • PAUSED

      public static final CalendarSyncStatus PAUSED
      Synchronisation is suspended and will not resume on its own. Set on repeated failure, and immediately on an authentication rejection — a stale password must never be retried in a loop against a server that may lock the account.
    • LOCALLY_DELETED

      public static final CalendarSyncStatus LOCALLY_DELETED
      The local calendar is gone and the remote collection has not been dealt with yet. The tombstone that keeps a deletion recoverable instead of silently forgotten.
    • EXO_ORPHANED

      public static final CalendarSyncStatus EXO_ORPHANED
      An EXO pair whose local calendar no longer exists while its remote collection does, and which no deletion accounted for. Surfaced rather than cleaned up automatically: something disagreed, and guessing which side is right is how data gets destroyed.
    • DELETING

      public static final CalendarSyncStatus DELETING
      A deletion is in flight. Set before the remote call and cleared after, so an interrupted deletion is visible as unfinished rather than indistinguishable from one that never started.
    • HIDDEN_SHARE

      public static final CalendarSyncStatus HIDDEN_SHARE
      The user hid a calendar somebody shared with them (EXO-90239).

      The one pair that never had an eXo calendar behind it and never will: a share is not materialised (CaldavSyncService#skipShare), and before this state existed it therefore had no pair at all — which is exactly why it could not be hidden, since being unbound is what puts a collection under the remote calendars and serves its events. The pair records the user's choice under the origin the collection has to the engine, SyncOrigin.REMOTE — somebody made it on the server, eXo owns nothing of it — with an anchor derived from its path rather than a calendar's (CaldavDeletionService#hiddenShareAnchor: the pair table's unique index would refuse a second null anchor on Oracle and SQL Server), and every consumer that acts on a pair leaves it alone: the sweep reads only ACTIVE pairs, the outbound half binds by agenda's own anchors, the orphan pruning drops only ACTIVE pairs, and the states worth telling the user about do not include it. What it does do, by being a binding at all, is keep the collection out of the calendar list and its events unserved, and keep materialisation from ever considering it — the same mechanism that makes a LOCALLY_DELETED tombstone stick. Lifted by deleting the pair: nothing has to be synchronised for the share to be listed again.

    • RETIRED_SUBSCRIPTION

      public static final CalendarSyncStatus RETIRED_SUBSCRIPTION
      A calendar materialised from a collection the user only subscribed to — a BlueMind resource, a colleague's calendar — before the server's naming was read, and retired since (EXO-90275).

      Inert, and that is the whole of its meaning: nothing is read from the collection and nothing is written to it through this binding, not an import, not a push, not a removal, not the cleanup a move leaves behind. The sweep reads only ACTIVE pairs and the push writes only through them; the lookups that resolve a copy by its mapping whatever the binding's state (CaldavPushService#objectAnywhere, #mappingElsewhere, CaldavEventPropagationService#collectHolders) skip this one by name; and a reconnection thaws PAUSED alone, so it cannot be woken up. The eXo calendar and its events are kept untouched — eXo cannot tell the copies in it from events the user made there, since agenda lists a calendar's events only by date window and confirmed status — and the state is told to the user, who deletes that calendar. Its binding is then dropped by the orphan pruning, once agenda has really deleted the calendar — the deletion dialog claims nothing about it and leaves it alone — and the collection is listed read-only under "Shared with me".

  • Method Details

    • values

      public static CalendarSyncStatus[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static CalendarSyncStatus valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null