Search in sources :

Example 16 with RevisionSearcher

use of com.b2international.index.revision.RevisionSearcher in project snow-owl by b2ihealthcare.

the class ComponentEffectiveTimeRestoreChangeProcessor method process.

@Override
public void process(StagingArea staging, RevisionSearcher searcher) throws IOException {
    final Multimap<Class<? extends SnomedDocument>, SnomedDocument> componentsByType = ArrayListMultimap.create();
    staging.getChangedObjects().filter(SnomedDocument.class::isInstance).map(SnomedDocument.class::cast).filter(doc -> doc.isReleased() && EffectiveTimes.isUnset(doc.getEffectiveTime())).forEach(doc -> componentsByType.put(doc.getClass(), doc));
    if (componentsByType.isEmpty()) {
        return;
    }
    final RepositoryContext context = ClassUtils.checkAndCast(staging.getContext(), RepositoryContext.class);
    final List<String> branchesForPreviousVersion = getAvailableVersionPaths(context, staging.getBranchPath());
    if (branchesForPreviousVersion.isEmpty()) {
        return;
    }
    final Multimap<Class<? extends SnomedDocument>, String> componentHadPreviousVersionOnAnyBranch = ArrayListMultimap.create();
    for (String branchToCheck : branchesForPreviousVersion) {
        for (Class<? extends SnomedDocument> componentType : ImmutableSet.copyOf(componentsByType.keySet())) {
            final Set<String> componentIds = componentsByType.get(componentType).stream().map(SnomedDocument::getId).collect(Collectors.toSet());
            final Map<String, ? extends SnomedDocument> previousVersions = Maps.uniqueIndex(fetchPreviousComponentRevisions(staging.getIndex(), branchToCheck, componentType, componentIds), SnomedDocument::getId);
            for (SnomedDocument changedRevision : ImmutableList.copyOf(componentsByType.get(componentType))) {
                final SnomedDocument previousVersion = previousVersions.get(changedRevision.getId());
                if (previousVersion != null) {
                    if (canRestoreEffectiveTime(changedRevision, previousVersion)) {
                        SnomedDocument restoredRevision = toBuilder(changedRevision).effectiveTime(previousVersion.getEffectiveTime()).build();
                        stageChange(changedRevision, restoredRevision);
                        // successfully restored, remove from remaining item list
                        componentsByType.remove(componentType, changedRevision);
                    } else {
                        // register as a component that had an earlier version and can be ignored from the warning message beneath even if there were no prev versions to restore ET from
                        componentHadPreviousVersionOnAnyBranch.put(componentType, changedRevision.getId());
                    }
                }
            }
        }
    }
    // after checking all branches, clear everything that had at least one previous version, report anything that remains as released content without previous version
    componentHadPreviousVersionOnAnyBranch.forEach((componentType, changedRevisionId) -> {
        componentsByType.remove(componentType, changedRevisionId);
    });
    if (!componentsByType.isEmpty()) {
        log.warn("There were components which could not be restored, {}.", componentsByType.values().stream().map(SnomedDocument::getId).collect(Collectors.toSet()));
    }
}
Also used : UnexpectedTypeException(javax.validation.UnexpectedTypeException) EffectiveTimes(com.b2international.snowowl.core.date.EffectiveTimes) ChangeSetProcessorBase(com.b2international.snowowl.core.repository.ChangeSetProcessorBase) java.util(java.util) TerminologyResource(com.b2international.snowowl.core.TerminologyResource) Logger(org.slf4j.Logger) RepositoryContext(com.b2international.snowowl.core.domain.RepositoryContext) ResourceRequests(com.b2international.snowowl.core.request.ResourceRequests) ClassUtils(com.b2international.commons.ClassUtils) ResourceURIPathResolver(com.b2international.snowowl.core.uri.ResourceURIPathResolver) IOException(java.io.IOException) Function(java.util.function.Function) Collectors(java.util.stream.Collectors) SearchResourceRequest(com.b2international.snowowl.core.request.SearchResourceRequest) VersionDocument(com.b2international.snowowl.core.version.VersionDocument) RevisionSearcher(com.b2international.index.revision.RevisionSearcher) StagingArea(com.b2international.index.revision.StagingArea) RevisionIndex(com.b2international.index.revision.RevisionIndex) com.b2international.snowowl.snomed.datastore.index.entry(com.b2international.snowowl.snomed.datastore.index.entry) com.google.common.collect(com.google.common.collect) ResourceURI(com.b2international.snowowl.core.ResourceURI) Version(com.b2international.snowowl.core.version.Version) RepositoryContext(com.b2international.snowowl.core.domain.RepositoryContext)

