Tag Manager Back-End
What is it?
It is a bundle which allows the users to tag applications which will be visible for those users which are within the scope (public or communities). Thanks to it, the applications can be classified and found.
Design
Connection with other bundles
TagManagerBackEnd makes use of the following bundles:
CommunityManager: Necessary to retrieve information about the relationship between users, their communities and the tags. I.e.: to make available certain tag taking into account the scope in terms of visibility of the user.
EventsManager: Necessary to give feedback of the events produced in it. I.e: to inform other bundles that a tag has been added.
PersistencyManager: Necessary to store permanently all the data into the database. Using its services, we assure the robustness of the system.
The following diagram shows graphically the relationship between the TagManagerBackEnd and the rest of components through its interfaces:
Class diagram
The following diagram shows the most important classes:
Current interface
/**
* Creates a new tag. This method is overloaded, when it is invoked with
* these parameters (no community) a public tag is created
*
* Adapted for Astra.
*
* @param name Tag name
* @param appId Application identifier
* @param userId User identifier
*
* @return True if the operation was successful, false otherwise.
*
* @author Christian Laverton, modified by David Rozas & Alfredo Perez
*/
public boolean addTag(String name, String appId, String userId);
/**
* Creates a new tag by community.
*
* Adapted for Astra.
*
* @param name Tag name
* @param appId Application identifier
* @param userId User identifier
* @param communityId Community identifier
*
* @return True if the operation was successful, false otherwise.
*
* @author Christian Laverton, modified by David Rozas & Alfredo Perez
*/
public boolean addTagByCommunity(String name, String appId, String userId, String communityId);
/**
* Finds and returns all tags for the given application. This method is overloaded, when it is invoked with
* these parameters (no community) the public tags are retrieved.
* The tags returned are unique (if many users chose the same name, it will only appears once)
* and it is sorted by popularity (number of occurrences).
*
*
* @param appId Application identifier
* @param limit Limit on number of results returned. If <=0, then all the results are returned
*
* @return List of public tags resulting from query, empty array if there no tags for it,
* or null if there was any problem with the DB.
*
* @author Christian Laverton, modified by David Rozas & Alfredo Perez
*
*/
public String[] getTags(String appId, int limit);
/**
* Finds and returns all tags for the given application and community.
* The tags returned are unique (if many users chose the same name, it will only appears once)
* and it is sorted by popularity (number of occurrences).
*
*
* @param appId Application identifier
* @param limit Limit on number of results returned. If <=0, then all the results are returned
* @param communityId Community identifier
*
* @return List of tags which belong to that community resulting from query, empty array if there no tags for it,
* or null if there was any problem with the DB.
*
* @author Christian Laverton, modified by David Rozas & Alfredo Perez
*
*/
public String[] getTagsByCommunity(String appId, int limit, String communityId);
/**
* Finds and returns all tags for the given application which are public or are from a community
* where the user is part of.
* The tags returned are unique (if many users chose the same name, it will only appears once)
* and it is sorted by popularity (number of occurrences).
*
*
* @param appId Application identifier
* @param userId User identifier
* @param limit Limit on number of results returned. If <=0, then all the results are returned
*
* @return List of tags which belong to that community resulting from query, empty array if there no tags for it,
* or null if there was any problem with the DB.
*
* @author David Rozas
*
*/
public String[] getTagsByApplication(String appId, String userId, int limit);
/**
* Searches for services with tags matching the supplied keywords.
*
* @param keywords Keywords to search for
* @param ciId Collaboration instance identifier
* @return List of Services resulting from query
*/
//public String findServices(String keywords, int ciId);
/**
* Add a listener that will be notified whenever a tag is created
* or modified.
* @param String url Url of the service that implements the interface IEventsNotifier in the form http://server/
* @param String service Service that implements the interface IEventsNotifier i.e. EventsManager
*/
public void addTagListener(String url, String service);
/**
*
* Deletes a public tag
*
* @param name Tag name
* @param appId Application identifier in standard ASTRA format
* @param userId User identifier
*
* @return True if the process was successful, false otherwise.
*
*
* @author David Rozas
*
*/
public boolean deleteTag(String name, String appId, String userId);
/**
*
* Deletes a tag for a given community
*
* @param name Tag name
* @param appId Application identifier in standard ASTRA format
* @param userId User identifier
* @param communityId Community Identifier
*
* @return True if the process was successful, false otherwise.
*
*
* @author David Rozas
*
*/
public boolean deleteTag(String name, String appId, String userId, String communityId);
New functionalities:
- Some new functionalities with respect to the previous version have been added:
- Support for deleting public and community tags.
- A new method for getting all the tags for certain application which are within the user's scope has been added (getTagsByApplication).
TO-DO (General)
Connect it with the EventsManager In order to keep the search index updated in the RepositoryManager (done and tested).