Search in sources :

Example 16 with PortletPreferences

use of javax.portlet.PortletPreferences in project uPortal by Jasig.

the class AttributeSwapperHelperImpl method getSwappableAttributes.

/* (non-Javadoc)
     * @see org.apereo.portal.portlets.swapper.IAttributeSwapperHelper#getSwappableAttributes(org.springframework.webflow.context.ExternalContext)
     */
public Set<String> getSwappableAttributes(ExternalContext externalContext) {
    final PortletRequest portletRequest = (PortletRequest) externalContext.getNativeRequest();
    final PortletPreferences preferences = portletRequest.getPreferences();
    final Set<String> swappableAttributes;
    //Use prefs configured list if available
    final String[] configuredAttributes = preferences.getValues(ATTRIBUTE_SWAPPER_ATTRIBUTES_FORM_SWAPPABLE_ATTRIBUTES, null);
    final String[] excludedAttributes = preferences.getValues(ATTRIBUTE_SWAPPER_ATTRIBUTES_FORM_SWAPPABLE_ATTRIBUTES_EXCLUDES, null);
    if (configuredAttributes != null) {
        swappableAttributes = new LinkedHashSet<String>(Arrays.asList(configuredAttributes));
    } else {
        //If no prefs try the 'possibleUserAttributeNames' from the IPersonAttributeDao
        final Set<String> possibleAttributes = this.overwritingPersonAttributeDao.getPossibleUserAttributeNames();
        if (possibleAttributes != null) {
            swappableAttributes = new TreeSet<String>(possibleAttributes);
        } else //If no possible names try getting the current user's attributes and use the key set
        {
            final Principal currentUser = externalContext.getCurrentUser();
            final IPersonAttributes baseUserAttributes = this.getOriginalUserAttributes(currentUser.getName());
            if (baseUserAttributes != null) {
                final Map<String, List<Object>> attributes = baseUserAttributes.getAttributes();
                swappableAttributes = new LinkedHashSet<String>(attributes.keySet());
            } else {
                swappableAttributes = Collections.emptySet();
            }
        }
    }
    if (excludedAttributes != null) {
        for (final String excludedAttribute : excludedAttributes) {
            swappableAttributes.remove(excludedAttribute);
        }
    }
    return swappableAttributes;
}
Also used : PortletRequest(javax.portlet.PortletRequest) IPersonAttributes(org.jasig.services.persondir.IPersonAttributes) PortletPreferences(javax.portlet.PortletPreferences) List(java.util.List) Principal(java.security.Principal)

Example 17 with PortletPreferences

use of javax.portlet.PortletPreferences in project uPortal by Jasig.

the class AttributeSwapperHelperImpl method swapAttributes.

/* (non-Javadoc)
     * @see org.apereo.portal.portlets.swapper.IAttributeSwapperHelper#swapAttributes(org.springframework.webflow.context.ExternalContext, org.apereo.portal.portlets.swapper.AttributeSwapRequest)
     */
