001package com.teamscale.commons.links; 002 003import org.conqat.engine.index.shared.CommitDescriptor; 004import org.conqat.engine.service.shared.ServiceUtils; 005import org.conqat.engine.service.shared.client.ServiceClientUris; 006 007/** 008 * Helper class for obtaining links to global and project specific services of 009 * the current Teamscale instance. If a non-null {@link CommitDescriptor} is 010 * passed, all project services supporting the 011 * {@link ServiceClientUris#TIMESTAMP_PARAMETER_NAME} use this commit for 012 * queries. 013 */ 014public class TeamscaleCommitLinkProvider extends TeamscaleProjectLinkProvider { 015 016 private final CommitDescriptor commit; 017 018 public TeamscaleCommitLinkProvider(String baseUrl, String projectAliasOrId, CommitDescriptor commit) { 019 super(baseUrl, projectAliasOrId); 020 this.commit = commit; 021 } 022 023 /** Returns a link to the findings detail view for the given finding. */ 024 public String createFindingsDetailLink(String findingId) { 025 return baseUrl + "findings.html#details/" + ServiceUtils.encodePathSegment(projectAliasOrId) 026 + createOptionString(findingId); 027 } 028 029 private String createOptionString(String findingId) { 030 if (commit == null) { 031 return ServiceClientUris.createOptionString("id", findingId); 032 } 033 return ServiceClientUris.createOptionString("id", findingId, ServiceClientUris.TIMESTAMP_PARAMETER_NAME, 034 commit.toServiceCallFormat()); 035 } 036}