Example 17 with RevisionSearcher

use of com.b2international.index.revision.RevisionSearcher in project snow-owl by b2ihealthcare.

the class DescriptionAcceptabilityChangeProcessor method process.

public Map<String, Multimap<Acceptability, RefSetMemberChange>> process(StagingArea staging, RevisionSearcher searcher) throws IOException {
    final Multimap<String, RefSetMemberChange> preferredMemberChanges = HashMultimap.create();
    final Multimap<String, RefSetMemberChange> acceptableMemberChanges = HashMultimap.create();
    // add active new and active dirty members
    final Stream<SnomedRefSetMemberIndexEntry> newAndDirtyMembers = Streams.concat(staging.getNewObjects(SnomedRefSetMemberIndexEntry.class).filter(member -> member.getReferenceSetType() == SnomedRefSetType.LANGUAGE), staging.getChangedRevisions(SnomedRefSetMemberIndexEntry.class).map(diff -> (SnomedRefSetMemberIndexEntry) diff.newRevision).filter(member -> member.getReferenceSetType() == SnomedRefSetType.LANGUAGE));
    newAndDirtyMembers.forEach(member -> {
        if (member.isActive()) {
            final String uuid = member.getId();
            final String refSetId = member.getRefsetId();
            final RefSetMemberChange change = new RefSetMemberChange(uuid, refSetId, MemberChangeKind.ADDED, member.isActive());
            registerChange(preferredMemberChanges, acceptableMemberChanges, member.getAcceptabilityId(), member.getReferencedComponentId(), change);
        }
    });
    // remove dirty inactive (and/or changed in acceptability) members
    final List<SnomedRefSetMemberIndexEntry> dirtyMembers = staging.getChangedRevisions(SnomedRefSetMemberIndexEntry.class).map(diff -> (SnomedRefSetMemberIndexEntry) diff.newRevision).filter(member -> member.getReferenceSetType() == SnomedRefSetType.LANGUAGE).collect(Collectors.toList());
    final Set<String> dirtyMemberIds = dirtyMembers.stream().map(SnomedRefSetMemberIndexEntry::getId).collect(Collectors.toSet());
    final List<SnomedRefSetMemberIndexEntry> detachedLanguageMembers = staging.getRemovedObjects(SnomedRefSetMemberIndexEntry.class).filter(member -> member.getReferenceSetType() == SnomedRefSetType.LANGUAGE).collect(Collectors.toList());
    final Map<String, SnomedRefSetMemberIndexEntry> currentRevisionsByMemberId = newHashMap();
    detachedLanguageMembers.forEach(member -> currentRevisionsByMemberId.put(member.getId(), member));
    searcher.get(SnomedRefSetMemberIndexEntry.class, dirtyMemberIds).forEach(member -> currentRevisionsByMemberId.put(member.getId(), member));
    for (SnomedRefSetMemberIndexEntry member : dirtyMembers) {
        final String uuid = member.getId();
        final String refSetId = member.getRefsetId();
        final RefSetMemberChange change = new RefSetMemberChange(uuid, refSetId, MemberChangeKind.REMOVED, member.isActive());
        final SnomedRefSetMemberIndexEntry before = currentRevisionsByMemberId.get(member.getId());
        if (before != null) {
            final String beforeAcceptabilityId = before.getAcceptabilityId();
            final boolean beforeActive = before.isActive();
            final boolean acceptabilityChanged = !member.getAcceptabilityId().equals(beforeAcceptabilityId);
            if (beforeActive && acceptabilityChanged) {
                registerChange(preferredMemberChanges, acceptableMemberChanges, beforeAcceptabilityId, member.getReferencedComponentId(), change);
            }
        }
        if (!member.isActive()) {
            registerChange(preferredMemberChanges, acceptableMemberChanges, member.getAcceptabilityId(), member.getReferencedComponentId(), change);
        }
    }
    for (final SnomedRefSetMemberIndexEntry before : detachedLanguageMembers) {
        if (before.isActive()) {
            final String uuid = before.getId();
            final String refSetId = before.getRefsetId();
            final String referencedComponentId = before.getReferencedComponentId();
            final String beforeAcceptabilityId = before.getAcceptabilityId();
            final RefSetMemberChange change = new RefSetMemberChange(uuid, refSetId, MemberChangeKind.REMOVED, before.isActive());
            registerChange(preferredMemberChanges, acceptableMemberChanges, beforeAcceptabilityId, referencedComponentId, change);
        }
    }
    final Map<String, Multimap<Acceptability, RefSetMemberChange>> changes = newHashMap();
    for (String descriptionId : Iterables.concat(preferredMemberChanges.keySet(), acceptableMemberChanges.keySet())) {
        if (!changes.containsKey(descriptionId)) {
            changes.put(descriptionId, HashMultimap.<Acceptability, RefSetMemberChange>create());
        }
        final Multimap<Acceptability, RefSetMemberChange> memberChanges = changes.get(descriptionId);
        memberChanges.putAll(Acceptability.PREFERRED, preferredMemberChanges.get(descriptionId));
        memberChanges.putAll(Acceptability.ACCEPTABLE, acceptableMemberChanges.get(descriptionId));
    }
    return changes;
}
Also used : RefSetMemberChange(com.b2international.snowowl.snomed.datastore.index.refset.RefSetMemberChange) Acceptability(com.b2international.snowowl.snomed.core.domain.Acceptability) Iterables(com.google.common.collect.Iterables) Maps.newHashMap(com.google.common.collect.Maps.newHashMap) SnomedRefSetMemberIndexEntry(com.b2international.snowowl.snomed.datastore.index.entry.SnomedRefSetMemberIndexEntry) Set(java.util.Set) IOException(java.io.IOException) Multimap(com.google.common.collect.Multimap) Streams(com.google.common.collect.Streams) Collectors(java.util.stream.Collectors) Concepts(com.b2international.snowowl.snomed.common.SnomedConstants.Concepts) List(java.util.List) Stream(java.util.stream.Stream) HashMultimap(com.google.common.collect.HashMultimap) RevisionSearcher(com.b2international.index.revision.RevisionSearcher) Map(java.util.Map) StagingArea(com.b2international.index.revision.StagingArea) MemberChangeKind(com.b2international.snowowl.snomed.datastore.index.refset.RefSetMemberChange.MemberChangeKind) SnomedRefSetType(com.b2international.snowowl.snomed.core.domain.refset.SnomedRefSetType) RefSetMemberChange(com.b2international.snowowl.snomed.datastore.index.refset.RefSetMemberChange) Acceptability(com.b2international.snowowl.snomed.core.domain.Acceptability) SnomedRefSetMemberIndexEntry(com.b2international.snowowl.snomed.datastore.index.entry.SnomedRefSetMemberIndexEntry) Multimap(com.google.common.collect.Multimap) HashMultimap(com.google.common.collect.HashMultimap)