public void swapAttributes(ExternalContext externalContext, AttributeSwapRequest attributeSwapRequest) {
    //Collate the swap request into a single overrides map
    final Map<String, Object> attributes = new HashMap<String, Object>();
    final Map<String, Attribute> currentAttributes = attributeSwapRequest.getCurrentAttributes();
    this.copyAttributes(attributes, currentAttributes);
    final Map<String, Attribute> attributesToCopy = attributeSwapRequest.getAttributesToCopy();
    this.copyAttributes(attributes, attributesToCopy);
    final Principal currentUser = externalContext.getCurrentUser();
    final String uid = currentUser.getName();
    final IPersonAttributes originalUserAttributes = this.getOriginalUserAttributes(uid);
    //Filter out unchanged attributes
    for (final Iterator<Map.Entry<String, Object>> overrideAttrEntryItr = attributes.entrySet().iterator(); overrideAttrEntryItr.hasNext(); ) {
        final Entry<String, Object> overrideAttrEntry = overrideAttrEntryItr.next();
        final String attribute = overrideAttrEntry.getKey();
        final Object originalValue = originalUserAttributes.getAttributeValue(attribute);
        final Object overrideValue = overrideAttrEntry.getValue();
        if (originalValue == overrideValue || (originalValue != null && originalValue.equals(overrideValue))) {
            overrideAttrEntryItr.remove();
        }
    }
    final PortletRequest portletRequest = (PortletRequest) externalContext.getNativeRequest();
    final PortletPreferences preferences = portletRequest.getPreferences();
    final String[] configuredAttributes = preferences.getValues(ATTRIBUTE_SWAPPER_ATTRIBUTES_FORM_SWAPPABLE_ATTRIBUTES, null);
    final String[] excludedAttributes = preferences.getValues(ATTRIBUTE_SWAPPER_ATTRIBUTES_FORM_SWAPPABLE_ATTRIBUTES_EXCLUDES, null);
    //Calculate the Set of attributes that are OK to be swapped
    final Set<String> allowedAttributes = new LinkedHashSet<String>();
    if (configuredAttributes != null) {
        allowedAttributes.addAll(Arrays.asList(configuredAttributes));
    } else {
        allowedAttributes.addAll(attributes.keySet());
    }
    if (excludedAttributes != null) {
        allowedAttributes.removeAll(Arrays.asList(excludedAttributes));
    }
    //Filter the attributes map
    for (final Iterator<String> attributeItr = attributes.keySet().iterator(); attributeItr.hasNext(); ) {
        final String attribute = attributeItr.next();
        if (!allowedAttributes.contains(attribute)) {
            attributeItr.remove();
            this.logger.warn("User '" + uid + "' attempted overriding attribute '" + attribute + "' which is not allowed in the current configuration. The attribute will be ignored.");
        }
    }
    this.logger.warn("User '" + uid + "' setting attribute overrides: " + attributes);
    //Override attributes retrieved the person directory
    this.overwritingPersonAttributeDao.setUserAttributeOverride(uid, attributes);
    //Update the IPerson, setting the overridden attributes
    final HttpServletRequest portalRequest = this.portalRequestUtils.getPortletHttpRequest(portletRequest);
    final IPerson person = this.personManager.getPerson(portalRequest);
    final Map<String, List<Object>> multivaluedAttributes = MultivaluedPersonAttributeUtils.toMultivaluedMap(attributes);
    person.setAttributes(multivaluedAttributes);
    person.setAttribute(OVERRIDDEN_ATTRIBUTES, multivaluedAttributes.keySet());
}
Also used : LinkedHashSet(java.util.LinkedHashSet) HashMap(java.util.HashMap) Attribute(org.apereo.portal.portlets.Attribute) HttpServletRequest(javax.servlet.http.HttpServletRequest) IPerson(org.apereo.portal.security.IPerson) Entry(java.util.Map.Entry) PortletRequest(javax.portlet.PortletRequest) IPersonAttributes(org.jasig.services.persondir.IPersonAttributes) PortletPreferences(javax.portlet.PortletPreferences) List(java.util.List) Principal(java.security.Principal)

Example 18 with PortletPreferences

use of javax.portlet.PortletPreferences in project uPortal by Jasig.

the class PersonLookupHelperImpl method getDisplayAttributes.

/* (non-Javadoc)
     * @see org.apereo.portal.portlets.swapper.IPersonLookupHelper#getDisplayAttributes(org.springframework.webflow.context.ExternalContext)
     */
public Set<String> getDisplayAttributes(ExternalContext externalContext) {
    final PortletRequest portletRequest = (PortletRequest) externalContext.getNativeRequest();
    final PortletPreferences preferences = portletRequest.getPreferences();
    final Set<String> displayAttributes;
    final String[] configuredAttributes = preferences.getValues(PERSON_LOOKUP_PERSON_DETAILS_DETAILS_ATTRIBUTES, null);
    final String[] excludedAttributes = preferences.getValues(PERSON_LOOKUP_PERSON_DETAILS_DETAILS_ATTRIBUTES_EXCLUDES, null);
    //If attributes are configured in portlet prefs use those the user has
    if (configuredAttributes != null) {
        displayAttributes = new LinkedHashSet<String>();
        displayAttributes.addAll(Arrays.asList(configuredAttributes));
    } else //Otherwise provide all available attributes from the IPersonAttributes
    {
        displayAttributes = new TreeSet<String>(personAttributeDao.getPossibleUserAttributeNames());
    }
    //Remove any excluded attributes
    if (excludedAttributes != null) {
        for (final String excludedAttribute : excludedAttributes) {
            displayAttributes.remove(excludedAttribute);
        }
    }
    return displayAttributes;
}
Also used : PortletRequest(javax.portlet.PortletRequest) PortletPreferences(javax.portlet.PortletPreferences)

