/** * Erstellt ein neues KExDavObject * * @param objectSpecification Objekt-Spezifikation * @param connection Datenverteiler-Verbindung * @param manager KExDaV-Manager-Objekt, an das Benachrichtigungen gesendet werden können */ public KExDaVObject( final ObjectSpecification objectSpecification, final ClientDavInterface connection, final ManagerInterface manager) { _manager = manager; if (objectSpecification == null) throw new IllegalArgumentException("objectSpecification ist null"); if (connection == null) throw new IllegalArgumentException("connection ist null"); _objectSpecification = objectSpecification; _connection = connection; final SystemObject object = objectSpecification.getObject(_connection.getDataModel()); setWrappedObject(object); // Anmeldung auf Erstellung/Löschung des Objektes (nicht nötig bei schon vorhandenen // Konfigurationsobjekten) if (object == null || object.getType() instanceof DynamicObjectType) { /** * Direkt beim typ.dynamischesObject anmelden. Das Anmelden beim eigentlichen Typ dieses * Objektes funktioniert nicht immer zuverlässig, weil unter Umständen dieses Objekt noch gar * nicht vorhanden und deshalb kein Typ ermittelbar ist, oder weil evtl. jemand das Objekt mit * diesem Typ löschen könnte und ein anderes Objekt mit der gleichen Pid von einem anderen Typ * erstellen könnte */ final DynamicObjectType dynamicObjectType = (DynamicObjectType) connection.getDataModel().getType(Constants.Pids.TypeDynamicObject); if (dynamicObjectType == null) throw new IllegalStateException( Constants.Pids.TypeDynamicObject + " konnte nicht gefunden werden"); final Listener objectCreateDeleteListener = new Listener(); dynamicObjectType.addInvalidationListener(objectCreateDeleteListener); dynamicObjectType.addObjectCreationListener(objectCreateDeleteListener); } }
@Override public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; final KExDaVObject other = (KExDaVObject) o; if (!_objectSpecification.equals(other._objectSpecification)) return false; return true; }
@Override public int hashCode() { return _objectSpecification.hashCode(); }
@Override public String toString() { final SystemObject wrappedObject = getWrappedObject(); if (wrappedObject != null) return wrappedObject.getPidOrNameOrId(); return _objectSpecification.toString(); }