Example 18 with RevisionSearcher

use of com.b2international.index.revision.RevisionSearcher in project snow-owl by b2ihealthcare.

the class RelationshipChangeProcessor method process.

@Override
public void process(StagingArea staging, RevisionSearcher searcher) throws IOException {
    final Multimap<String, RefSetMemberChange> referringRefSets = memberChangeProcessor.process(staging, searcher);
    final Set<String> referencedRelationshipIds = newHashSet(referringRefSets.keySet());
    staging.getNewObjects(SnomedRelationshipIndexEntry.class).map(SnomedRelationshipIndexEntry::getId).forEach(referencedRelationshipIds::remove);
    final Map<String, SnomedRelationshipIndexEntry> changedRelationshipsById = staging.getChangedRevisions(SnomedRelationshipIndexEntry.class).map(diff -> (SnomedRelationshipIndexEntry) diff.newRevision).collect(Collectors.toMap(relationship -> relationship.getId(), relationship -> relationship));
    final Set<String> changedRelationshipIds = newHashSet(changedRelationshipsById.keySet());
    changedRelationshipIds.addAll(referencedRelationshipIds);
    final Iterable<SnomedRelationshipIndexEntry> changedRelationshipHits = searcher.get(SnomedRelationshipIndexEntry.class, changedRelationshipIds);
    final Map<String, SnomedRelationshipIndexEntry> changedRelationshipRevisionsById = Maps.uniqueIndex(changedRelationshipHits, Revision::getId);
    for (final String id : changedRelationshipIds) {
        final SnomedRelationshipIndexEntry currentDoc = changedRelationshipRevisionsById.get(id);
        if (currentDoc == null) {
            throw new IllegalStateException(String.format("Current relationship revision should not be null for %s", id));
        }
        final SnomedRelationshipIndexEntry relationship = changedRelationshipsById.get(id);
        final Builder doc;
        if (relationship != null) {
            doc = SnomedRelationshipIndexEntry.builder(relationship);
        } else {
            doc = SnomedRelationshipIndexEntry.builder(currentDoc);
        }
        final Collection<String> currentMemberOf = currentDoc.getMemberOf();
        final Collection<String> currentActiveMemberOf = currentDoc.getActiveMemberOf();
        new ReferenceSetMembershipUpdater(referringRefSets.removeAll(id), currentMemberOf, currentActiveMemberOf).update(doc);
        stageChange(currentDoc, doc.build());
    }
}
Also used : RefSetMemberChange(com.b2international.snowowl.snomed.datastore.index.refset.RefSetMemberChange) ChangeSetProcessorBase(com.b2international.snowowl.core.repository.ChangeSetProcessorBase) Revision(com.b2international.index.revision.Revision) SnomedRelationshipIndexEntry(com.b2international.snowowl.snomed.datastore.index.entry.SnomedRelationshipIndexEntry) Collection(java.util.Collection) Set(java.util.Set) IOException(java.io.IOException) Multimap(com.google.common.collect.Multimap) Collectors(java.util.stream.Collectors) Maps(com.google.common.collect.Maps) SnomedRelationship(com.b2international.snowowl.snomed.core.domain.SnomedRelationship) RevisionSearcher(com.b2international.index.revision.RevisionSearcher) Map(java.util.Map) StagingArea(com.b2international.index.revision.StagingArea) ReferenceSetMembershipUpdater(com.b2international.snowowl.snomed.datastore.index.update.ReferenceSetMembershipUpdater) Sets.newHashSet(com.google.common.collect.Sets.newHashSet) Builder(com.b2international.snowowl.snomed.datastore.index.entry.SnomedRelationshipIndexEntry.Builder) RefSetMemberChange(com.b2international.snowowl.snomed.datastore.index.refset.RefSetMemberChange) Builder(com.b2international.snowowl.snomed.datastore.index.entry.SnomedRelationshipIndexEntry.Builder) ReferenceSetMembershipUpdater(com.b2international.snowowl.snomed.datastore.index.update.ReferenceSetMembershipUpdater) Revision(com.b2international.index.revision.Revision) SnomedRelationshipIndexEntry(com.b2international.snowowl.snomed.datastore.index.entry.SnomedRelationshipIndexEntry)

