From d3788c8b33003f0142be2801c4539d0e2096a11a Mon Sep 17 00:00:00 2001 From: Jens Goldhammer Date: Mon, 11 Jun 2018 02:22:06 +0200 Subject: [PATCH] add project statistics information to projects api (#192) * add project statistics information to Project model --- .../java/org/gitlab4j/api/models/Project.java | 10 +++ .../api/models/ProjectStatistics.java | 62 +++++++++++++++++++ .../java/org/gitlab4j/api/TestProjectApi.java | 17 +++++ 3 files changed, 89 insertions(+) create mode 100644 src/main/java/org/gitlab4j/api/models/ProjectStatistics.java diff --git a/src/main/java/org/gitlab4j/api/models/Project.java b/src/main/java/org/gitlab4j/api/models/Project.java index 75c6b50b..1819c9b7 100644 --- a/src/main/java/org/gitlab4j/api/models/Project.java +++ b/src/main/java/org/gitlab4j/api/models/Project.java @@ -85,6 +85,7 @@ public class Project { private String webUrl; private Boolean wikiEnabled; private Boolean printingMergeRequestLinkEnabled; + private ProjectStatistics statistics; public Integer getApprovalsBeforeMerge() { return approvalsBeforeMerge; @@ -592,7 +593,16 @@ public class Project { return (this); } + public ProjectStatistics getStatistics() { + return statistics; + } + + public void setStatistics(ProjectStatistics statistics) { + this.statistics = statistics; + } + public static final boolean isValid(Project project) { return (project != null && project.getId() != null); } + } diff --git a/src/main/java/org/gitlab4j/api/models/ProjectStatistics.java b/src/main/java/org/gitlab4j/api/models/ProjectStatistics.java new file mode 100644 index 00000000..f87b7aac --- /dev/null +++ b/src/main/java/org/gitlab4j/api/models/ProjectStatistics.java @@ -0,0 +1,62 @@ +package org.gitlab4j.api.models; + + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; + +/** + * contains sizing information from the project. + * To get this information, the project api has to be called with parameter statistics=true + * which is only allowed for gitlab admins. + * + * Example json from projects api response: + * https:///api/v4//projects?statistics=true + * + * "statistics": { + * "commit_count": 37, + * "storage_size": 1038090, + * "repository_size": 1038090, + * "lfs_objects_size": 0, + * "job_artifacts_size": 0 + * } + */ +@XmlAccessorType(XmlAccessType.FIELD) +public class ProjectStatistics { + + long commitCount; + long storageSize; + long lfsObjectSize; + long jobArtifactsSize; + + public long getCommitCount() { + return commitCount; + } + + public long getJobArtifactsSize() { + return jobArtifactsSize; + } + + public long getLfsObjectSize() { + return lfsObjectSize; + } + + public long getStorageSize() { + return storageSize; + } + + public void setCommitCount(long commitCount) { + this.commitCount = commitCount; + } + + public void setJobArtifactsSize(long jobArtifactsSize) { + this.jobArtifactsSize = jobArtifactsSize; + } + + public void setLfsObjectSize(long lfsObjectSize) { + this.lfsObjectSize = lfsObjectSize; + } + + public void setStorageSize(long storageSize) { + this.storageSize = storageSize; + } +} diff --git a/src/test/java/org/gitlab4j/api/TestProjectApi.java b/src/test/java/org/gitlab4j/api/TestProjectApi.java index 3b210354..82717c14 100644 --- a/src/test/java/org/gitlab4j/api/TestProjectApi.java +++ b/src/test/java/org/gitlab4j/api/TestProjectApi.java @@ -279,6 +279,23 @@ public class TestProjectApi { assertEquals(TEST_PROJECT_NAME_1, projects.get(1).getName()); } + + @Test + public void testListProjectsWithStatistics() throws GitLabApiException { + + List projects = gitLabApi.getProjectApi().getProjects(false, null, + Constants.ProjectOrderBy.NAME, Constants.SortOrder.DESC, null, false, false, false, false, true); + assertNotNull(projects); + assertTrue(projects.size() >= 2); + + assertNotNull(projects.get(0).getStatistics()); + assertNotNull(projects.get(0).getStatistics().getLfsObjectSize()); + assertNotNull(projects.get(0).getStatistics().getCommitCount()); + assertNotNull(projects.get(0).getStatistics().getJobArtifactsSize()); + assertNotNull(projects.get(0).getStatistics().getStorageSize()); + + } + @Test public void testListProjectsWithParamsViaPager() throws GitLabApiException { -- GitLab