Search in sources :

Example 1 with RevisionBranch

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

the class BranchSearchRequest method toBranchData.

private List<Branch> toBranchData(final BaseRevisionBranching branching, final Iterable<RevisionBranch> hits) {
    final Map<String, RevisionBranch> branchesById = newHashMap();
    final ImmutableList.Builder<Branch> branches = ImmutableList.builder();
    for (RevisionBranch doc : hits) {
        final BranchState state;
        if (doc.isMain()) {
            // XXX MAIN branch is always up to date
            state = BranchState.UP_TO_DATE;
        } else {
            final String parentPath = doc.getParentPath();
            if (!branchesById.containsKey(parentPath)) {
                branchesById.put(parentPath, branching.getBranch(parentPath));
            }
            state = branching.getBranchState(doc, branchesById.get(parentPath));
        }
        branches.add(new Branch(doc, state, BranchPathUtils.createPath(doc.getPath()), doc.getMergeSources()));
    }
    return branches.build();
}
Also used : RevisionBranch(com.b2international.index.revision.RevisionBranch) ImmutableList(com.google.common.collect.ImmutableList) RevisionBranch(com.b2international.index.revision.RevisionBranch) BranchState(com.b2international.index.revision.RevisionBranch.BranchState)

Example 2 with RevisionBranch

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

the class BranchSearchRequest method toCollectionResource.

@Override
protected Branches toCollectionResource(RepositoryContext context, Hits<RevisionBranch> hits) {
    final BaseRevisionBranching branching = context.service(BaseRevisionBranching.class);
    final List<Branch> branchHits = toBranchData(branching, hits);
    expand(context, branchHits);
    return new Branches(branchHits, hits.getSearchAfter(), limit(), hits.getTotal());
}
Also used : RevisionBranch(com.b2international.index.revision.RevisionBranch) BaseRevisionBranching(com.b2international.index.revision.BaseRevisionBranching)

Example 3 with RevisionBranch

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

the class SnomedBranchRequestTest method assertBranchSegmentsValid.

// assert the low level segments
private void assertBranchSegmentsValid(final String parentPath, final String createdFirstPath, final String createdSecondPath) {
    BaseRevisionBranching branching = ApplicationContext.getServiceForClass(RepositoryManager.class).get(REPOSITORY_ID).service(BaseRevisionBranching.class);
    RevisionBranch parent = branching.getBranch(parentPath);
    RevisionBranch createdFirst = branching.getBranch(createdFirstPath);
    RevisionBranch createdSecond = branching.getBranch(createdSecondPath);
    SortedSet<RevisionSegment> firstParentSegments = createdFirst.getParentSegments();
    SortedSet<RevisionSegment> secondParentSegments = createdSecond.getParentSegments();
    // verify that first and second has a common parent start address (END address is their base timestamp, so that will be different)
    assertEquals(firstParentSegments.last().getStartAddress(), secondParentSegments.last().getStartAddress());
    assertNotEquals(firstParentSegments.last().getEndAddress(), secondParentSegments.last().getEndAddress());
    // and parent-parent-segments of first and second are equal
    assertEquals(firstParentSegments.headSet(firstParentSegments.last()), secondParentSegments.headSet(secondParentSegments.last()));
}
Also used : RevisionBranch(com.b2international.index.revision.RevisionBranch) RevisionSegment(com.b2international.index.revision.RevisionSegment) BaseRevisionBranching(com.b2international.index.revision.BaseRevisionBranching)

Example 4 with RevisionBranch

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

the class BranchReopenRequest method execute.

@Override
public Boolean execute(RepositoryContext context) {
    final BaseRevisionBranching branching = context.service(BaseRevisionBranching.class);
    final RevisionBranch branch = branching.getBranch(getBranchPath());
    try {
        final RevisionBranch parentBranch = branching.getBranch(branch.getParentPath());
        branching.reopen(parentBranch, branch.getName(), branch.metadata());
        return true;
    } catch (NotFoundException e) {
        // if parent not found, convert it to BadRequestException
        throw e.toBadRequestException();
    }
}
Also used : RevisionBranch(com.b2international.index.revision.RevisionBranch) NotFoundException(com.b2international.commons.exceptions.NotFoundException) BaseRevisionBranching(com.b2international.index.revision.BaseRevisionBranching)

Example 5 with RevisionBranch

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

the class CodeSystemConverter method expandUpgradeOfInfo.

