Class ProfileServiceImpl

  • All Implemented Interfaces:
    EventListener, ProfileService, org.osgi.framework.BundleListener, org.osgi.framework.SynchronousBundleListener

    public class ProfileServiceImpl
    extends Object
    implements ProfileService, org.osgi.framework.SynchronousBundleListener
    • Constructor Detail

      • ProfileServiceImpl

        public ProfileServiceImpl()
    • Method Detail

      • setBundleContext

        public void setBundleContext​(org.osgi.framework.BundleContext bundleContext)
      • setPersistenceService

        public void setPersistenceService​(PersistenceService persistenceService)
      • setDefinitionsService

        public void setDefinitionsService​(DefinitionsService definitionsService)
      • setSchedulerService

        public void setSchedulerService​(SchedulerService schedulerService)
      • setSegmentService

        public void setSegmentService​(SegmentService segmentService)
      • setForceRefreshOnSave

        public void setForceRefreshOnSave​(boolean forceRefreshOnSave)
      • setPropertiesRefreshInterval

        public void setPropertiesRefreshInterval​(long propertiesRefreshInterval)
      • postConstruct

        public void postConstruct()
      • preDestroy

        public void preDestroy()
      • setPurgeProfileExistTime

        public void setPurgeProfileExistTime​(Integer purgeProfileExistTime)
      • setPurgeProfileInactiveTime

        public void setPurgeProfileInactiveTime​(Integer purgeProfileInactiveTime)
      • setPurgeSessionsAndEventsTime

        @Deprecated
        public void setPurgeSessionsAndEventsTime​(Integer purgeSessionsAndEventsTime)
        Deprecated.
      • setPurgeProfileInterval

        public void setPurgeProfileInterval​(Integer purgeProfileInterval)
      • setPurgeSessionExistTime

        public void setPurgeSessionExistTime​(Integer purgeSessionExistTime)
      • setPurgeEventExistTime

        public void setPurgeEventExistTime​(Integer purgeEventExistTime)
      • reloadPropertyTypes

        public void reloadPropertyTypes​(boolean refresh)
      • purgeProfiles

        public void purgeProfiles​(int inactiveNumberOfDays,
                                  int existsNumberOfDays)
        Description copied from interface: ProfileService
        Purge (delete) profiles example: Purge profile inactive since 10 days only: purgeProfiles(10, 0); example: Purge profile created since 30 days only: purgeProfiles(0, 30);
        Specified by:
        purgeProfiles in interface ProfileService
        Parameters:
        inactiveNumberOfDays - will purge profiles with no visits since this number of days (0 or negative value, will have no effect)
        existsNumberOfDays - will purge profiles created since this number of days (0 or negative value, will have no effect)
      • purgeSessionItems

        public void purgeSessionItems​(int existsNumberOfDays)
        Description copied from interface: ProfileService
        Purge (delete) session items
        Specified by:
        purgeSessionItems in interface ProfileService
        Parameters:
        existsNumberOfDays - will purge sessions created since this number of days (0 or negative value, will have no effect)
      • purgeEventItems

        public void purgeEventItems​(int existsNumberOfDays)
        Description copied from interface: ProfileService
        Purge (delete) event items
        Specified by:
        purgeEventItems in interface ProfileService
        Parameters:
        existsNumberOfDays - will purge events created since this number of days (0 or negative value, will have no effect)
      • purgeMonthlyItems

        @Deprecated
        public void purgeMonthlyItems​(int existsNumberOfMonths)
        Deprecated.
        Description copied from interface: ProfileService
        Use purgeSessionItems and purgeEventItems to remove rollover items instead
        Specified by:
        purgeMonthlyItems in interface ProfileService
        Parameters:
        existsNumberOfMonths - used to remove monthly indices older than this number of months
      • getAllProfilesCount

        public long getAllProfilesCount()
        Description copied from interface: ProfileService
        Retrieves the number of unique profiles.
        Specified by:
        getAllProfilesCount in interface ProfileService
        Returns:
        the number of unique profiles.
      • search

        public <T extends ProfilePartialList<T> search​(Query query,
                                                         Class<T> clazz)
        Description copied from interface: ProfileService
        Retrieves profiles or personas matching the specified query.
        Specified by:
        search in interface ProfileService
        Type Parameters:
        T - the specific sub-type of Profile to retrieve
        Parameters:
        query - a Query specifying which elements to retrieve
        clazz - the class of elements to retrieve
        Returns:
        a PartialList of T instances matching the specified query
      • setPropertyType

        public boolean setPropertyType​(PropertyType property)
        Description copied from interface: ProfileService
        Persists the specified property type in the context server. TODO: move to a different class
        Specified by:
        setPropertyType in interface ProfileService
        Parameters:
        property - the property type to persist
        Returns:
        true if the property type was properly created, false otherwise (for example, if the property type already existed
      • deletePropertyType

        public boolean deletePropertyType​(String propertyId)
        Description copied from interface: ProfileService
        Deletes the property type identified by the specified identifier. TODO: move to a different class
        Specified by:
        deletePropertyType in interface ProfileService
        Parameters:
        propertyId - the identifier of the property type to delete
        Returns:
        true if the property type was properly deleted, false otherwise
      • getExistingProperties

        public Set<PropertyType> getExistingProperties​(String tag,
                                                       String itemType)
        Description copied from interface: ProfileService
        Retrieves the existing property types for the specified type as defined by the Item subclass public field ITEM_TYPE and with the specified tag. TODO: move to a different class
        Specified by:
        getExistingProperties in interface ProfileService
        Parameters:
        tag - the tag we're interested in
        itemType - the String representation of the item type we want to retrieve the count of, as defined by its class' ITEM_TYPE field
        Returns:
        all property types defined for the specified item type and with the specified tag
      • getExistingProperties

        public Set<PropertyType> getExistingProperties​(String tag,
                                                       String itemType,
                                                       boolean systemTag)
        Description copied from interface: ProfileService
        Retrieves the existing property types for the specified type as defined by the Item subclass public field ITEM_TYPE and with the specified tag (system or regular) TODO: move to a different class
        Specified by:
        getExistingProperties in interface ProfileService
        Parameters:
        tag - the tag we're interested in
        itemType - the String representation of the item type we want to retrieve the count of, as defined by its class' ITEM_TYPE field
        systemTag - whether the specified is a system tag or a regular one
        Returns:
        all property types defined for the specified item type and with the specified tag
      • exportProfilesPropertiesToCsv

        public String exportProfilesPropertiesToCsv​(Query query)
        Description copied from interface: ProfileService
        Creates a String containing comma-separated values (CSV) formatted version of profiles matching the specified query.
        Specified by:
        exportProfilesPropertiesToCsv in interface ProfileService
        Parameters:
        query - the query specifying which profiles to export
        Returns:
        a CSV-formatted String version of the profiles matching the specified query
      • findProfilesByPropertyValue

        public PartialList<Profile> findProfilesByPropertyValue​(String propertyName,
                                                                String propertyValue,
                                                                int offset,
                                                                int size,
                                                                String sortBy)
        Description copied from interface: ProfileService
        Find profiles which have the specified property with the specified value, ordered according to the specified sortBy String and paged: only size of them are retrieved, starting with the offset-th one. TODO: replace with version using a query instead of separate parameters TODO: remove as it's unused?
        Specified by:
        findProfilesByPropertyValue in interface ProfileService
        Parameters:
        propertyName - the name of the property we're interested in
        propertyValue - the value of the property we want profiles to have
        offset - zero or a positive integer specifying the position of the first profile in the total ordered collection of matching profiles
        size - a positive integer specifying how many matching profiles should be retrieved or -1 if all of them should be retrieved
        sortBy - an optional (null if no sorting is required) String of comma (,) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:) and an order specifier: asc or desc.
        Returns:
        a PartialList of matching profiles
      • load

        public Profile load​(String profileId)
        Description copied from interface: ProfileService
        Retrieves the profile identified by the specified identifier.
        Specified by:
        load in interface ProfileService
        Parameters:
        profileId - the identifier of the profile to retrieve
        Returns:
        the profile identified by the specified identifier or null if no such profile exists
      • save

        public Profile save​(Profile profile)
        Description copied from interface: ProfileService
        Saves the specified profile in the context server.
        Specified by:
        save in interface ProfileService
        Parameters:
        profile - the profile to be saved
        Returns:
        the newly saved profile
      • addAliasToProfile

        public void addAliasToProfile​(String profileID,
                                      String alias,
                                      String clientID)
        Description copied from interface: ProfileService
        Adds the alias to the profile.
        Specified by:
        addAliasToProfile in interface ProfileService
        Parameters:
        profileID - the identifier of the profile
        alias - the alias which should be linked with of the profile
        clientID - the identifier of the client
      • removeAliasFromProfile

        public ProfileAlias removeAliasFromProfile​(String profileID,
                                                   String alias,
                                                   String clientID)
        Description copied from interface: ProfileService
        Removes the alias from the profile.
        Specified by:
        removeAliasFromProfile in interface ProfileService
        Parameters:
        profileID - the identifier of the profile
        alias - the alias which should be unlinked from the profile
        clientID - the identifier of the client
      • findProfileAliases

        public PartialList<ProfileAlias> findProfileAliases​(String profileId,
                                                            int offset,
                                                            int size,
                                                            String sortBy)
        Description copied from interface: ProfileService
        Find profile aliases which have the specified property with the specified value, ordered according to the specified sortBy String and paged: only size of them are retrieved, starting with the offset-th one.
        Specified by:
        findProfileAliases in interface ProfileService
        Parameters:
        profileId - the identifier of the profile
        offset - zero or a positive integer specifying the position of the first profile in the total ordered collection of matching profiles
        size - a positive integer specifying how many matching profiles should be retrieved or -1 if all of them should be retrieved
        sortBy - an optional (null if no sorting is required) String of comma (,) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:) and an order specifier: asc or desc.
        Returns:
        a PartialList of matching profiles
      • saveOrMerge

        public Profile saveOrMerge​(Profile profile)
        Description copied from interface: ProfileService
        Merge the specified profile properties in an existing profile,or save new profile if it does not exist yet
        Specified by:
        saveOrMerge in interface ProfileService
        Parameters:
        profile - the profile to be saved
        Returns:
        the newly saved or merged profile or null if the save or merge operation failed.
      • savePersona

        public Persona savePersona​(Persona profile)
        Description copied from interface: ProfileService
        Persists the specified Persona in the context server.
        Specified by:
        savePersona in interface ProfileService
        Parameters:
        profile - the persona to persist
        Returns:
        the newly persisted persona
      • delete

        public void delete​(String profileId,
                           boolean persona)
        Description copied from interface: ProfileService
        Removes the profile (or persona if the persona parameter is set to true) identified by the specified identifier.
        Specified by:
        delete in interface ProfileService
        Parameters:
        profileId - the identifier of the profile or persona to delete
        persona - true if the specified identifier is supposed to refer to a persona, false if it is supposed to refer to a profile
      • mergeProfiles

        public Profile mergeProfiles​(Profile masterProfile,
                                     List<Profile> profilesToMerge)
        Description copied from interface: ProfileService
        Merges the specified profiles into the provided so-called master profile, merging properties according to the PropertyMergeStrategyType specified on their PropertyType.
        Specified by:
        mergeProfiles in interface ProfileService
        Parameters:
        masterProfile - the profile into which the specified profiles will be merged
        profilesToMerge - the list of profiles to merge into the specified master profile
        Returns:
        the merged profile
      • getProfileSessions

        public PartialList<Session> getProfileSessions​(String profileId,
                                                       String query,
                                                       int offset,
                                                       int size,
                                                       String sortBy)
        Description copied from interface: ProfileService
        Retrieves the sessions associated with the profile identified by the specified identifier that match the specified query (if specified), ordered according to the specified sortBy String and and paged: only size of them are retrieved, starting with the offset-th one. TODO: use a Query object instead of distinct parameter
        Specified by:
        getProfileSessions in interface ProfileService
        Parameters:
        profileId - the identifier of the profile we want to retrieve sessions from
        query - a String of text used for fulltext filtering which sessions we are interested in or null (or an empty String) if we want to retrieve all sessions
        offset - zero or a positive integer specifying the position of the first session in the total ordered collection of matching sessions
        size - a positive integer specifying how many matching sessions should be retrieved or -1 if all of them should be retrieved
        sortBy - an optional (null if no sorting is required) String of comma (,) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:) and an order specifier: asc or desc.
        Returns:
        a PartialList of matching sessions
      • loadSession

        public Session loadSession​(String sessionId,
                                   Date dateHint)
        Description copied from interface: ProfileService
        Retrieves the session identified by the specified identifier.
        Specified by:
        loadSession in interface ProfileService
        Parameters:
        sessionId - the identifier of the session to be retrieved
        dateHint - a Date helping in identifying where the item is located
        Returns:
        the session identified by the specified identifier
      • loadSession

        public Session loadSession​(String sessionId)
        Description copied from interface: ProfileService
        Retrieves the session identified by the specified identifier.
        Specified by:
        loadSession in interface ProfileService
        Parameters:
        sessionId - the identifier of the session to be retrieved
        Returns:
        the session identified by the specified identifier
      • saveSession

        public Session saveSession​(Session session)
        Description copied from interface: ProfileService
        Saves the specified session.
        Specified by:
        saveSession in interface ProfileService
        Parameters:
        session - the session to be saved
        Returns:
        the newly saved session
      • findProfileSessions

        public PartialList<Session> findProfileSessions​(String profileId)
        Description copied from interface: ProfileService
        Retrieves sessions associated with the profile identified by the specified identifier.
        Specified by:
        findProfileSessions in interface ProfileService
        Parameters:
        profileId - the profile id for which we want to retrieve the sessions
        Returns:
        a PartialList of the profile's sessions
      • removeProfileSessions

        public void removeProfileSessions​(String profileId)
        Description copied from interface: ProfileService
        Removes all sessions of the specified profile
        Specified by:
        removeProfileSessions in interface ProfileService
        Parameters:
        profileId - identifier of the profile that we want to remove it's sessions
      • matchCondition

        public boolean matchCondition​(Condition condition,
                                      Profile profile,
                                      Session session)
        Description copied from interface: ProfileService
        Checks whether the specified profile and/or session satisfy the specified condition.
        Specified by:
        matchCondition in interface ProfileService
        Parameters:
        condition - the condition we're testing against which might or might not have profile- or session-specific sub-conditions
        profile - the profile we're testing
        session - the session we're testing
        Returns:
        true if the profile and/or sessions match the specified condition, false otherwise
      • loadPersona

        public Persona loadPersona​(String personaId)
        Description copied from interface: ProfileService
        Retrieves the persona identified by the specified identifier.
        Specified by:
        loadPersona in interface ProfileService
        Parameters:
        personaId - the identifier of the persona to retrieve
        Returns:
        the persona associated with the specified identifier or null if no such persona exists.
      • loadPersonaWithSessions

        public PersonaWithSessions loadPersonaWithSessions​(String personaId)
        Description copied from interface: ProfileService
        Retrieves the persona identified by the specified identifier and all its associated sessions
        Specified by:
        loadPersonaWithSessions in interface ProfileService
        Parameters:
        personaId - the identifier of the persona to retrieve
        Returns:
        a PersonaWithSessions instance with the persona identified by the specified identifier and all its associated sessions
      • createPersona

        public Persona createPersona​(String personaId)
        Description copied from interface: ProfileService
        Creates a persona with the specified identifier and automatically creates an associated session with it.
        Specified by:
        createPersona in interface ProfileService
        Parameters:
        personaId - the identifier to use for the new persona
        Returns:
        the newly created persona
      • getTargetPropertyTypes

        public Collection<PropertyType> getTargetPropertyTypes​(String target)
        Description copied from interface: ProfileService
        Retrieves all the property types associated with the specified target. TODO: move to a different class
        Specified by:
        getTargetPropertyTypes in interface ProfileService
        Parameters:
        target - the target for which we want to retrieve the associated property types
        Returns:
        a collection of all the property types associated with the specified target
      • getPropertyTypeByTag

        public Set<PropertyType> getPropertyTypeByTag​(String tag)
        Description copied from interface: ProfileService
        Retrieves all property types with the specified tag TODO: move to a different class
        Specified by:
        getPropertyTypeByTag in interface ProfileService
        Parameters:
        tag - the tag name marking property types we want to retrieve
        Returns:
        a Set of the property types with the specified tag
      • getPropertyTypeBySystemTag

        public Set<PropertyType> getPropertyTypeBySystemTag​(String tag)
        Description copied from interface: ProfileService
        Retrieves all property types with the specified system tag TODO: move to a different class
        Specified by:
        getPropertyTypeBySystemTag in interface ProfileService
        Parameters:
        tag - the system tag name marking property types we want to retrieve
        Returns:
        a Set of the property types with the specified system tag
      • getPropertyType

        public PropertyType getPropertyType​(String id)
        Description copied from interface: ProfileService
        Retrieves the property type identified by the specified identifier. TODO: move to a different class
        Specified by:
        getPropertyType in interface ProfileService
        Parameters:
        id - the identifier of the property type to retrieve
        Returns:
        the property type identified by the specified identifier or null if no such property type exists
      • getPersonaSessions

        public PartialList<Session> getPersonaSessions​(String personaId,
                                                       int offset,
                                                       int size,
                                                       String sortBy)
        Description copied from interface: ProfileService
        Retrieves the sessions associated with the persona identified by the specified identifier, ordered according to the specified sortBy String and and paged: only size of them are retrieved, starting with the offset-th one.
        Specified by:
        getPersonaSessions in interface ProfileService
        Parameters:
        personaId - the persona id
        offset - zero or a positive integer specifying the position of the first session in the total ordered collection of matching sessions
        size - a positive integer specifying how many matching sessions should be retrieved or -1 if all of them should be retrieved
        sortBy - an optional (null if no sorting is required) String of comma (,) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:) and an order specifier: asc or desc.
        Returns:
        a PartialList of sessions for the persona identified by the specified identifier
      • setPropertyTypeTarget

        public void setPropertyTypeTarget​(URL predefinedPropertyTypeURL,
                                          PropertyType propertyType)
        Description copied from interface: ProfileService
        This function will try to set the target on the property type if not set already, based on the file URL
        Specified by:
        setPropertyTypeTarget in interface ProfileService
        Parameters:
        predefinedPropertyTypeURL - the URL to extract the target from if the target is not yet. By default it will use the 5's part after a "/" character
        propertyType - the property type to register
      • bundleChanged

        public void bundleChanged​(org.osgi.framework.BundleEvent event)
        Specified by:
        bundleChanged in interface org.osgi.framework.BundleListener
      • refresh

        public void refresh()
        Description copied from interface: ProfileService
        Forces a refresh of the profile service, to load data from persistence immediately instead of waiting for scheduled tasks to execute. Warning : this may have serious impacts on performance so it should only be used in specific scenarios such as integration tests.
        Specified by:
        refresh in interface ProfileService