Class ProjectVisibilityHolderImpl
- java.lang.Object
-
- jetbrains.buildServer.users.impl.ProjectVisibilityHolderImpl
-
- All Implemented Interfaces:
ProjectVisibilityHolder
public class ProjectVisibilityHolderImpl extends Object implements ProjectVisibilityHolder
Created by Andrey Titov on 1/10/17.UserImpl instances are stored in memory in a soft reference based cache. This class just isolates project visibility options from User codebase but doesn't actually decouple them. Yet it allows extend project visibility API without messing up User API and allows further refactoring.
-
-
Field Summary
Fields Modifier and Type Field Description static String
TEAMCITY_OVERVIEW_PAGE_BUILD_TYPES_LIMIT
-
Constructor Summary
Constructors Constructor Description ProjectVisibilityHolderImpl(SUser user, UserDataLoader userDataLoader, UserUpdate userUpdate, ProjectManager projectManager)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<SBuildType>
getAllBuildTypesOrdered(SProject project)
List<String>
getAllProjects()
List<SProject>
getAllProjectsOrdered()
Projects will be ordered hierarchically, then respecting user project visibility (so that projects in visible list (seeProjectVisibilityHolder.getKnownVisibleProjects()
) will precede others - and also projects containing a child in visible list will precede others), and finally system order.Collection<SBuildType>
getBuildTypesOrder(SProject project)
SortedMap<SProject,List<SBuildType>>
getFilteredVisibleBuildTypes(BuildTypeFilter filter)
Collection<String>
getKnownProjects()
Collection<String>
getKnownVisibleProjects()
List<String>
getNewProjects()
List<SBuildType>
getOrderedBuildTypes(SProject project)
List<String>
getProjectsOrder()
Comparator<SBuildType>
getUserBuildTypeOrder()
Comparator<SProject>
getUserProjectOrder()
List<String>
getVisibleAndUnknownProjects()
void
hideProjects(String... projectIds)
Set projects to be hidden on the user`s Overview page.boolean
isConfiguredVisibleProjects()
boolean
isHasHiddenProjects()
boolean
isProjectNew(String projectId)
boolean
isProjectVisible(String internalId)
boolean
isTooManyVisibleProjectsToShowOnOverviewByDefault()
void
resetBuildTypesOrder(SProject project)
Reset build types order in the provided SProjectvoid
resetCaches()
void
setBuildTypesOrder(SProject project, List<SBuildType> visible, List<SBuildType> invisible)
Store build types order for user`s Overview page in the provided SProjectvoid
setProjectsOrder(List<String> projectsOrder)
Store projects order for user`s Overview pagevoid
setVisibleProjects(Collection<String> visibleProjects)
Set projects to be visible on the user`s Overview page.void
showProjects(String... projectIds)
Set projects to be visible on the user`s Overview page.
-
-
-
Field Detail
-
TEAMCITY_OVERVIEW_PAGE_BUILD_TYPES_LIMIT
public static final String TEAMCITY_OVERVIEW_PAGE_BUILD_TYPES_LIMIT
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ProjectVisibilityHolderImpl
public ProjectVisibilityHolderImpl(@NotNull SUser user, @NotNull UserDataLoader userDataLoader, @NotNull UserUpdate userUpdate, @NotNull ProjectManager projectManager)
-
-
Method Detail
-
getKnownProjects
@NotNull public Collection<String> getKnownProjects()
- Specified by:
getKnownProjects
in interfaceProjectVisibilityHolder
- Returns:
- A collection of project internal ids which were shown or hidden by the user. The list is not ordered by user preferences.
-
getKnownVisibleProjects
@NotNull public Collection<String> getKnownVisibleProjects()
- Specified by:
getKnownVisibleProjects
in interfaceProjectVisibilityHolder
- Returns:
- A collection of project internal ids which were explicitly shown by the user. The list is ordered by user preferences.
-
getVisibleAndUnknownProjects
@NotNull public List<String> getVisibleAndUnknownProjects()
- Specified by:
getVisibleAndUnknownProjects
in interfaceProjectVisibilityHolder
- Returns:
- A list of project internal ids which were explicitly shown by the user or are new. The list is ordered by user preferences.
-
getAllProjects
@NotNull public List<String> getAllProjects()
- Specified by:
getAllProjects
in interfaceProjectVisibilityHolder
- Returns:
- A list of projects ordered projects accessible to the user ordered by user preferences.
-
getProjectsOrder
@NotNull public List<String> getProjectsOrder()
- Specified by:
getProjectsOrder
in interfaceProjectVisibilityHolder
- Returns:
- The order of projects configured by the user
-
setProjectsOrder
public void setProjectsOrder(@NotNull List<String> projectsOrder)
Description copied from interface:ProjectVisibilityHolder
Store projects order for user`s Overview page
- Specified by:
setProjectsOrder
in interfaceProjectVisibilityHolder
- Parameters:
projectsOrder
- a list of project internal ids. Projects in this list will be ordered, other projects will appear after them in system order.
-
showProjects
public void showProjects(@NotNull String... projectIds)
Description copied from interface:ProjectVisibilityHolder
Set projects to be visible on the user`s Overview page. Doesn't affect other projects visibility. Doesn't affect projects ordering.
- Specified by:
showProjects
in interfaceProjectVisibilityHolder
-
setVisibleProjects
public void setVisibleProjects(@NotNull Collection<String> visibleProjects)
Description copied from interface:ProjectVisibilityHolder
Set projects to be visible on the user`s Overview page. Overrides old data. Doesn't affect projects ordering.
- Specified by:
setVisibleProjects
in interfaceProjectVisibilityHolder
-
hideProjects
public void hideProjects(@NotNull String... projectIds)
Description copied from interface:ProjectVisibilityHolder
Set projects to be hidden on the user`s Overview page. Doesn't affect other projects visibility. Doesn't affect projects ordering.
- Specified by:
hideProjects
in interfaceProjectVisibilityHolder
-
isHasHiddenProjects
public boolean isHasHiddenProjects()
- Specified by:
isHasHiddenProjects
in interfaceProjectVisibilityHolder
- Returns:
- true if the user has at least one hidden project.
-
isConfiguredVisibleProjects
public boolean isConfiguredVisibleProjects()
- Specified by:
isConfiguredVisibleProjects
in interfaceProjectVisibilityHolder
- Returns:
- true if the user has at least one configured project visibility state (hidden or visible).
-
getFilteredVisibleBuildTypes
@NotNull public SortedMap<SProject,List<SBuildType>> getFilteredVisibleBuildTypes(@Nullable BuildTypeFilter filter)
- Specified by:
getFilteredVisibleBuildTypes
in interfaceProjectVisibilityHolder
- Returns:
- filtered with BuildTypeFilter map containing all non-hidden build types grouped by their projects. Empty projects are included to the map. The map is ordered by user preferences.
-
getUserBuildTypeOrder
@NotNull public Comparator<SBuildType> getUserBuildTypeOrder()
- Specified by:
getUserBuildTypeOrder
in interfaceProjectVisibilityHolder
-
getUserProjectOrder
@NotNull public Comparator<SProject> getUserProjectOrder()
- Specified by:
getUserProjectOrder
in interfaceProjectVisibilityHolder
-
getOrderedBuildTypes
@NotNull public List<SBuildType> getOrderedBuildTypes(@Nullable SProject project)
- Specified by:
getOrderedBuildTypes
in interfaceProjectVisibilityHolder
- Returns:
- a list of non-hidden build types in the provided SProject. All non-hidden build types if null. Build types are ordered by user preferences. 'Unknown' build types are placed in the end of the list.
-
getAllBuildTypesOrdered
@NotNull public List<SBuildType> getAllBuildTypesOrdered(@Nullable SProject project)
- Specified by:
getAllBuildTypesOrdered
in interfaceProjectVisibilityHolder
- Returns:
- a list of build types in the provided SProject. All build types if null. Build types are ordered by user preferences. Hidden build types and 'unknown' build types are placed in the end of the list.
-
setBuildTypesOrder
public void setBuildTypesOrder(@NotNull SProject project, @NotNull List<SBuildType> visible, @NotNull List<SBuildType> invisible)
Description copied from interface:ProjectVisibilityHolder
Store build types order for user`s Overview page in the provided SProject
- Specified by:
setBuildTypesOrder
in interfaceProjectVisibilityHolder
visible
- build types to reorderinvisible
- build type hide
-
getBuildTypesOrder
@NotNull public Collection<SBuildType> getBuildTypesOrder(@NotNull SProject project)
- Specified by:
getBuildTypesOrder
in interfaceProjectVisibilityHolder
- Returns:
- a collection of visible build types ordered by user preferences
-
resetBuildTypesOrder
public void resetBuildTypesOrder(@NotNull SProject project)
Description copied from interface:ProjectVisibilityHolder
Reset build types order in the provided SProject
- Specified by:
resetBuildTypesOrder
in interfaceProjectVisibilityHolder
-
getNewProjects
@NotNull public List<String> getNewProjects()
- Specified by:
getNewProjects
in interfaceProjectVisibilityHolder
- Returns:
- a collection of projects which are new to the user - the user didn't show or hide them.
-
isProjectNew
public boolean isProjectNew(@NotNull String projectId)
- Specified by:
isProjectNew
in interfaceProjectVisibilityHolder
-
getAllProjectsOrdered
@NotNull public List<SProject> getAllProjectsOrdered()
Description copied from interface:ProjectVisibilityHolder
Projects will be ordered hierarchically, then respecting user project visibility (so that projects in visible list (see
ProjectVisibilityHolder.getKnownVisibleProjects()
) will precede others - and also projects containing a child in visible list will precede others), and finally system order.- Specified by:
getAllProjectsOrdered
in interfaceProjectVisibilityHolder
- Returns:
- a list of projects ordered with user preferences, system projects order and hierarchy
-
isTooManyVisibleProjectsToShowOnOverviewByDefault
public boolean isTooManyVisibleProjectsToShowOnOverviewByDefault()
- Specified by:
isTooManyVisibleProjectsToShowOnOverviewByDefault
in interfaceProjectVisibilityHolder
-
isProjectVisible
public boolean isProjectVisible(@NotNull String internalId)
- Specified by:
isProjectVisible
in interfaceProjectVisibilityHolder
-
resetCaches
public void resetCaches()
- Specified by:
resetCaches
in interfaceProjectVisibilityHolder
-
-