Example 19 with RevisionSearcher

use of com.b2international.index.revision.RevisionSearcher in project snow-owl by b2ihealthcare.

the class ComponentInactivationChangeProcessor method process.

@Override
public void process(StagingArea staging, RevisionSearcher searcher) throws IOException {
    // inactivating a concept should inactivate all of its descriptions, relationships, inbound relationships, and members
    final Set<String> inactivatedComponentIds = newHashSet();
    final Set<String> inactivatedConceptIds = newHashSet();
    final Set<String> reactivatedComponentIds = newHashSet();
    final Set<String> reactivatedConceptIds = newHashSet();
    staging.getChangedRevisions(SnomedComponentDocument.class).filter(diff -> diff.hasRevisionPropertyChanges(SnomedRf2Headers.FIELD_ACTIVE)).filter(diff -> diff.newRevision instanceof SnomedComponentDocument).forEach(diff -> {
        RevisionPropertyDiff propDiff = diff.getRevisionPropertyDiff(SnomedRf2Headers.FIELD_ACTIVE);
        boolean oldValue = Boolean.parseBoolean(propDiff.getOldValue());
        boolean newValue = Boolean.parseBoolean(propDiff.getNewValue());
        // inactivation
        if (oldValue && !newValue) {
            inactivatedComponentIds.add(diff.newRevision.getId());
            if (diff.newRevision instanceof SnomedConceptDocument) {
                inactivatedConceptIds.add(diff.newRevision.getId());
            }
        } else if (!oldValue && newValue) {
            reactivatedComponentIds.add(diff.newRevision.getId());
            if (diff.newRevision instanceof SnomedConceptDocument) {
                reactivatedConceptIds.add(diff.newRevision.getId());
            }
        }
    });
    processInactivations(staging, searcher, inactivatedConceptIds, inactivatedComponentIds);
    processReactivations(staging, searcher, reactivatedConceptIds, reactivatedComponentIds);
}
Also used : EffectiveTimes(com.b2international.snowowl.core.date.EffectiveTimes) ChangeSetProcessorBase(com.b2international.snowowl.core.repository.ChangeSetProcessorBase) Query(com.b2international.index.query.Query) Hits(com.b2international.index.Hits) RevisionDiff(com.b2international.index.revision.StagingArea.RevisionDiff) SnomedRefSetUtil(com.b2international.snowowl.snomed.datastore.SnomedRefSetUtil) Multimap(com.google.common.collect.Multimap) Concepts(com.b2international.snowowl.snomed.common.SnomedConstants.Concepts) ModuleIdProvider(com.b2international.snowowl.snomed.datastore.request.ModuleRequest.ModuleIdProvider) HashMultimap(com.google.common.collect.HashMultimap) RevisionSearcher(com.b2international.index.revision.RevisionSearcher) Map(java.util.Map) ObjectId(com.b2international.index.revision.ObjectId) com.b2international.snowowl.snomed.datastore.index.entry(com.b2international.snowowl.snomed.datastore.index.entry) Sets.newHashSet(com.google.common.collect.Sets.newHashSet) RevisionPropertyDiff(com.b2international.index.revision.StagingArea.RevisionPropertyDiff) ImmutableSet(com.google.common.collect.ImmutableSet) Collection(java.util.Collection) Set(java.util.Set) IOException(java.io.IOException) UUID(java.util.UUID) UndeclaredThrowableException(java.lang.reflect.UndeclaredThrowableException) Collectors(java.util.stream.Collectors) Expressions(com.b2international.index.query.Expressions) StagingArea(com.b2international.index.revision.StagingArea) ServiceProvider(com.b2international.snowowl.core.ServiceProvider) SnomedRf2Headers(com.b2international.snowowl.snomed.common.SnomedRf2Headers) SnomedRefSetType(com.b2international.snowowl.snomed.core.domain.refset.SnomedRefSetType) RevisionPropertyDiff(com.b2international.index.revision.StagingArea.RevisionPropertyDiff)