Example 19 with PortletPreferences

use of javax.portlet.PortletPreferences in project uPortal by Jasig.

the class PersonLookupHelperImpl method getQueryAttributes.

/* (non-Javadoc)
     * @see org.apereo.portal.portlets.swapper.IPersonLookupHelper#getQueryAttributes(org.springframework.webflow.context.ExternalContext)
     */
public Set<String> getQueryAttributes(ExternalContext externalContext) {
    final PortletRequest portletRequest = (PortletRequest) externalContext.getNativeRequest();
    final PortletPreferences preferences = portletRequest.getPreferences();
    final Set<String> queryAttributes;
    final String[] configuredAttributes = preferences.getValues(PERSON_LOOKUP_PERSON_LOOKUP_QUERY_ATTRIBUTES, null);
    final String[] excludedAttributes = preferences.getValues(PERSON_LOOKUP_PERSON_LOOKUP_QUERY_ATTRIBUTES_EXCLUDES, null);
    //If attributes are configured in portlet prefs just use them
    if (configuredAttributes != null) {
        queryAttributes = new LinkedHashSet<String>(Arrays.asList(configuredAttributes));
    } else //Otherwise provide all available attributes from the IPersonAttributeDao
    {
        final Set<String> availableAttributes = this.personAttributeDao.getAvailableQueryAttributes();
        queryAttributes = new TreeSet<String>(availableAttributes);
    }
    //Remove excluded attributes
    if (excludedAttributes != null) {
        for (final String excludedAttribute : excludedAttributes) {
            queryAttributes.remove(excludedAttribute);
        }
    }
    return queryAttributes;
}
Also used : PortletRequest(javax.portlet.PortletRequest) PortletPreferences(javax.portlet.PortletPreferences)

Example 20 with PortletPreferences

use of javax.portlet.PortletPreferences in project uPortal by Jasig.

the class GoogleAnalyticsConfigController method renderAnalyticsHeader.

@RenderMapping
public String renderAnalyticsHeader(PortletRequest request, ModelMap model) throws IOException {
    final PortletPreferences preferences = request.getPreferences();
    final JsonNode config = this.portletPreferencesJsonDao.getJsonNode(preferences, CONFIG_PREF_NAME);
    model.put("data", config);
    return "jsp/GoogleAnalytics/config";
}
Also used : PortletPreferences(javax.portlet.PortletPreferences) JsonNode(com.fasterxml.jackson.databind.JsonNode) RenderMapping(org.springframework.web.portlet.bind.annotation.RenderMapping)

Aggregations

PortletPreferences (javax.portlet.PortletPreferences)38 HashMap (java.util.HashMap)10 RenderMapping (org.springframework.web.portlet.bind.annotation.RenderMapping)9 ModelAndView (org.springframework.web.portlet.ModelAndView)6 List (java.util.List)5 HttpServletRequest (javax.servlet.http.HttpServletRequest)5 IPerson (org.apereo.portal.security.IPerson)5 PortletRequest (javax.portlet.PortletRequest)4 ResourceMapping (org.springframework.web.portlet.bind.annotation.ResourceMapping)4 JsonNode (com.fasterxml.jackson.databind.JsonNode)3 LinkedHashMap (java.util.LinkedHashMap)3 Map (java.util.Map)3 Principal (java.security.Principal)2 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)2 Header (org.apache.http.Header)2 PortletCategory (org.apereo.portal.portlet.om.PortletCategory)2 MarketplaceEntry (org.apereo.portal.rest.layout.MarketplaceEntry)2 IAuthorizationPrincipal (org.apereo.portal.security.IAuthorizationPrincipal)2