/** * Checks if a given persistence configuration entry is relevant for an item * * @param config the persistence configuration entry * @param item to check if the configuration applies to * @return true, if the configuration applies to the item */ protected boolean appliesToItem(PersistenceConfiguration config, Item item) { for (EObject itemCfg : config.getItems()) { if (itemCfg instanceof AllConfig) { return true; } if (itemCfg instanceof ItemConfig) { ItemConfig singleItemConfig = (ItemConfig) itemCfg; if (item.getName().equals(singleItemConfig.getItem())) { return true; } } if (itemCfg instanceof GroupConfig) { GroupConfig groupItemCfg = (GroupConfig) itemCfg; String groupName = groupItemCfg.getGroup(); try { Item gItem = itemRegistry.getItem(groupName); if (gItem instanceof GroupItem) { GroupItem groupItem = (GroupItem) gItem; if (groupItem.getAllMembers().contains(item)) { return true; } } } catch (Exception e) { } } } return false; }
/** * Retrieves all items for which the persistence configuration applies to. * * @param config the persistence configuration entry * @return all items that this configuration applies to */ protected Iterable<Item> getAllItems(PersistenceConfiguration config) { // first check, if we should return them all for (EObject itemCfg : config.getItems()) { if (itemCfg instanceof AllConfig) { return itemRegistry.getItems(); } } // otherwise, go through the detailed definitions Set<Item> items = new HashSet<Item>(); for (EObject itemCfg : config.getItems()) { if (itemCfg instanceof ItemConfig) { ItemConfig singleItemConfig = (ItemConfig) itemCfg; try { Item item = itemRegistry.getItem(singleItemConfig.getItem()); items.add(item); } catch (ItemNotFoundException e) { logger.debug("Item '{}' does not exist.", singleItemConfig.getItem()); } } if (itemCfg instanceof GroupConfig) { GroupConfig groupItemCfg = (GroupConfig) itemCfg; String groupName = groupItemCfg.getGroup(); try { Item gItem = itemRegistry.getItem(groupName); if (gItem instanceof GroupItem) { GroupItem groupItem = (GroupItem) gItem; items.addAll(groupItem.getAllMembers()); } } catch (ItemNotFoundException e) { logger.debug("Item group '{}' does not exist.", groupName); } } } return items; }