List of usage examples for org.apache.commons.collections CollectionUtils subtract
public static Collection subtract(final Collection a, final Collection b)
From source file:biz.netcentric.cq.tools.actool.authorizableutils.impl.AuthorizableCreatorServiceImpl.java
@SuppressWarnings("unchecked") void mergeMemberOfGroups(String principalId, AcInstallationHistoryPojo status, UserManager userManager, Set<String> membershipGroupsFromConfig, Set<String> membershipGroupsFromRepository) throws RepositoryException, AuthorizableExistsException, AuthorizableCreatorException { LOG.debug("mergeMemberOfGroups() for {}", principalId); // membership to everyone cannot be removed or added => take it out from both lists membershipGroupsFromConfig.remove(PRINCIPAL_EVERYONE); membershipGroupsFromRepository.remove(PRINCIPAL_EVERYONE); logAndVerboseHistoryMessage(status,/*from w w w . j av a 2 s.c o m*/ "Principal " + principalId + " isMemberOf(repo)=" + membershipGroupsFromRepository); logAndVerboseHistoryMessage(status, "Principal " + principalId + " isMemberOf(conifg)=" + membershipGroupsFromConfig); Set<String> validatedMembershipGroupsFromConfig = validateAssignedGroups(userManager, principalId, membershipGroupsFromConfig); Collection<String> unChangedMembers = CollectionUtils.intersection(membershipGroupsFromRepository, validatedMembershipGroupsFromConfig); logAndVerboseHistoryMessage(status, "Principal " + principalId + " remains member of groups " + unChangedMembers); Collection<String> toBeAddedMembers = CollectionUtils.subtract(validatedMembershipGroupsFromConfig, membershipGroupsFromRepository); logAndVerboseHistoryMessage(status, "Principal " + principalId + " will be added as member of " + toBeAddedMembers); Collection<String> toBeRemovedMembers = CollectionUtils.subtract(membershipGroupsFromRepository, validatedMembershipGroupsFromConfig); Set<String> toBeSkippedFromRemovalMembers = new HashSet<String>(); Pattern ignoredMembershipsPattern = status.getAcConfiguration().getGlobalConfiguration() .getAllowExternalGroupNamesRegEx(); Iterator<String> toBeRemovedMembersIt = toBeRemovedMembers.iterator(); while (toBeRemovedMembersIt.hasNext()) { String groupId = toBeRemovedMembersIt.next(); if ((ignoredMembershipsPattern != null) && ignoredMembershipsPattern.matcher(groupId).find()) { toBeSkippedFromRemovalMembers.add(groupId); toBeRemovedMembersIt.remove(); } } logAndVerboseHistoryMessage(status, "Principal " + principalId + " will be removed from members of " + toBeRemovedMembers); if (!toBeSkippedFromRemovalMembers.isEmpty()) { logAndVerboseHistoryMessage(status, "Principal " + principalId + " remains member of groups " + toBeSkippedFromRemovalMembers + " (due to configured ignoredMembershipsPattern=" + ignoredMembershipsPattern + ")"); } // perform changes Authorizable currentAuthorizable = userManager.getAuthorizable(principalId); for (String groupId : toBeAddedMembers) { LOG.debug("Membership Change: Adding {} to members of group {} in repository", principalId, groupId); Authorizable targetAuthorizable = userManager.getAuthorizable(groupId); ((Group) targetAuthorizable).addMember(currentAuthorizable); } for (String groupId : toBeRemovedMembers) { LOG.debug("Membership Change: Removing {} from members of group {} in repository", principalId, groupId); Authorizable targetAuthorizable = userManager.getAuthorizable(groupId); ((Group) targetAuthorizable).removeMember(currentAuthorizable); } if (!toBeAddedMembers.isEmpty() && !toBeAddedMembers.isEmpty()) { logAndVerboseHistoryMessage(status, "Membership Change: Principal " + principalId + " was added to " + toBeAddedMembers.size() + " and removed from " + toBeRemovedMembers.size() + " groups"); } }
From source file:net.sourceforge.fenixedu.domain.candidacyProcess.mobility.MobilityApplicationProcess.java
public List<ErasmusCandidacyProcessReport> getUndoneReports() { return new ArrayList(CollectionUtils.subtract(getErasmusCandidacyProcessReportsSet(), getDoneReports())); }
From source file:net.sourceforge.fenixedu.domain.student.importation.DgesStudentImportationProcess.java
public static List<DgesStudentImportationProcess> readUndoneJobs(final ExecutionYear executionYear) { return new ArrayList(CollectionUtils.subtract(readAllJobs(executionYear), readDoneJobs(executionYear))); }
From source file:com.github.NearestNeighbors.java
/** * Calculates accuracy between actual and predicted watchers. * /*from ww w . j av a 2 s . c o m*/ * @param actual * @param predicted * @return */ public static float accuracy(final Watcher actual, final Watcher predicted) { if ((actual == null) || (predicted == null)) { return 0.0f; } if ((actual.repositories.isEmpty()) && (predicted.repositories.isEmpty())) { return 1.0f; } if ((actual.repositories.isEmpty()) && (!predicted.repositories.isEmpty())) { return 0.0f; } if ((actual.repositories.isEmpty()) || (predicted.repositories.isEmpty())) { return 0.0f; } int number_correct = CollectionUtils.intersection(actual.repositories, predicted.repositories).size(); int number_incorrect = CollectionUtils.subtract(predicted.repositories, actual.repositories).size(); // Rate the accuracy of the predictions, with a bias towards positive results. return ((float) number_correct) / actual.repositories.size(); // - ((float) (number_incorrect) / predicted.repositories.size(); }
From source file:net.mojodna.searchable.AbstractSearcher.java
/** * Gets a list of all fields present in the index. * // w w w . j a v a 2 s .com * @param reader IndexReader to use to obtain fields. * @return Array of field names. */ protected String[] getFieldsPresent(final IndexReader reader) { return SearchableUtils.toStringArray(CollectionUtils .subtract(reader.getFieldNames(IndexReader.FieldOption.ALL), IndexSupport.PRIVATE_FIELD_NAMES)); }
From source file:com.jaspersoft.jasperserver.api.metadata.user.service.impl.UserAuthorityServiceImpl.java
/** * Ensure the external user has the right roles. Roles attached to the userDetails are the definitive list * of externally defined roles./*from www. j a va2s . c o m*/ * * @param externalRoles * @param user */ protected void alignInternalAndExternalUser(Set externalRoles, User user) { final Predicate externallyDefinedRoles = new Predicate() { public boolean evaluate(Object input) { if (!(input instanceof Role)) { return false; } return ((Role) input).isExternallyDefined(); } }; Set currentRoles = user.getRoles(); // we may have a new user, so always persist them boolean persistUserNeeded = (currentRoles.size() == 0); /* // If it is externally authenticated, no save of password if (!user.getPassword().equals(userDetails.getPassword())) { user.setPassword(userDetails.getPassword()); persistUserNeeded = true; } */ Collection currentExternalRoles = CollectionUtils.select(user.getRoles(), externallyDefinedRoles); if (log.isDebugEnabled()) { log.debug("Login of external User: " + user.getUsername()); log.debug("Roles from authentication:\n" + roleCollectionToString(externalRoles)); log.debug("Current roles from metadata:\n" + roleCollectionToString(user.getRoles())); log.debug("Current external roles for user from metadata: " + user.getUsername() + "\n" + roleCollectionToString(currentExternalRoles)); } /* * If we have new external roles, we want to add them */ Collection newExternalRoles = CollectionUtils.subtract(externalRoles, currentExternalRoles); if (newExternalRoles.size() > 0) { currentRoles.addAll(newExternalRoles); if (log.isWarnEnabled()) { log.warn("Added following external roles to: " + user.getUsername() + "\n" + roleCollectionToString(newExternalRoles)); } persistUserNeeded = true; } /* * If external roles have been removed, we need to remove them */ Collection rolesNeedingRemoval = CollectionUtils.subtract(currentExternalRoles, externalRoles); if (rolesNeedingRemoval.size() > 0) { currentRoles.removeAll(rolesNeedingRemoval); if (log.isWarnEnabled()) { log.warn("Removed following external roles from: " + user.getUsername() + "\n" + roleCollectionToString(rolesNeedingRemoval)); } persistUserNeeded = true; } /* * If we have new default internal roles, we want to add them */ Collection defaultInternalRolesToAdd = CollectionUtils.subtract(getNewDefaultInternalRoles(), currentRoles); if (defaultInternalRolesToAdd.size() > 0) { if (log.isDebugEnabled()) { log.debug("Default internal roles: " + roleCollectionToString(getNewDefaultInternalRoles())); } currentRoles.addAll(defaultInternalRolesToAdd); if (log.isWarnEnabled()) { log.warn("Added following new default internal roles to: " + user.getUsername() + "\n" + roleCollectionToString(defaultInternalRolesToAdd)); } persistUserNeeded = true; } if (persistUserNeeded) { if (log.isWarnEnabled()) { log.warn("Updated user: " + user.getUsername() + ". Roles are now:\n" + roleCollectionToString(currentRoles)); } user.setRoles(currentRoles); // persist user and roles doPutUser(new ExecutionContextImpl(), user); if (log.isWarnEnabled()) { log.warn("Updated user: " + user.getUsername() + ". Roles are now:\n" + roleCollectionToString(currentRoles)); } } }
From source file:com.amalto.workbench.utils.LocalTreeObjectRepository.java
public void mergeImportCategory(TreeObject[] xobjectsToImport, TreeParent serverRoot) { if (xobjectsToImport.length == 0 || originalImportXobjects == null || originalImportXobjects.length == 0) { return;//from ww w . j a va2 s. c o m } Collection dels = CollectionUtils.subtract(Arrays.asList(originalImportXobjects), Arrays.asList(xobjectsToImport)); ArrayList<TreeObject> delList = new ArrayList<TreeObject>(dels); ArrayList<String> xpaths = new ArrayList<String>(); for (TreeObject del : delList) { String xpath = this.getXPathForTreeObject(del); xpath.replaceFirst("/" + del.getServerRoot().getUser().getUsername(), //$NON-NLS-1$ "/" + serverRoot.getUser().getUsername());//$NON-NLS-1$ xpaths.add(xpath); } mergeImportCategory(importCategories, serverRoot, xpaths); }
From source file:edu.jhuapl.openessence.datasource.jdbc.entry.JdbcOeDataEntrySource.java
/** * Takes collection of db-key/value pairings from the original and replacement records. Returns a map of * sqlOperation/list of db-key/value pairings. The 3 sqlOperations are "INSERT" "UPDATE" and "DELETE." Basic logic is * this:/*from www .j av a2 s .c o m*/ * * UPDATE - pk/val exists in original AND replacement record INSERT - pk/val exists in replacement record but NOT in * original record DELETE - pk/val exists in origianal record but NOT in replacement record * * @param originalPks original record's set of (dbkeys<->values) * @param replacementPks replacement record's set of (dbkeys<->values) * @return categorization of the original and replacement records' (dbkeys<->values) into INSERT, UPDATE, DELETE * operations */ public Map<String, List<Map<String, Object>>> categorizePKs(Set<Map<String, Object>> originalPks, Set<Map<String, Object>> replacementPks) { Set<Map<String, Object>> ORIG = originalPks; Set<Map<String, Object>> REPL = replacementPks; List<Map<String, Object>> UPDATE = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> INSERT = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> DELETE = new ArrayList<Map<String, Object>>(); UPDATE.addAll(CollectionUtils.intersection(ORIG, REPL)); INSERT.addAll(CollectionUtils.subtract(REPL, ORIG)); DELETE.addAll(CollectionUtils.subtract(ORIG, REPL)); Map<String, List<Map<String, Object>>> categorizedPKs = new HashMap<String, List<Map<String, Object>>>(); categorizedPKs.put("UPDATE", UPDATE); categorizedPKs.put("INSERT", INSERT); categorizedPKs.put("DELETE", DELETE); log.debug("pks for update: " + UPDATE); log.debug("pks for insertion: " + INSERT); log.debug("pks for deletion: " + DELETE); return categorizedPKs; }
From source file:com.mirth.connect.client.ui.Frame.java
/** * Adds dependent/dependency dashboard statuses to the given set, based on the type of task * being performed./* w ww .j a va 2 s . c om*/ */ private boolean getStatusesWithDependencies(Set<DashboardStatus> selectedDashboardStatuses, ChannelTask task) { try { ChannelDependencyGraph channelDependencyGraph = new ChannelDependencyGraph( channelPanel.getCachedChannelDependencies()); Set<String> selectedChannelIds = new HashSet<String>(); Set<String> channelIdsToHandle = new HashSet<String>(); Map<String, DashboardStatus> statusMap = new HashMap<String, DashboardStatus>(); for (DashboardStatus dashboardStatus : status) { statusMap.put(dashboardStatus.getChannelId(), dashboardStatus); } // For each selected channel, add any dependent/dependency channels as necessary for (DashboardStatus dashboardStatus : selectedDashboardStatuses) { selectedChannelIds.add(dashboardStatus.getChannelId()); addChannelToTaskSet(dashboardStatus.getChannelId(), channelDependencyGraph, statusMap, channelIdsToHandle, task); } // If additional channels were added to the set, we need to prompt the user if (!CollectionUtils.subtract(channelIdsToHandle, selectedChannelIds).isEmpty()) { ChannelDependenciesWarningDialog dialog = new ChannelDependenciesWarningDialog(task, channelPanel.getCachedChannelDependencies(), selectedChannelIds, channelIdsToHandle); if (dialog.getResult() == JOptionPane.OK_OPTION) { if (dialog.isIncludeOtherChannels()) { for (String channelId : channelIdsToHandle) { selectedDashboardStatuses.add(statusMap.get(channelId)); } } } else { return false; } } } catch (ChannelDependencyException e) { // Should never happen e.printStackTrace(); } return true; }
From source file:nl.strohalm.cyclos.services.elements.ElementServiceImpl.java
@SuppressWarnings("unchecked") @Override// w w w .ja v a 2 s. com public BulkMemberActionResultVO bulkChangeMemberChannels(final FullTextMemberQuery query, Collection<Channel> enableChannels, Collection<Channel> disableChannels) throws ValidationException { validateBulkChangeChannels(query, enableChannels, disableChannels); // load the channels to ensure they are valid ones enableChannels = channelService.load(EntityHelper.toIds(enableChannels)); disableChannels = channelService.load(EntityHelper.toIds(disableChannels)); int changed = 0, unchanged = 0; // force the result type to ITERATOR to avoid load all members in memory query.setIterateAll(); final List<Member> members = (List<Member>) fullTextSearch(query); CacheCleaner cacheCleaner = new CacheCleaner(fetchService); for (Member member : members) { member = fetchService.fetch(member, Member.Relationships.CHANNELS, Element.Relationships.GROUP); boolean mustChange = false; for (Channel channel : enableChannels) { if (accessService.isChannelAllowedToBeEnabledForMember(channel, member) && !member.getChannels().contains(channel)) { mustChange = true; member.getChannels().add(channel); } } Collection<Channel> memberChannels = accessService.getChannelsEnabledForMember(member); Collection<Channel> memberDisabledChannels = CollectionUtils.subtract(channelService.list(), memberChannels); Collection<Channel> toDisableChannels = CollectionUtils.subtract(disableChannels, memberDisabledChannels); if (CollectionUtils.isNotEmpty(toDisableChannels)) { mustChange = true; // at this point disableChannels contains only actually enabled member channels for (Channel channel : toDisableChannels) { member.getChannels().remove(channel); } } if (mustChange) { changed++; elementDao.update(member); } else { unchanged++; } cacheCleaner.clearCache(); } return new BulkMemberActionResultVO(changed, unchanged); }