View Javadoc
1   package edu.internet2.middleware.grouper.grouperUi.beans.ui;
2   
3   import java.util.Set;
4   
5   import edu.internet2.middleware.grouper.GrouperSession;
6   import edu.internet2.middleware.grouper.attr.AttributeDefName;
7   import edu.internet2.middleware.grouper.exception.GrouperSessionException;
8   import edu.internet2.middleware.grouper.grouperUi.beans.api.GuiAttributeAssignFinderResults;
9   import edu.internet2.middleware.grouper.grouperUi.beans.api.GuiAttributeDefName;
10  import edu.internet2.middleware.grouper.grouperUi.beans.json.GuiPaging;
11  import edu.internet2.middleware.grouper.grouperUi.serviceLogic.UiV2AttributeDefName;
12  import edu.internet2.middleware.grouper.misc.GrouperSessionHandler;
13  import edu.internet2.middleware.grouper.ui.GrouperUiFilter;
14  import edu.internet2.middleware.grouper.ui.util.GrouperUiConfig;
15  import edu.internet2.middleware.grouper.ui.util.GrouperUiUserData;
16  import edu.internet2.middleware.grouper.userData.GrouperUserDataApi;
17  import edu.internet2.middleware.grouper.util.GrouperUtil;
18  import edu.internet2.middleware.subject.Subject;
19  
20  /**
21   * attribute definition name container in new ui
22   * @author vsachdeva
23   */
24  public class AttributeDefNameContainer {
25    
26    /**
27     * gui version of attribute def name user is working on
28     */
29    private GuiAttributeDefName guiAttributeDefName;
30    
31    /**
32     * owners of this attribute def name
33     */
34    private GuiAttributeAssignFinderResults guiAttributeAssignFinderResults;
35    
36    /**
37     * keep track of the paging
38     */
39    private GuiPaging guiPaging = null;
40    
41  
42    /**
43     * gui version of attribute def name user is working on
44     * @return
45     */
46    public GuiAttributeDefName getGuiAttributeDefName() {
47      return guiAttributeDefName;
48    }
49  
50    /**
51     * gui version of attribute def name user is working on
52     * @param guiAttributeDefName
53     */
54    public void setGuiAttributeDefName(GuiAttributeDefName guiAttributeDefName) {
55      this.guiAttributeDefName = guiAttributeDefName;
56    }
57    
58    /**
59     * if the attribute def name is a favorite for the logged in user
60     */
61    private Boolean favorite;
62  
63    /**
64     * if the attribute def name is a favorite for the logged in user
65     * @return if favorite
66     */
67    public boolean isFavorite() {
68      
69      if (this.favorite == null) {
70        
71        final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn();
72    
73        this.favorite = (Boolean)GrouperSession.callbackGrouperSession(
74            GrouperSession.staticGrouperSession().internal_getRootSession(), new GrouperSessionHandler() {
75              
76              @Override
77              public Object callback(GrouperSession grouperSession) throws GrouperSessionException {
78                
79                Set<AttributeDefName> favorites = GrouperUtil.nonNull(
80                    GrouperUserDataApi.favoriteAttributeDefNames(GrouperUiUserData.grouperUiGroupNameForUserData(), loggedInSubject));
81                return favorites.contains(AttributeDefNameContainer.this.getGuiAttributeDefName().getAttributeDefName());
82                    
83              }
84            });
85      }
86      
87      return this.favorite;
88    }
89  
90    /**
91     * owners of this attribute def name
92     * @return
93     */
94    public GuiAttributeAssignFinderResults getGuiAttributeAssignFinderResults() {
95      return guiAttributeAssignFinderResults;
96    }
97  
98    /**
99     * owners of this attribute def name
100    * @param guiAttributeAssignFinderResults
101    */
102   public void setGuiAttributeAssignFinderResults(GuiAttributeAssignFinderResults guiAttributeAssignFinderResults) {
103     this.guiAttributeAssignFinderResults = guiAttributeAssignFinderResults;
104   }
105 
106   /**
107    * keep track of the paging
108    * @return
109    */
110   public GuiPaging getGuiPaging() {
111     
112     if (this.guiPaging == null) {
113       this.guiPaging = new GuiPaging();
114     }
115     return this.guiPaging;
116   }
117 
118   /**
119    * keep track of the paging
120    * @param guiPaging
121    */
122   public void setGuiPaging(GuiPaging guiPaging) {
123     this.guiPaging = guiPaging;
124   }
125 
126   /**
127    * if deletion of an attribute name is disallowed from the UI
128    * @return true if UI does not allow deleting attributeDefNames
129    */
130   public boolean isConfigPreventUiDeletion() {
131     return GrouperUiConfig.retrieveConfig()
132             .propertyValueBoolean(UiV2AttributeDefName.PROPERTY_PREVENT_DELETE_IN_UI, false);
133   }
134 
135 }