public ResponseLinking copyWithFilteredResponses(final Predicate<Response> toKeepCondition) { final Set<Response> newIncompletes = Sets.filter(incompleteResponses(), toKeepCondition); final ImmutableSet.Builder<ResponseSet> newResponseSetsB = ImmutableSet.builder(); final ImmutableBiMap.Builder<String, ResponseSet> responseSetsIdB = ImmutableBiMap.builder(); // to account for ResponseSets merging due to lost annotation final Set<ResponseSet> alreadyAdded = Sets.newHashSet(); for (final ResponseSet responseSet : responseSets()) { final ImmutableSet<Response> okResponses = FluentIterable.from(responseSet.asSet()).filter(toKeepCondition).toSet(); if (!okResponses.isEmpty()) { final ResponseSet newResponseSet = ResponseSet.from(okResponses); if (alreadyAdded.contains(newResponseSet)) { continue; } alreadyAdded.add(newResponseSet); newResponseSetsB.add(newResponseSet); if (responseSetIds().isPresent()) { responseSetsIdB.put(responseSetIds().get().inverse().get(responseSet), newResponseSet); } } } final ImmutableSet<ResponseSet> newResponseSets = newResponseSetsB.build(); final ResponseLinking.Builder ret = ResponseLinking.builder() .docID(docID()) .responseSets(newResponseSets) .incompleteResponses(newIncompletes); if (responseSetIds().isPresent()) { ret.responseSetIds(responseSetsIdB.build()); } return ret.build(); }
@Override public ResponseInfoBean readResponseInfo( final ChaiUser theUser, final UserIdentity userIdentity, final String userGUID) throws PwmUnrecoverableException { final ResponseSet responseSet = readResponsesFromNovellUA(pwmApplication, theUser); if (responseSet == null) { return null; } final Map<Challenge, String> crMap = new LinkedHashMap<>(); final Map<Challenge, String> helpdeskCrMap = new LinkedHashMap<>(); try { for (final Challenge loopChallenge : responseSet.getChallengeSet().getChallenges()) { crMap.put(loopChallenge, ""); } for (final Challenge loopChallenge : responseSet.getHelpdeskResponses().keySet()) { helpdeskCrMap.put(loopChallenge, ""); } return new ResponseInfoBean( crMap, helpdeskCrMap, PwmConstants.DEFAULT_LOCALE, responseSet.getChallengeSet().getMinRandomRequired(), responseSet.getChallengeSet().getIdentifier(), DataStorageMethod.NMASUAWS, null); } catch (ChaiValidationException e) { LOGGER.error( "unexpected error converting NMASUserAppWebService ResponseSet to ResponseInfoBean: " + e.getMessage()); } return null; // To change body of implemented methods use File | Settings | File Templates. }