Example 20 with RevisionSearcher

use of com.b2international.index.revision.RevisionSearcher in project snow-owl by b2ihealthcare.

the class SnomedValidationIssueDetailExtension method extendConceptIssueLabels.

private void extendConceptIssueLabels(BranchContext context, Collection<ValidationIssue> issues, Map<String, Object> ruleParameters) {
    final RevisionSearcher searcher = context.service(RevisionSearcher.class);
    final List<ValidationIssue> conceptIssues = issues.stream().filter(issue -> SnomedConcept.TYPE == issue.getAffectedComponent().getComponentType()).collect(Collectors.toList());
    final Map<String, ValidationIssue> memberIssues = issues.stream().filter(issue -> SnomedReferenceSetMember.TYPE == issue.getAffectedComponent().getComponentType()).collect(Collectors.toMap(issue -> issue.getAffectedComponent().getComponentId(), issue -> issue, (issue1, issue2) -> issue1));
    if (conceptIssues.isEmpty() && memberIssues.isEmpty()) {
        return;
    }
    final Builder<String, ValidationIssue> issuesByConceptId = ImmutableMultimap.builder();
    conceptIssues.forEach(issue -> issuesByConceptId.put(issue.getAffectedComponent().getComponentId(), issue));
    searcher.stream(Query.select(String[].class).from(SnomedRefSetMemberIndexEntry.class).fields(SnomedRefSetMemberIndexEntry.Fields.ID, SnomedRefSetMemberIndexEntry.Fields.REFERENCED_COMPONENT_ID).where(Expressions.builder().filter(SnomedRefSetMemberIndexEntry.Expressions.active()).filter(SnomedRefSetMemberIndexEntry.Expressions.ids(memberIssues.keySet())).build()).limit(SCROLL_SIZE).build()).forEach(hits -> {
        for (String[] hit : hits) {
            final String memberId = hit[0];
            final String containerConcpetId = hit[1];
            issuesByConceptId.put(containerConcpetId, memberIssues.get(memberId));
        }
    });
    final Multimap<String, ValidationIssue> issuesByConceptMap = issuesByConceptId.build();
    final Map<String, String> affectedComponentLabelsByConcept = getAffectedComponentLabels(context, ruleParameters, issuesByConceptMap.keySet());
    if (!affectedComponentLabelsByConcept.isEmpty()) {
        issuesByConceptMap.keySet().forEach(conceptId -> {
            issuesByConceptMap.get(conceptId).forEach(issue -> {
                issue.setAffectedComponentLabels(ImmutableList.of(affectedComponentLabelsByConcept.get(conceptId)));
            });
        });
    }
}
Also used : EffectiveTimes(com.b2international.snowowl.core.date.EffectiveTimes) RelationshipValueType(com.b2international.snowowl.snomed.core.domain.RelationshipValueType) SnomedConcept(com.b2international.snowowl.snomed.core.domain.SnomedConcept) java.util(java.util) Query(com.b2international.index.query.Query) Hits(com.b2international.index.Hits) ValidationIssue(com.b2international.snowowl.core.validation.issue.ValidationIssue) QueryBuilder(com.b2international.index.query.Query.QueryBuilder) SET_MEMBER(com.b2international.snowowl.core.terminology.ComponentCategory.SET_MEMBER) ValidationIssueDetailExtension(com.b2international.snowowl.core.validation.issue.ValidationIssueDetailExtension) Concepts(com.b2international.snowowl.snomed.common.SnomedConstants.Concepts) Strings(com.google.common.base.Strings) ExtendedLocale(com.b2international.commons.http.ExtendedLocale) SnomedDescriptionUtils(com.b2international.snowowl.snomed.datastore.SnomedDescriptionUtils) SnomedRequests(com.b2international.snowowl.snomed.datastore.request.SnomedRequests) Options(com.b2international.commons.options.Options) RevisionSearcher(com.b2international.index.revision.RevisionSearcher) ExpressionBuilder(com.b2international.index.query.Expressions.ExpressionBuilder) SnomedDescriptions(com.b2international.snowowl.snomed.core.domain.SnomedDescriptions) com.b2international.snowowl.snomed.datastore.index.entry(com.b2international.snowowl.snomed.datastore.index.entry) Sets.newHashSet(com.google.common.collect.Sets.newHashSet) com.google.common.collect(com.google.common.collect) CONCEPT(com.b2international.snowowl.core.terminology.ComponentCategory.CONCEPT) SnomedTerminologyComponentConstants(com.b2international.snowowl.snomed.common.SnomedTerminologyComponentConstants) Collectors(java.util.stream.Collectors) SnomedIssueDetailFilterFields(com.b2international.snowowl.snomed.validation.detail.SnomedValidationIssueDetailExtension.SnomedIssueDetailFilterFields) SnomedRelationship(com.b2international.snowowl.snomed.core.domain.SnomedRelationship) DESCRIPTION(com.b2international.snowowl.core.terminology.ComponentCategory.DESCRIPTION) SnomedDescription(com.b2international.snowowl.snomed.core.domain.SnomedDescription) Expressions(com.b2international.index.query.Expressions) DecimalUtils(com.b2international.index.util.DecimalUtils) SnomedReferenceSetMember(com.b2international.snowowl.snomed.core.domain.refset.SnomedReferenceSetMember) ValidationConfiguration(com.b2international.snowowl.core.internal.validation.ValidationConfiguration) RELATIONSHIP(com.b2international.snowowl.core.terminology.ComponentCategory.RELATIONSHIP) Expression(com.b2international.index.query.Expression) Component(com.b2international.snowowl.core.plugin.Component) Builder(com.google.common.collect.ImmutableMultimap.Builder) BranchContext(com.b2international.snowowl.core.domain.BranchContext) ComponentCategory(com.b2international.snowowl.core.terminology.ComponentCategory) ValidationIssue(com.b2international.snowowl.core.validation.issue.ValidationIssue) RevisionSearcher(com.b2international.index.revision.RevisionSearcher)

