Search in sources :

Example 1 with NotificationFilterType

use of org.xwiki.notifications.filters.NotificationFilterType in project xwiki-platform by xwiki.

the class DefaultModelBridge method getFilterPreferences.

@Override
public Set<NotificationFilterPreference> getFilterPreferences(DocumentReference user) throws NotificationException {
    XWikiContext context = contextProvider.get();
    XWiki xwiki = context.getWiki();
    final DocumentReference notificationFilterPreferenceClass = NOTIFICATION_FILTER_PREFERENCE_CLASS.setWikiReference(user.getWikiReference());
    Set<NotificationFilterPreference> preferences = new HashSet<>();
    try {
        XWikiDocument doc = xwiki.getDocument(user, context);
        List<BaseObject> preferencesObj = doc.getXObjects(notificationFilterPreferenceClass);
        if (preferencesObj != null) {
            for (BaseObject obj : preferencesObj) {
                if (obj != null) {
                    Map<NotificationFilterProperty, List<String>> filterPreferenceProperties = createNotificationFilterPropertiesMap(obj);
                    NotificationFilterType filterType = NotificationFilterType.valueOf(obj.getStringValue(FIELD_FILTER_TYPE).toUpperCase());
                    Set<NotificationFormat> filterFormats = new HashSet<>();
                    for (String format : (List<String>) obj.getListValue(FIELD_FILTER_FORMATS)) {
                        filterFormats.add(NotificationFormat.valueOf(format.toUpperCase()));
                    }
                    // Create the new filter preference and add it to the list of preferences
                    DefaultNotificationFilterPreference notificationFilterPreference = new DefaultNotificationFilterPreference(obj.getStringValue(FILTER_PREFERENCE_NAME));
                    notificationFilterPreference.setProviderHint("userProfile");
                    notificationFilterPreference.setFilterName(obj.getStringValue(FIELD_FILTER_NAME));
                    notificationFilterPreference.setEnabled(obj.getIntValue(FIELD_IS_ENABLED, 1) == 1);
                    notificationFilterPreference.setActive(obj.getIntValue(FIELD_IS_ACTIVE, 1) == 1);
                    notificationFilterPreference.setFilterType(filterType);
                    notificationFilterPreference.setNotificationFormats(filterFormats);
                    notificationFilterPreference.setPreferenceProperties(filterPreferenceProperties);
                    preferences.add(notificationFilterPreference);
                }
            }
        }
    } catch (Exception e) {
        throw new NotificationException(String.format("Failed to get the notification preferences scope for the user [%s].", user), e);
    }
    return preferences;
}
Also used : NotificationFilterProperty(org.xwiki.notifications.filters.NotificationFilterProperty) NotificationException(org.xwiki.notifications.NotificationException) XWikiContext(com.xpn.xwiki.XWikiContext) XWiki(com.xpn.xwiki.XWiki) XWikiException(com.xpn.xwiki.XWikiException) NotificationException(org.xwiki.notifications.NotificationException) BaseObject(com.xpn.xwiki.objects.BaseObject) XWikiDocument(com.xpn.xwiki.doc.XWikiDocument) NotificationFilterType(org.xwiki.notifications.filters.NotificationFilterType) NotificationFormat(org.xwiki.notifications.NotificationFormat) NotificationFilterPreference(org.xwiki.notifications.filters.NotificationFilterPreference) ArrayList(java.util.ArrayList) List(java.util.List) DocumentReference(org.xwiki.model.reference.DocumentReference) HashSet(java.util.HashSet)

Example 2 with NotificationFilterType

use of org.xwiki.notifications.filters.NotificationFilterType in project xwiki-platform by xwiki.

the class DefaultNotificationFilterPreferenceTest method defaultNotificationFilterPreference.

@Test
public void defaultNotificationFilterPreference() throws Exception {
    String filterPreferenceName = "fp1";
    String filterName = "f1";
    boolean isEnabled = true;
    boolean isActive = true;
    NotificationFilterType filterType = NotificationFilterType.INCLUSIVE;
    Set<NotificationFormat> notificationFormats = Sets.newSet(NotificationFormat.ALERT, NotificationFormat.EMAIL);
    Map<NotificationFilterProperty, List<String>> propertiesMap = new HashMap<>();
    propertiesMap.put(NotificationFilterProperty.APPLICATION, Arrays.asList("a1", "a2"));
    DefaultNotificationFilterPreference preference = new DefaultNotificationFilterPreference(filterPreferenceName);
    preference.setFilterName(filterName);
    preference.setEnabled(isEnabled);
    preference.setActive(isActive);
    preference.setFilterType(filterType);
    preference.setNotificationFormats(notificationFormats);
    preference.setPreferenceProperties(propertiesMap);
    assertEquals(filterPreferenceName, preference.getFilterPreferenceName());
    assertEquals(filterName, preference.getFilterName());
    assertEquals(isEnabled, preference.isEnabled());
    assertEquals(isActive, preference.isActive());
    assertEquals(filterType, preference.getFilterType());
    assertEquals(notificationFormats, preference.getFilterFormats());
    assertEquals(propertiesMap.get(NotificationFilterProperty.APPLICATION), preference.getProperties(NotificationFilterProperty.APPLICATION));
}
Also used : NotificationFilterType(org.xwiki.notifications.filters.NotificationFilterType) NotificationFilterProperty(org.xwiki.notifications.filters.NotificationFilterProperty) HashMap(java.util.HashMap) NotificationFormat(org.xwiki.notifications.NotificationFormat) List(java.util.List) Test(org.junit.Test)

Aggregations

List (java.util.List)2 NotificationFormat (org.xwiki.notifications.NotificationFormat)2 NotificationFilterProperty (org.xwiki.notifications.filters.NotificationFilterProperty)2 NotificationFilterType (org.xwiki.notifications.filters.NotificationFilterType)2 XWiki (com.xpn.xwiki.XWiki)1 XWikiContext (com.xpn.xwiki.XWikiContext)1 XWikiException (com.xpn.xwiki.XWikiException)1 XWikiDocument (com.xpn.xwiki.doc.XWikiDocument)1 BaseObject (com.xpn.xwiki.objects.BaseObject)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Test (org.junit.Test)1 DocumentReference (org.xwiki.model.reference.DocumentReference)1 NotificationException (org.xwiki.notifications.NotificationException)1 NotificationFilterPreference (org.xwiki.notifications.filters.NotificationFilterPreference)1