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 StringTEAMCITY_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()voidhideProjects(String... projectIds)Set projects to be hidden on the user`s Overview page.booleanisConfiguredVisibleProjects()booleanisHasHiddenProjects()booleanisProjectNew(String projectId)booleanisProjectVisible(String internalId)booleanisTooManyVisibleProjectsToShowOnOverviewByDefault()voidresetBuildTypesOrder(SProject project)Reset build types order in the provided SProjectvoidresetCaches()voidsetBuildTypesOrder(SProject project, List<SBuildType> visible, List<SBuildType> invisible)Store build types order for user`s Overview page in the provided SProjectvoidsetProjectsOrder(List<String> projectsOrder)Store projects order for user`s Overview pagevoidsetVisibleProjects(Collection<String> visibleProjects)Set projects to be visible on the user`s Overview page.voidshowProjects(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:
getKnownProjectsin 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:
getKnownVisibleProjectsin 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:
getVisibleAndUnknownProjectsin 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:
getAllProjectsin interfaceProjectVisibilityHolder- Returns:
- A list of projects ordered projects accessible to the user ordered by user preferences.
-
getProjectsOrder
@NotNull public List<String> getProjectsOrder()
- Specified by:
getProjectsOrderin interfaceProjectVisibilityHolder- Returns:
- The order of projects configured by the user
-
setProjectsOrder
public void setProjectsOrder(@NotNull List<String> projectsOrder)Description copied from interface:ProjectVisibilityHolderStore projects order for user`s Overview page
- Specified by:
setProjectsOrderin 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:ProjectVisibilityHolderSet projects to be visible on the user`s Overview page. Doesn't affect other projects visibility. Doesn't affect projects ordering.
- Specified by:
showProjectsin interfaceProjectVisibilityHolder
-
setVisibleProjects
public void setVisibleProjects(@NotNull Collection<String> visibleProjects)Description copied from interface:ProjectVisibilityHolderSet projects to be visible on the user`s Overview page. Overrides old data. Doesn't affect projects ordering.
- Specified by:
setVisibleProjectsin interfaceProjectVisibilityHolder
-
hideProjects
public void hideProjects(@NotNull String... projectIds)Description copied from interface:ProjectVisibilityHolderSet projects to be hidden on the user`s Overview page. Doesn't affect other projects visibility. Doesn't affect projects ordering.
- Specified by:
hideProjectsin interfaceProjectVisibilityHolder
-
isHasHiddenProjects
public boolean isHasHiddenProjects()
- Specified by:
isHasHiddenProjectsin interfaceProjectVisibilityHolder- Returns:
- true if the user has at least one hidden project.
-
isConfiguredVisibleProjects
public boolean isConfiguredVisibleProjects()
- Specified by:
isConfiguredVisibleProjectsin 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:
getFilteredVisibleBuildTypesin 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:
getUserBuildTypeOrderin interfaceProjectVisibilityHolder
-
getUserProjectOrder
@NotNull public Comparator<SProject> getUserProjectOrder()
- Specified by:
getUserProjectOrderin interfaceProjectVisibilityHolder
-
getOrderedBuildTypes
@NotNull public List<SBuildType> getOrderedBuildTypes(@Nullable SProject project)
- Specified by:
getOrderedBuildTypesin 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:
getAllBuildTypesOrderedin 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:ProjectVisibilityHolderStore build types order for user`s Overview page in the provided SProject
- Specified by:
setBuildTypesOrderin interfaceProjectVisibilityHoldervisible- build types to reorderinvisible- build type hide
-
getBuildTypesOrder
@NotNull public Collection<SBuildType> getBuildTypesOrder(@NotNull SProject project)
- Specified by:
getBuildTypesOrderin interfaceProjectVisibilityHolder- Returns:
- a collection of visible build types ordered by user preferences
-
resetBuildTypesOrder
public void resetBuildTypesOrder(@NotNull SProject project)Description copied from interface:ProjectVisibilityHolderReset build types order in the provided SProject
- Specified by:
resetBuildTypesOrderin interfaceProjectVisibilityHolder
-
getNewProjects
@NotNull public List<String> getNewProjects()
- Specified by:
getNewProjectsin 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:
isProjectNewin interfaceProjectVisibilityHolder
-
getAllProjectsOrdered
@NotNull public List<SProject> getAllProjectsOrdered()
Description copied from interface:ProjectVisibilityHolderProjects 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:
getAllProjectsOrderedin interfaceProjectVisibilityHolder- Returns:
- a list of projects ordered with user preferences, system projects order and hierarchy
-
isTooManyVisibleProjectsToShowOnOverviewByDefault
public boolean isTooManyVisibleProjectsToShowOnOverviewByDefault()
- Specified by:
isTooManyVisibleProjectsToShowOnOverviewByDefaultin interfaceProjectVisibilityHolder
-
isProjectVisible
public boolean isProjectVisible(@NotNull String internalId)- Specified by:
isProjectVisiblein interfaceProjectVisibilityHolder
-
resetCaches
public void resetCaches()
- Specified by:
resetCachesin interfaceProjectVisibilityHolder
-
-