Package org.apache.unomi.api.services
Interface ProfileService
-
- All Known Implementing Classes:
ProfileServiceImpl
public interface ProfileService
-
-
Field Summary
Fields Modifier and Type Field Description static StringPERSONAL_IDENTIFIER_TAG_NAME
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Deprecated Methods Modifier and Type Method Description voidaddAliasToProfile(String profileID, String alias, String clientID)Adds the alias to the profile.voidbatchProfilesUpdate(BatchUpdate update)Update all profiles in batch according to the specifiedBatchUpdatePersonacreatePersona(String personaId)Creates a persona with the specified identifier and automatically creates an associated session with it.voiddelete(String profileId, boolean persona)Removes the profile (or persona if thepersonaparameter is set totrue) identified by the specified identifier.booleandeletePropertyType(String propertyId)Deletes the property type identified by the specified identifier.StringexportProfilesPropertiesToCsv(Query query)Creates a String containing comma-separated values (CSV) formatted version of profiles matching the specified query.PartialList<ProfileAlias>findProfileAliases(String profileId, int offset, int size, String sortBy)Find profile aliases which have the specified property with the specified value, ordered according to the specifiedsortByString and paged: onlysizeof them are retrieved, starting with theoffset-th one.PartialList<Profile>findProfilesByPropertyValue(String propertyName, String propertyValue, int offset, int size, String sortBy)Find profiles which have the specified property with the specified value, ordered according to the specifiedsortByString and paged: onlysizeof them are retrieved, starting with theoffset-th one.PartialList<Session>findProfileSessions(String profileId)Retrieves sessions associated with the profile identified by the specified identifier.longgetAllProfilesCount()Retrieves the number of unique profiles.Set<PropertyType>getExistingProperties(String tag, String itemType)Retrieves the existing property types for the specified type as defined by the Item subclass public fieldITEM_TYPEand with the specified tag.Set<PropertyType>getExistingProperties(String tag, String itemType, boolean systemTag)Retrieves the existing property types for the specified type as defined by the Item subclass public fieldITEM_TYPEand with the specified tag (system or regular) TODO: move to a different classPartialList<Session>getPersonaSessions(String personaId, int offset, int size, String sortBy)Retrieves the sessions associated with the persona identified by the specified identifier, ordered according to the specifiedsortByString and and paged: onlysizeof them are retrieved, starting with theoffset-th one.PartialList<Session>getProfileSessions(String profileId, String query, int offset, int size, String sortBy)Retrieves the sessions associated with the profile identified by the specified identifier that match the specified query (if specified), ordered according to the specifiedsortByString and and paged: onlysizeof them are retrieved, starting with theoffset-th one.PropertyTypegetPropertyType(String id)Retrieves the property type identified by the specified identifier.Collection<PropertyType>getPropertyTypeByMapping(String propertyName)TODOSet<PropertyType>getPropertyTypeBySystemTag(String tag)Retrieves all property types with the specified system tag TODO: move to a different classSet<PropertyType>getPropertyTypeByTag(String tag)Retrieves all property types with the specified tag TODO: move to a different classStringgetPropertyTypeMapping(String fromPropertyTypeId)TODOMap<String,Collection<PropertyType>>getTargetPropertyTypes()Retrieves all known property types.Collection<PropertyType>getTargetPropertyTypes(String target)Retrieves all the property types associated with the specified target.Profileload(String profileId)Retrieves the profile identified by the specified identifier.PersonaloadPersona(String personaId)Retrieves the persona identified by the specified identifier.PersonaWithSessionsloadPersonaWithSessions(String personaId)Retrieves the persona identified by the specified identifier and all its associated sessionsdefault SessionloadSession(String sessionId)Retrieves the session identified by the specified identifier.SessionloadSession(String sessionId, Date dateHint)Deprecated.dateHintis not supported anymore, please useloadSession(String)booleanmatchCondition(Condition condition, Profile profile, Session session)Checks whether the specified profile and/or session satisfy the specified condition.ProfilemergeProfiles(Profile masterProfile, List<Profile> profilesToMerge)Merges the specified profiles into the provided so-called master profile, merging properties according to thePropertyMergeStrategyTypespecified on theirPropertyType.voidpurgeEventItems(int existsNumberOfDays)Purge (delete) event itemsvoidpurgeMonthlyItems(int existsNumberOfMonths)Deprecated.voidpurgeProfiles(int inactiveNumberOfDays, int existsNumberOfDays)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);voidpurgeSessionItems(int existsNumberOfDays)Purge (delete) session itemsvoidrefresh()Forces a refresh of the profile service, to load data from persistence immediately instead of waiting for scheduled tasks to execute.ProfileAliasremoveAliasFromProfile(String profileID, String alias, String clientID)Removes the alias from the profile.voidremoveProfileSessions(String profileId)Removes all sessions of the specified profileProfilesave(Profile profile)Saves the specified profile in the context server.ProfilesaveOrMerge(Profile profile)Merge the specified profile properties in an existing profile,or save new profile if it does not exist yetPersonasavePersona(Persona persona)Persists the specifiedPersonain the context server.PersonaWithSessionssavePersonaWithSessions(PersonaWithSessions personaToSave)Save a persona with its sessions.SessionsaveSession(Session session)Saves the specified session.<T extends Profile>
PartialList<T>search(Query query, Class<T> clazz)Retrieves profiles or personas matching the specified query.PartialList<Session>searchSessions(Query query)Retrieves sessions matching the specified query.booleansetPropertyType(PropertyType property)Persists the specified property type in the context server.voidsetPropertyTypeTarget(URL predefinedPropertyTypeURL, PropertyType propertyType)This function will try to set the target on the property type if not set already, based on the file URL
-
-
-
Field Detail
-
PERSONAL_IDENTIFIER_TAG_NAME
static final String PERSONAL_IDENTIFIER_TAG_NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
getAllProfilesCount
long getAllProfilesCount()
Retrieves the number of unique profiles.- Returns:
- the number of unique profiles.
-
search
<T extends Profile> PartialList<T> search(Query query, Class<T> clazz)
Retrieves profiles or personas matching the specified query.- Type Parameters:
T- the specific sub-type ofProfileto retrieve- Parameters:
query- aQueryspecifying which elements to retrieveclazz- the class of elements to retrieve- Returns:
- a
PartialListofTinstances matching the specified query
-
searchSessions
PartialList<Session> searchSessions(Query query)
Retrieves sessions matching the specified query.- Parameters:
query- aQueryspecifying which elements to retrieve- Returns:
- a
PartialListof sessions matching the specified query
-
exportProfilesPropertiesToCsv
String exportProfilesPropertiesToCsv(Query query)
Creates a String containing comma-separated values (CSV) formatted version of profiles matching the specified query.- Parameters:
query- the query specifying which profiles to export- Returns:
- a CSV-formatted String version of the profiles matching the specified query
-
findProfilesByPropertyValue
PartialList<Profile> findProfilesByPropertyValue(String propertyName, String propertyValue, int offset, int size, String sortBy)
Find profiles which have the specified property with the specified value, ordered according to the specifiedsortByString and paged: onlysizeof them are retrieved, starting with theoffset-th one. TODO: replace with version using a query instead of separate parameters TODO: remove as it's unused?- Parameters:
propertyName- the name of the property we're interested inpropertyValue- the value of the property we want profiles to haveoffset- zero or a positive integer specifying the position of the first profile in the total ordered collection of matching profilessize- a positive integer specifying how many matching profiles should be retrieved or-1if all of them should be retrievedsortBy- an optional (nullif 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:ascordesc.- Returns:
- a
PartialListof matching profiles
-
mergeProfiles
Profile mergeProfiles(Profile masterProfile, List<Profile> profilesToMerge)
Merges the specified profiles into the provided so-called master profile, merging properties according to thePropertyMergeStrategyTypespecified on theirPropertyType.- Parameters:
masterProfile- the profile into which the specified profiles will be mergedprofilesToMerge- the list of profiles to merge into the specified master profile- Returns:
- the merged profile
-
load
Profile load(String profileId)
Retrieves the profile identified by the specified identifier.- Parameters:
profileId- the identifier of the profile to retrieve- Returns:
- the profile identified by the specified identifier or
nullif no such profile exists
-
save
Profile save(Profile profile)
Saves the specified profile in the context server.- Parameters:
profile- the profile to be saved- Returns:
- the newly saved profile
-
addAliasToProfile
void addAliasToProfile(String profileID, String alias, String clientID)
Adds the alias to the profile.- Parameters:
profileID- the identifier of the profilealias- the alias which should be linked with of the profileclientID- the identifier of the client
-
removeAliasFromProfile
ProfileAlias removeAliasFromProfile(String profileID, String alias, String clientID)
Removes the alias from the profile.- Parameters:
profileID- the identifier of the profilealias- the alias which should be unlinked from the profileclientID- the identifier of the client
-
findProfileAliases
PartialList<ProfileAlias> findProfileAliases(String profileId, int offset, int size, String sortBy)
Find profile aliases which have the specified property with the specified value, ordered according to the specifiedsortByString and paged: onlysizeof them are retrieved, starting with theoffset-th one.- Parameters:
profileId- the identifier of the profileoffset- zero or a positive integer specifying the position of the first profile in the total ordered collection of matching profilessize- a positive integer specifying how many matching profiles should be retrieved or-1if all of them should be retrievedsortBy- an optional (nullif 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:ascordesc.- Returns:
- a
PartialListof matching profiles
-
saveOrMerge
Profile saveOrMerge(Profile profile)
Merge the specified profile properties in an existing profile,or save new profile if it does not exist yet- Parameters:
profile- the profile to be saved- Returns:
- the newly saved or merged profile or null if the save or merge operation failed.
-
delete
void delete(String profileId, boolean persona)
Removes the profile (or persona if thepersonaparameter is set totrue) identified by the specified identifier.- Parameters:
profileId- the identifier of the profile or persona to deletepersona-trueif the specified identifier is supposed to refer to a persona,falseif it is supposed to refer to a profile
-
getProfileSessions
PartialList<Session> getProfileSessions(String profileId, String query, int offset, int size, String sortBy)
Retrieves the sessions associated with the profile identified by the specified identifier that match the specified query (if specified), ordered according to the specifiedsortByString and and paged: onlysizeof them are retrieved, starting with theoffset-th one. TODO: use a Query object instead of distinct parameter- Parameters:
profileId- the identifier of the profile we want to retrieve sessions fromquery- a String of text used for fulltext filtering which sessions we are interested in ornull(or an empty String) if we want to retrieve all sessionsoffset- zero or a positive integer specifying the position of the first session in the total ordered collection of matching sessionssize- a positive integer specifying how many matching sessions should be retrieved or-1if all of them should be retrievedsortBy- an optional (nullif 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:ascordesc.- Returns:
- a
PartialListof matching sessions
-
loadSession
@Deprecated Session loadSession(String sessionId, Date dateHint)
Deprecated.dateHintis not supported anymore, please useloadSession(String)Retrieves the session identified by the specified identifier.- Parameters:
sessionId- the identifier of the session to be retrieveddateHint- a Date helping in identifying where the item is located- Returns:
- the session identified by the specified identifier
-
loadSession
default Session loadSession(String sessionId)
Retrieves the session identified by the specified identifier.- Parameters:
sessionId- the identifier of the session to be retrieved- Returns:
- the session identified by the specified identifier
-
saveSession
Session saveSession(Session session)
Saves the specified session.- Parameters:
session- the session to be saved- Returns:
- the newly saved session
-
findProfileSessions
PartialList<Session> findProfileSessions(String profileId)
Retrieves sessions associated with the profile identified by the specified identifier.- Parameters:
profileId- the profile id for which we want to retrieve the sessions- Returns:
- a
PartialListof the profile's sessions
-
removeProfileSessions
void removeProfileSessions(String profileId)
Removes all sessions of the specified profile- Parameters:
profileId- identifier of the profile that we want to remove it's sessions
-
matchCondition
boolean matchCondition(Condition condition, Profile profile, Session session)
Checks whether the specified profile and/or session satisfy the specified condition.- Parameters:
condition- the condition we're testing against which might or might not have profile- or session-specific sub-conditionsprofile- the profile we're testingsession- the session we're testing- Returns:
trueif the profile and/or sessions match the specified condition,falseotherwise
-
batchProfilesUpdate
void batchProfilesUpdate(BatchUpdate update)
Update all profiles in batch according to the specifiedBatchUpdate- Parameters:
update- the batch update specification
-
loadPersona
Persona loadPersona(String personaId)
Retrieves the persona identified by the specified identifier.- Parameters:
personaId- the identifier of the persona to retrieve- Returns:
- the persona associated with the specified identifier or
nullif no such persona exists.
-
savePersona
Persona savePersona(Persona persona)
Persists the specifiedPersonain the context server.- Parameters:
persona- the persona to persist- Returns:
- the newly persisted persona
-
loadPersonaWithSessions
PersonaWithSessions loadPersonaWithSessions(String personaId)
Retrieves the persona identified by the specified identifier and all its associated sessions- Parameters:
personaId- the identifier of the persona to retrieve- Returns:
- a
PersonaWithSessionsinstance with the persona identified by the specified identifier and all its associated sessions
-
createPersona
Persona createPersona(String personaId)
Creates a persona with the specified identifier and automatically creates an associated session with it.- Parameters:
personaId- the identifier to use for the new persona- Returns:
- the newly created persona
-
getPersonaSessions
PartialList<Session> getPersonaSessions(String personaId, int offset, int size, String sortBy)
Retrieves the sessions associated with the persona identified by the specified identifier, ordered according to the specifiedsortByString and and paged: onlysizeof them are retrieved, starting with theoffset-th one.- Parameters:
personaId- the persona idoffset- zero or a positive integer specifying the position of the first session in the total ordered collection of matching sessionssize- a positive integer specifying how many matching sessions should be retrieved or-1if all of them should be retrievedsortBy- an optional (nullif 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:ascordesc.- Returns:
- a
PartialListof sessions for the persona identified by the specified identifier
-
savePersonaWithSessions
PersonaWithSessions savePersonaWithSessions(PersonaWithSessions personaToSave)
Save a persona with its sessions.- Parameters:
personaToSave- the persona object containing all the persona information and sessions- Returns:
- the persona with sessions
-
getTargetPropertyTypes
Collection<PropertyType> getTargetPropertyTypes(String target)
Retrieves all the property types associated with the specified target. TODO: move to a different class- 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
-
getTargetPropertyTypes
Map<String,Collection<PropertyType>> getTargetPropertyTypes()
Retrieves all known property types. TODO: move to a different class TODO: use Map instead of HashMap- Returns:
- a Map associating targets as keys to related
PropertyTypes
-
getPropertyTypeByTag
Set<PropertyType> getPropertyTypeByTag(String tag)
Retrieves all property types with the specified tag TODO: move to a different class- Parameters:
tag- the tag name marking property types we want to retrieve- Returns:
- a Set of the property types with the specified tag
-
getPropertyTypeBySystemTag
Set<PropertyType> getPropertyTypeBySystemTag(String tag)
Retrieves all property types with the specified system tag TODO: move to a different class- 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
-
getPropertyTypeMapping
String getPropertyTypeMapping(String fromPropertyTypeId)
TODO- Parameters:
fromPropertyTypeId- fromPropertyTypeId- Returns:
- property type mapping
-
getPropertyTypeByMapping
Collection<PropertyType> getPropertyTypeByMapping(String propertyName)
TODO- Parameters:
propertyName- the property name- Returns:
- list of property types
-
getPropertyType
PropertyType getPropertyType(String id)
Retrieves the property type identified by the specified identifier. TODO: move to a different class- Parameters:
id- the identifier of the property type to retrieve- Returns:
- the property type identified by the specified identifier or
nullif no such property type exists
-
setPropertyType
boolean setPropertyType(PropertyType property)
Persists the specified property type in the context server. TODO: move to a different class- Parameters:
property- the property type to persist- Returns:
trueif the property type was properly created,falseotherwise (for example, if the property type already existed
-
setPropertyTypeTarget
void setPropertyTypeTarget(URL predefinedPropertyTypeURL, PropertyType propertyType)
This function will try to set the target on the property type if not set already, based on the file URL- 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 "/" characterpropertyType- the property type to register
-
deletePropertyType
boolean deletePropertyType(String propertyId)
Deletes the property type identified by the specified identifier. TODO: move to a different class- Parameters:
propertyId- the identifier of the property type to delete- Returns:
trueif the property type was properly deleted,falseotherwise
-
getExistingProperties
Set<PropertyType> getExistingProperties(String tag, String itemType)
Retrieves the existing property types for the specified type as defined by the Item subclass public fieldITEM_TYPEand with the specified tag. TODO: move to a different class- Parameters:
tag- the tag we're interested initemType- the String representation of the item type we want to retrieve the count of, as defined by its class'ITEM_TYPEfield- Returns:
- all property types defined for the specified item type and with the specified tag
-
getExistingProperties
Set<PropertyType> getExistingProperties(String tag, String itemType, boolean systemTag)
Retrieves the existing property types for the specified type as defined by the Item subclass public fieldITEM_TYPEand with the specified tag (system or regular) TODO: move to a different class- Parameters:
tag- the tag we're interested initemType- the String representation of the item type we want to retrieve the count of, as defined by its class'ITEM_TYPEfieldsystemTag- 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
-
refresh
void refresh()
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.
-
purgeProfiles
void purgeProfiles(int inactiveNumberOfDays, int existsNumberOfDays)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);- 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
void purgeSessionItems(int existsNumberOfDays)
Purge (delete) session items- Parameters:
existsNumberOfDays- will purge sessions created since this number of days (0 or negative value, will have no effect)
-
purgeEventItems
void purgeEventItems(int existsNumberOfDays)
Purge (delete) event items- Parameters:
existsNumberOfDays- will purge events created since this number of days (0 or negative value, will have no effect)
-
purgeMonthlyItems
@Deprecated void purgeMonthlyItems(int existsNumberOfMonths)
Deprecated.Use purgeSessionItems and purgeEventItems to remove rollover items instead- Parameters:
existsNumberOfMonths- used to remove monthly indices older than this number of months
-
-