Class CachedPubSubRepository<T>

  • All Implemented Interfaces:
    tigase.kernel.beans.Initializable, IItems.IListnener, IPubSubRepository, tigase.stats.StatisticHolder, tigase.xmpp.mam.MAMRepository<Query,​tigase.xmpp.mam.MAMRepository.Item>

    @Bean(name="repository",
          parent=PubSubComponent.class,
          active=true)
    public class CachedPubSubRepository<T>
    extends java.lang.Object
    implements IPubSubRepository, tigase.stats.StatisticHolder, tigase.kernel.beans.Initializable, IItems.IListnener
    Implementation of IPubSubRepository interface providing access to the database for data storage with caching.
    Version:
    5.0.0, 2010.03.27 at 05:20:46 GMT
    Author:
    Artur Hefczyc
    • Constructor Detail

      • CachedPubSubRepository

        public CachedPubSubRepository()
    • Method Detail

      • isServiceAutoCreated

        protected boolean isServiceAutoCreated()
      • addToRootCollection

        public void addToRootCollection​(tigase.xmpp.jid.BareJID serviceJid,
                                        java.lang.String nodeName)
                                 throws tigase.component.exceptions.RepositoryException
        Specified by:
        addToRootCollection in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • createNode

        public void createNode​(tigase.xmpp.jid.BareJID serviceJid,
                               java.lang.String nodeName,
                               tigase.xmpp.jid.BareJID ownerJid,
                               AbstractNodeConfig nodeConfig,
                               NodeType nodeType,
                               java.lang.String collection)
                        throws tigase.component.exceptions.RepositoryException,
                               PubSubException
        Specified by:
        createNode in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
        PubSubException
      • createService

        public void createService​(tigase.xmpp.jid.BareJID serviceJID,
                                  boolean isPublic)
                           throws tigase.component.exceptions.RepositoryException
        Specified by:
        createService in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • getServices

        public java.util.List<tigase.xmpp.jid.BareJID> getServices​(tigase.xmpp.jid.BareJID domain,
                                                                   java.lang.Boolean isPublic)
                                                            throws tigase.component.exceptions.RepositoryException
        Specified by:
        getServices in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • deleteNode

        public void deleteNode​(tigase.xmpp.jid.BareJID serviceJid,
                               java.lang.String nodeName)
                        throws tigase.component.exceptions.RepositoryException
        Specified by:
        deleteNode in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • everyHour

        public void everyHour()
        Specified by:
        everyHour in interface tigase.stats.StatisticHolder
      • everyMinute

        public void everyMinute()
        Specified by:
        everyMinute in interface tigase.stats.StatisticHolder
      • everySecond

        public void everySecond()
        Specified by:
        everySecond in interface tigase.stats.StatisticHolder
      • updateNodeConfiguration

        protected void updateNodeConfiguration​(tigase.xmpp.jid.BareJID serviceJID,
                                               java.lang.String nodeName,
                                               tigase.form.Form config)
      • getChildNodes

        public java.lang.String[] getChildNodes​(tigase.xmpp.jid.BareJID serviceJid,
                                                java.lang.String nodeName)
                                         throws tigase.component.exceptions.RepositoryException
        Specified by:
        getChildNodes in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • getNodeAffiliations

        public IAffiliations getNodeAffiliations​(tigase.xmpp.jid.BareJID serviceJid,
                                                 java.lang.String nodeName)
                                          throws tigase.component.exceptions.RepositoryException
        Specified by:
        getNodeAffiliations in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • getNodeConfig

        public AbstractNodeConfig getNodeConfig​(tigase.xmpp.jid.BareJID serviceJid,
                                                java.lang.String nodeName)
                                         throws tigase.component.exceptions.RepositoryException
        Specified by:
        getNodeConfig in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • getNodeMeta

        public INodeMeta getNodeMeta​(tigase.xmpp.jid.BareJID serviceJid,
                                     java.lang.String nodeName)
                              throws tigase.component.exceptions.RepositoryException
        Specified by:
        getNodeMeta in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • getNodeItems

        public IItems getNodeItems​(tigase.xmpp.jid.BareJID serviceJid,
                                   java.lang.String nodeName)
                            throws tigase.component.exceptions.RepositoryException
        Specified by:
        getNodeItems in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • getNodeItems

        public java.util.List<IItems.IItem> getNodeItems​(tigase.xmpp.jid.BareJID serviceJid,
                                                         java.lang.String nodeName,
                                                         tigase.xmpp.jid.JID requester,
                                                         java.util.Date after,
                                                         java.util.Date before,
                                                         tigase.xmpp.rsm.RSM rsm)
                                                  throws tigase.component.exceptions.ComponentException,
                                                         tigase.component.exceptions.RepositoryException
        Specified by:
        getNodeItems in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.ComponentException
        tigase.component.exceptions.RepositoryException
      • getNodeSubscriptions

        public ISubscriptions getNodeSubscriptions​(tigase.xmpp.jid.BareJID serviceJid,
                                                   java.lang.String nodeName)
                                            throws tigase.component.exceptions.RepositoryException
        Specified by:
        getNodeSubscriptions in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • getNodesCount

        public long getNodesCount​(tigase.xmpp.jid.BareJID serviceJID)
                           throws tigase.component.exceptions.RepositoryException
        Specified by:
        getNodesCount in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • setDao

        public void setDao​(IPubSubDAO<T,​tigase.db.DataSource,​Query> dao)
      • getRootCollection

        public java.lang.String[] getRootCollection​(tigase.xmpp.jid.BareJID serviceJid)
                                             throws tigase.component.exceptions.RepositoryException
        Specified by:
        getRootCollection in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • getStatistics

        public void getStatistics​(java.lang.String name,
                                  tigase.stats.StatisticsList stats)
        Specified by:
        getStatistics in interface tigase.stats.StatisticHolder
      • getUserAffiliations

        public java.util.Map<java.lang.String,​UsersAffiliation> getUserAffiliations​(tigase.xmpp.jid.BareJID serviceJid,
                                                                                          tigase.xmpp.jid.BareJID jid)
                                                                                   throws tigase.component.exceptions.RepositoryException
        Specified by:
        getUserAffiliations in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • getUserRoster

        public java.util.Map<tigase.xmpp.jid.BareJID,​tigase.xmpp.impl.roster.RosterElement> getUserRoster​(tigase.xmpp.jid.BareJID owner)
                                                                                                         throws tigase.component.exceptions.RepositoryException
        Specified by:
        getUserRoster in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • getUserSubscriptions

        public java.util.Map<java.lang.String,​UsersSubscription> getUserSubscriptions​(tigase.xmpp.jid.BareJID serviceJid,
                                                                                            tigase.xmpp.jid.BareJID userJid)
                                                                                     throws tigase.component.exceptions.RepositoryException
        Specified by:
        getUserSubscriptions in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • initialize

        public void initialize()
        Specified by:
        initialize in interface tigase.kernel.beans.Initializable
      • queryItems

        public void queryItems​(Query query,
                               tigase.xmpp.mam.MAMRepository.ItemHandler<Query,​tigase.xmpp.mam.MAMRepository.Item> itemHandler)
                        throws tigase.component.exceptions.RepositoryException,
                               tigase.component.exceptions.ComponentException
        Specified by:
        queryItems in interface tigase.xmpp.mam.MAMRepository<Query,​tigase.xmpp.mam.MAMRepository.Item>
        Throws:
        tigase.component.exceptions.RepositoryException
        tigase.component.exceptions.ComponentException
      • newQuery

        public Query newQuery()
        Specified by:
        newQuery in interface tigase.xmpp.mam.MAMRepository<Query,​tigase.xmpp.mam.MAMRepository.Item>
      • removeFromRootCollection

        public void removeFromRootCollection​(tigase.xmpp.jid.BareJID serviceJid,
                                             java.lang.String nodeName)
                                      throws tigase.component.exceptions.RepositoryException
        Specified by:
        removeFromRootCollection in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • setStatisticsPrefix

        public void setStatisticsPrefix​(java.lang.String prefix)
        Specified by:
        setStatisticsPrefix in interface tigase.stats.StatisticHolder
      • statisticExecutedIn

        public void statisticExecutedIn​(long executionTime)
        Specified by:
        statisticExecutedIn in interface tigase.stats.StatisticHolder
      • update

        public void update​(tigase.xmpp.jid.BareJID serviceJid,
                           java.lang.String nodeName,
                           IAffiliations nodeAffiliations)
                    throws tigase.component.exceptions.RepositoryException
        Specified by:
        update in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • update

        public void update​(tigase.xmpp.jid.BareJID serviceJid,
                           java.lang.String nodeName,
                           ISubscriptions nodeSubscriptions)
                    throws tigase.component.exceptions.RepositoryException
        Specified by:
        update in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • deleteService

        public void deleteService​(tigase.xmpp.jid.BareJID userJid)
                           throws tigase.component.exceptions.RepositoryException
        Specified by:
        deleteService in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • addMAMItem

        public void addMAMItem​(tigase.xmpp.jid.BareJID serviceJid,
                               java.lang.String nodeName,
                               java.lang.String uuid,
                               tigase.xml.Element message,
                               java.lang.String itemId)
                        throws tigase.component.exceptions.RepositoryException
        Specified by:
        addMAMItem in interface IPubSubRepository
        Throws:
        tigase.component.exceptions.RepositoryException
      • itemWritten

        public void itemWritten​(tigase.xmpp.jid.BareJID serviceJID,
                                java.lang.String node,
                                java.lang.String id,
                                java.lang.String publisher,
                                tigase.xml.Element item,
                                java.lang.String uuid)
        Specified by:
        itemWritten in interface IItems.IListnener
      • itemDeleted

        public void itemDeleted​(tigase.xmpp.jid.BareJID serviceJID,
                                java.lang.String node,
                                java.lang.String id)
        Specified by:
        itemDeleted in interface IItems.IListnener
      • getNode

        protected Node getNode​(tigase.xmpp.jid.BareJID serviceJid,
                               java.lang.String nodeName)
                        throws tigase.component.exceptions.RepositoryException
        Throws:
        tigase.component.exceptions.RepositoryException
      • loadNode

        protected Node loadNode​(tigase.xmpp.jid.BareJID serviceJid,
                                java.lang.String nodeName)
                         throws tigase.component.exceptions.RepositoryException
        Throws:
        tigase.component.exceptions.RepositoryException
      • newNodeAffiliations

        protected IAffiliationsCached newNodeAffiliations​(tigase.xmpp.jid.BareJID serviceJid,
                                                          java.lang.String nodeName,
                                                          T nodeId,
                                                          IPubSubRepository.RepositorySupplier<java.util.Map<tigase.xmpp.jid.BareJID,​UsersAffiliation>> affiliationSupplier)
                                                   throws tigase.component.exceptions.RepositoryException
        Throws:
        tigase.component.exceptions.RepositoryException
      • newNodeSubscriptions

        protected ISubscriptionsCached newNodeSubscriptions​(tigase.xmpp.jid.BareJID serviceJid,
                                                            java.lang.String nodeName,
                                                            T nodeId,
                                                            IPubSubRepository.RepositorySupplier<java.util.Map<tigase.xmpp.jid.BareJID,​UsersSubscription>> subscriptionsSupplier)
                                                     throws tigase.component.exceptions.RepositoryException
        Throws:
        tigase.component.exceptions.RepositoryException
      • getNodeFromCache

        protected Node getNodeFromCache​(tigase.xmpp.jid.BareJID serviceJid,
                                        java.lang.String nodeName)
      • getRootCollectionSet

        protected IPubSubRepository.RootCollectionSetIfc getRootCollectionSet​(tigase.xmpp.jid.BareJID serviceJid)
                                                                       throws tigase.component.exceptions.RepositoryException
        Throws:
        tigase.component.exceptions.RepositoryException
      • loadRootCollections

        protected void loadRootCollections​(CachedPubSubRepository.RootCollectionSet rootCollection)
                                    throws tigase.component.exceptions.RepositoryException
        Throws:
        tigase.component.exceptions.RepositoryException
      • getNodeAndSubnodes

        protected java.util.List<Node<T>> getNodeAndSubnodes​(tigase.xmpp.jid.BareJID serviceJid,
                                                             java.lang.String nodeName,
                                                             java.util.function.Predicate<Node<T>> filterWithSubnodes,
                                                             java.util.function.Predicate<Node<T>> filter)
                                                      throws tigase.component.exceptions.RepositoryException,
                                                             tigase.component.exceptions.ComponentException
        Throws:
        tigase.component.exceptions.RepositoryException
        tigase.component.exceptions.ComponentException
      • hasAccessPermission

        protected boolean hasAccessPermission​(Node node,
                                              tigase.xmpp.jid.JID requester,
                                              PubSubLogic.Action action)
      • serviceRemoved

        protected void serviceRemoved​(tigase.xmpp.jid.BareJID userJid)
      • nodeCollectionChanged

        protected void nodeCollectionChanged​(tigase.xmpp.jid.BareJID serviceJid,
                                             java.lang.String nodeName,
                                             java.lang.String oldCollection,
                                             java.lang.String newCollection)
      • saveNode

        protected void saveNode​(Node<T> node,
                                int iteration)
                         throws tigase.component.exceptions.RepositoryException
        Throws:
        tigase.component.exceptions.RepositoryException