private void expandUpgradeOfInfo(List<CodeSystem> results) {
    if (!expand().containsKey(CodeSystem.Expand.UPGRADE_INFO)) {
        return;
    }
    final List<ResourceURI> upgradeOfURIs = results.stream().filter(codeSystem -> codeSystem.getUpgradeOf() != null).map(codeSystem -> codeSystem.getUpgradeOf().withoutPath()).collect(Collectors.toList());
    // nothing to expand, quit early
    if (upgradeOfURIs.isEmpty()) {
        return;
    }
    final List<String> upgradeOfBranches = context().service(ResourceURIPathResolver.class).resolve(context(), upgradeOfURIs);
    final Map<ResourceURI, String> branchesByUpgradeOf = Maps.newHashMap();
    Iterator<ResourceURI> uriIterator = upgradeOfURIs.iterator();
    Iterator<String> branchIterator = upgradeOfBranches.iterator();
    while (uriIterator.hasNext() && branchIterator.hasNext()) {
        ResourceURI uri = uriIterator.next();
        String branch = branchIterator.next();
        branchesByUpgradeOf.put(uri, branch);
    }
    for (CodeSystem result : results) {
        BaseRevisionBranching branching = context().service(RepositoryManager.class).get(result.getToolingId()).service(BaseRevisionBranching.class);
        String upgradeOfCodeSystemBranchPath = branchesByUpgradeOf.get(result.getUpgradeOf().withoutPath());
        if (!Strings.isNullOrEmpty(upgradeOfCodeSystemBranchPath)) {
            RevisionBranch branch = branching.getBranch(result.getBranchPath());
            BranchState branchState = branching.getBranchState(result.getBranchPath(), upgradeOfCodeSystemBranchPath);
            BranchInfo mainInfo = new BranchInfo(branch.getPath(), branchState, branch.getBaseTimestamp(), branch.getHeadTimestamp());
            List<ResourceURI> availableVersions = Lists.newArrayList();
            List<BranchInfo> versionBranchInfo = Lists.newArrayList();
            if (!result.getUpgradeOf().isHead()) {
                long startTimestamp;
                final String upgradeOfVersionBranch = context().service(ResourceURIPathResolver.class).resolve(context(), List.of(result.getUpgradeOf())).stream().findFirst().orElse("");
                if (!Strings.isNullOrEmpty(upgradeOfVersionBranch)) {
                    startTimestamp = branching.getBranch(upgradeOfVersionBranch).getBaseTimestamp() + 1;
                } else {
                    startTimestamp = Long.MIN_VALUE;
                }
                ResourceRequests.prepareSearchVersion().all().filterByResource(result.getUpgradeOf().withoutPath()).filterByResourceBranchPath(upgradeOfCodeSystemBranchPath).build().execute(context()).stream().filter(csv -> !csv.getVersionResourceURI().isHead()).forEach(csv -> {
                    RevisionBranch versionBranch = branching.getBranch(csv.getBranchPath());
                    if (versionBranch.getBaseTimestamp() > startTimestamp) {
                        BranchState versionBranchState = branching.getBranchState(result.getBranchPath(), versionBranch.getPath());
                        if (versionBranchState == BranchState.BEHIND || versionBranchState == BranchState.DIVERGED) {
                            availableVersions.add(csv.getVersionResourceURI());
                        }
                        versionBranchInfo.add(new BranchInfo(branch.getPath(), versionBranchState, versionBranch.getBaseTimestamp(), versionBranch.getHeadTimestamp()));
                    }
                });
            }
            result.setUpgradeInfo(new UpgradeInfo(mainInfo, versionBranchInfo, availableVersions));
        }
    }
}
Also used : BaseRevisionBranching(com.b2international.index.revision.BaseRevisionBranching) java.util(java.util) BranchState(com.b2international.index.revision.RevisionBranch.BranchState) RepositoryContext(com.b2international.snowowl.core.domain.RepositoryContext) ResourceRequests(com.b2international.snowowl.core.request.ResourceRequests) RepositoryManager(com.b2international.snowowl.core.RepositoryManager) RevisionBranch(com.b2international.index.revision.RevisionBranch) BranchInfo(com.b2international.snowowl.core.branch.BranchInfo) ResourceURIPathResolver(com.b2international.snowowl.core.uri.ResourceURIPathResolver) Collectors(java.util.stream.Collectors) Maps(com.google.common.collect.Maps) Multimaps(com.google.common.collect.Multimaps) ResourceDocument(com.b2international.snowowl.core.internal.ResourceDocument) Strings(com.google.common.base.Strings) ExtendedLocale(com.b2international.commons.http.ExtendedLocale) Options(com.b2international.commons.options.Options) Lists(com.google.common.collect.Lists) TreeMultimap(com.google.common.collect.TreeMultimap) Versions(com.b2international.snowowl.core.version.Versions) ResourceURI(com.b2international.snowowl.core.ResourceURI) BaseResourceConverter(com.b2international.snowowl.core.request.BaseResourceConverter) Version(com.b2international.snowowl.core.version.Version) ResourceURI(com.b2international.snowowl.core.ResourceURI) RevisionBranch(com.b2international.index.revision.RevisionBranch) BranchInfo(com.b2international.snowowl.core.branch.BranchInfo) BranchState(com.b2international.index.revision.RevisionBranch.BranchState) BaseRevisionBranching(com.b2international.index.revision.BaseRevisionBranching) ResourceURIPathResolver(com.b2international.snowowl.core.uri.ResourceURIPathResolver)

Aggregations

RevisionBranch (com.b2international.index.revision.RevisionBranch)7 BaseRevisionBranching (com.b2international.index.revision.BaseRevisionBranching)6 BranchState (com.b2international.index.revision.RevisionBranch.BranchState)3 RepositoryManager (com.b2international.snowowl.core.RepositoryManager)2 BranchInfo (com.b2international.snowowl.core.branch.BranchInfo)2 NotFoundException (com.b2international.commons.exceptions.NotFoundException)1 ExtendedLocale (com.b2international.commons.http.ExtendedLocale)1 Options (com.b2international.commons.options.Options)1 RevisionSegment (com.b2international.index.revision.RevisionSegment)1 Repository (com.b2international.snowowl.core.Repository)1 ResourceURI (com.b2international.snowowl.core.ResourceURI)1 IBranchPath (com.b2international.snowowl.core.api.IBranchPath)1 RepositoryContext (com.b2international.snowowl.core.domain.RepositoryContext)1 ResourceDocument (com.b2international.snowowl.core.internal.ResourceDocument)1 DatastoreLockTarget (com.b2international.snowowl.core.internal.locks.DatastoreLockTarget)1 BaseResourceConverter (com.b2international.snowowl.core.request.BaseResourceConverter)1 ResourceRequests (com.b2international.snowowl.core.request.ResourceRequests)1 ResourceURIPathResolver (com.b2international.snowowl.core.uri.ResourceURIPathResolver)1 Version (com.b2international.snowowl.core.version.Version)1 Versions (com.b2international.snowowl.core.version.Versions)1