1 package jetbrains.buildServer.nuget.server.show;
\r
3 import com.intellij.openapi.diagnostic.Logger;
\r
4 import jetbrains.buildServer.nuget.common.PackageDependencies;
\r
5 import jetbrains.buildServer.nuget.common.PackageDependenciesStore;
\r
6 import jetbrains.buildServer.nuget.common.PackageInfo;
\r
7 import jetbrains.buildServer.serverSide.SBuild;
\r
8 import jetbrains.buildServer.serverSide.SBuildServer;
\r
9 import jetbrains.buildServer.serverSide.artifacts.BuildArtifact;
\r
10 import jetbrains.buildServer.serverSide.artifacts.BuildArtifactsViewMode;
\r
11 import jetbrains.buildServer.util.FileUtil;
\r
12 import jetbrains.buildServer.web.openapi.PagePlaces;
\r
13 import jetbrains.buildServer.web.openapi.PluginDescriptor;
\r
14 import jetbrains.buildServer.web.openapi.ViewLogTab;
\r
15 import org.jetbrains.annotations.NotNull;
\r
16 import org.jetbrains.annotations.Nullable;
\r
18 import javax.servlet.http.HttpServletRequest;
\r
19 import java.io.IOException;
\r
20 import java.io.InputStream;
\r
21 import java.util.Map;
\r
22 import java.util.TreeMap;
\r
24 import static jetbrains.buildServer.nuget.common.PackagesConstants.NUGET_USED_PACKAGES_DIR;
\r
25 import static jetbrains.buildServer.nuget.common.PackagesConstants.NUGET_USED_PACKAGES_FILE;
\r
28 * Created Eugene Petrenko (eugene.petrenko@gmail.com)
\r
31 public class NuGetDownloadedPackagesTab extends ViewLogTab {
\r
32 private static final String DEPS_FILE = NUGET_USED_PACKAGES_DIR + "/" + NUGET_USED_PACKAGES_FILE;
\r
33 private static final Logger LOG = Logger.getInstance(NuGetDownloadedPackagesTab.class.getName());
\r
36 private final PackageDependenciesStore myStore;
\r
38 public NuGetDownloadedPackagesTab(@NotNull final PagePlaces pagePlaces,
\r
39 @NotNull final SBuildServer server,
\r
40 @NotNull final PluginDescriptor descriptor,
\r
41 @NotNull final PackageDependenciesStore store) {
\r
42 super("NuGet Packages", "nugetPackagesBuildTab", pagePlaces, server);
\r
44 setIncludeUrl(descriptor.getPluginResourcesPath("show/showPackages.jsp"));
\r
49 public boolean isAvailable(@NotNull final HttpServletRequest request) {
\r
50 final SBuild build = getBuild(request);
\r
51 return super.isAvailable(request) && getPackagesFile(build) != null;
\r
55 private BuildArtifact getPackagesFile(@Nullable final SBuild build) {
\r
56 if (build == null) return null;
\r
57 BuildArtifact file = build.getArtifacts(BuildArtifactsViewMode.VIEW_ALL).getArtifact(DEPS_FILE);
\r
58 if (file == null) return null;
\r
59 if (file.isDirectory()) return null;
\r
65 protected void fillModel(final Map model, final HttpServletRequest request, @Nullable final SBuild build) {
\r
66 final Map<String, String> packages = new TreeMap<String, String>();
\r
67 //noinspection unchecked
\r
68 model.put("nugetPackages", packages);
\r
70 if (build == null) return;
\r
71 PackageDependencies deps = loadDependencies(build);
\r
74 for (PackageInfo info : deps.getPackages()) {
\r
75 packages.put(info.getId(), info.getVersion());
\r
81 private PackageDependencies loadDependencies(@NotNull final SBuild build) {
\r
82 final BuildArtifact file = getPackagesFile(build);
\r
84 InputStream inputStream = null;
\r
86 inputStream = file.getInputStream();
\r
87 return myStore.load(inputStream);
\r
88 } catch (IOException e) {
\r
89 LOG.warn("Failed to read used packages build artifacts of build id=" + build.getBuildId());
\r
91 FileUtil.close(inputStream);
\r