private CategoryEvent updateCategory(Category category) { Set categoryActivityBindings = (Set) categoryActivityBindingsByCategoryId.get(category.getId()); boolean categoryActivityBindingsChanged = category.setCategoryActivityBindings( categoryActivityBindings != null ? categoryActivityBindings : Collections.EMPTY_SET); CategoryDefinition categoryDefinition = (CategoryDefinition) categoryDefinitionsById.get(category.getId()); boolean definedChanged = category.setDefined(categoryDefinition != null); boolean nameChanged = category.setName(categoryDefinition != null ? categoryDefinition.getName() : null); boolean descriptionChanged = category.setDescription( categoryDefinition != null ? categoryDefinition.getDescription() : null); if (categoryActivityBindingsChanged || definedChanged || nameChanged || descriptionChanged) { return new CategoryEvent( category, categoryActivityBindingsChanged, definedChanged, descriptionChanged, nameChanged); } return null; }
private void readRegistry(boolean setDefaults) { if (!isRegexpSupported()) { return; } Collection activityDefinitions = new ArrayList(); activityDefinitions.addAll(activityRegistry.getActivityDefinitions()); Map activityDefinitionsById = new HashMap(ActivityDefinition.activityDefinitionsById(activityDefinitions, false)); for (Iterator iterator = activityDefinitionsById.values().iterator(); iterator.hasNext(); ) { ActivityDefinition activityDefinition = (ActivityDefinition) iterator.next(); String name = activityDefinition.getName(); if (name == null || name.length() == 0) { iterator.remove(); } } Collection categoryDefinitions = new ArrayList(); categoryDefinitions.addAll(activityRegistry.getCategoryDefinitions()); Map categoryDefinitionsById = new HashMap(CategoryDefinition.categoryDefinitionsById(categoryDefinitions, false)); for (Iterator iterator = categoryDefinitionsById.values().iterator(); iterator.hasNext(); ) { CategoryDefinition categoryDefinition = (CategoryDefinition) iterator.next(); String name = categoryDefinition.getName(); if (name == null || name.length() == 0) { iterator.remove(); } } Map activityRequirementBindingDefinitionsByActivityId = ActivityRequirementBindingDefinition.activityRequirementBindingDefinitionsByActivityId( activityRegistry.getActivityRequirementBindingDefinitions()); Map activityRequirementBindingsByActivityId = new HashMap(); for (Iterator iterator = activityRequirementBindingDefinitionsByActivityId.entrySet().iterator(); iterator.hasNext(); ) { Map.Entry entry = (Map.Entry) iterator.next(); String parentActivityId = (String) entry.getKey(); if (activityDefinitionsById.containsKey(parentActivityId)) { Collection activityRequirementBindingDefinitions = (Collection) entry.getValue(); if (activityRequirementBindingDefinitions != null) { for (Iterator iterator2 = activityRequirementBindingDefinitions.iterator(); iterator2.hasNext(); ) { ActivityRequirementBindingDefinition activityRequirementBindingDefinition = (ActivityRequirementBindingDefinition) iterator2.next(); String childActivityId = activityRequirementBindingDefinition.getRequiredActivityId(); if (activityDefinitionsById.containsKey(childActivityId)) { IActivityRequirementBinding activityRequirementBinding = new ActivityRequirementBinding(childActivityId, parentActivityId); Set activityRequirementBindings = (Set) activityRequirementBindingsByActivityId.get(parentActivityId); if (activityRequirementBindings == null) { activityRequirementBindings = new HashSet(); activityRequirementBindingsByActivityId.put( parentActivityId, activityRequirementBindings); } activityRequirementBindings.add(activityRequirementBinding); } } } } } Map activityPatternBindingDefinitionsByActivityId = ActivityPatternBindingDefinition.activityPatternBindingDefinitionsByActivityId( activityRegistry.getActivityPatternBindingDefinitions()); Map activityPatternBindingsByActivityId = new HashMap(); for (Iterator iterator = activityPatternBindingDefinitionsByActivityId.entrySet().iterator(); iterator.hasNext(); ) { Map.Entry entry = (Map.Entry) iterator.next(); String activityId = (String) entry.getKey(); if (activityDefinitionsById.containsKey(activityId)) { Collection activityPatternBindingDefinitions = (Collection) entry.getValue(); if (activityPatternBindingDefinitions != null) { for (Iterator iterator2 = activityPatternBindingDefinitions.iterator(); iterator2.hasNext(); ) { ActivityPatternBindingDefinition activityPatternBindingDefinition = (ActivityPatternBindingDefinition) iterator2.next(); String pattern = activityPatternBindingDefinition.getPattern(); if (pattern != null && pattern.length() != 0) { IActivityPatternBinding activityPatternBinding = new ActivityPatternBinding(activityId, pattern); Set activityPatternBindings = (Set) activityPatternBindingsByActivityId.get(activityId); if (activityPatternBindings == null) { activityPatternBindings = new HashSet(); activityPatternBindingsByActivityId.put(activityId, activityPatternBindings); } activityPatternBindings.add(activityPatternBinding); } } } } } Map categoryActivityBindingDefinitionsByCategoryId = CategoryActivityBindingDefinition.categoryActivityBindingDefinitionsByCategoryId( activityRegistry.getCategoryActivityBindingDefinitions()); Map categoryActivityBindingsByCategoryId = new HashMap(); for (Iterator iterator = categoryActivityBindingDefinitionsByCategoryId.entrySet().iterator(); iterator.hasNext(); ) { Map.Entry entry = (Map.Entry) iterator.next(); String categoryId = (String) entry.getKey(); if (categoryDefinitionsById.containsKey(categoryId)) { Collection categoryActivityBindingDefinitions = (Collection) entry.getValue(); if (categoryActivityBindingDefinitions != null) { for (Iterator iterator2 = categoryActivityBindingDefinitions.iterator(); iterator2.hasNext(); ) { CategoryActivityBindingDefinition categoryActivityBindingDefinition = (CategoryActivityBindingDefinition) iterator2.next(); String activityId = categoryActivityBindingDefinition.getActivityId(); if (activityDefinitionsById.containsKey(activityId)) { ICategoryActivityBinding categoryActivityBinding = new CategoryActivityBinding(activityId, categoryId); Set categoryActivityBindings = (Set) categoryActivityBindingsByCategoryId.get(categoryId); if (categoryActivityBindings == null) { categoryActivityBindings = new HashSet(); categoryActivityBindingsByCategoryId.put(categoryId, categoryActivityBindings); } categoryActivityBindings.add(categoryActivityBinding); } } } } } this.activityRequirementBindingsByActivityId = activityRequirementBindingsByActivityId; this.activityDefinitionsById = activityDefinitionsById; this.activityPatternBindingsByActivityId = activityPatternBindingsByActivityId; this.categoryActivityBindingsByCategoryId = categoryActivityBindingsByCategoryId; this.categoryDefinitionsById = categoryDefinitionsById; boolean definedActivityIdsChanged = false; Set definedActivityIds = new HashSet(activityDefinitionsById.keySet()); Set previouslyDefinedActivityIds = null; if (!definedActivityIds.equals(this.definedActivityIds)) { previouslyDefinedActivityIds = this.definedActivityIds; this.definedActivityIds = definedActivityIds; definedActivityIdsChanged = true; } boolean definedCategoryIdsChanged = false; Set definedCategoryIds = new HashSet(categoryDefinitionsById.keySet()); Set previouslyDefinedCategoryIds = null; if (!definedCategoryIds.equals(this.definedCategoryIds)) { previouslyDefinedCategoryIds = this.definedCategoryIds; this.definedCategoryIds = definedCategoryIds; definedCategoryIdsChanged = true; } Set enabledActivityIds = new HashSet(this.enabledActivityIds); getRequiredActivityIds(this.enabledActivityIds, enabledActivityIds); boolean enabledActivityIdsChanged = false; Set previouslyEnabledActivityIds = null; if (!this.enabledActivityIds.equals(enabledActivityIds)) { previouslyEnabledActivityIds = this.enabledActivityIds; this.enabledActivityIds = enabledActivityIds; enabledActivityIdsChanged = true; } Map activityEventsByActivityId = updateActivities(activitiesById.keySet()); Map categoryEventsByCategoryId = updateCategories(categoriesById.keySet()); Map identifierEventsByIdentifierId = updateIdentifiers(identifiersById.keySet()); if (definedActivityIdsChanged || definedCategoryIdsChanged || enabledActivityIdsChanged) { fireActivityManagerChanged( new ActivityManagerEvent( this, definedActivityIdsChanged, definedCategoryIdsChanged, enabledActivityIdsChanged, previouslyDefinedActivityIds, previouslyDefinedCategoryIds, previouslyEnabledActivityIds)); } if (activityEventsByActivityId != null) { notifyActivities(activityEventsByActivityId); } if (categoryEventsByCategoryId != null) { notifyCategories(categoryEventsByCategoryId); } if (identifierEventsByIdentifierId != null) { notifyIdentifiers(identifierEventsByIdentifierId); } if (setDefaults) { setEnabledActivityIds(new HashSet(activityRegistry.getDefaultEnabledActivities())); } }