Aggregations

RevisionSearcher (com.b2international.index.revision.RevisionSearcher)20 IOException (java.io.IOException)15 StagingArea (com.b2international.index.revision.StagingArea)10 Sets.newHashSet (com.google.common.collect.Sets.newHashSet)9 Query (com.b2international.index.query.Query)8 Concepts (com.b2international.snowowl.snomed.common.SnomedConstants.Concepts)8 Set (java.util.Set)8 Hits (com.b2international.index.Hits)7 Expressions (com.b2international.index.query.Expressions)7 Collectors (java.util.stream.Collectors)7 SnomedRefSetType (com.b2international.snowowl.snomed.core.domain.refset.SnomedRefSetType)6 Collection (java.util.Collection)6 RevisionPropertyDiff (com.b2international.index.revision.StagingArea.RevisionPropertyDiff)5 ChangeSetProcessorBase (com.b2international.snowowl.core.repository.ChangeSetProcessorBase)5 com.b2international.snowowl.snomed.datastore.index.entry (com.b2international.snowowl.snomed.datastore.index.entry)5 SnomedConceptDocument (com.b2international.snowowl.snomed.datastore.index.entry.SnomedConceptDocument)5 SnomedRefSetMemberIndexEntry (com.b2international.snowowl.snomed.datastore.index.entry.SnomedRefSetMemberIndexEntry)5 RefSetMemberChange (com.b2international.snowowl.snomed.datastore.index.refset.RefSetMemberChange)5 Multimap (com.google.common.collect.Multimap)5 Options (com.b2international.commons.options.Options)4