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;
}
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());
}
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;
}
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;
}
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";
}
Aggregations