diff --git a/src/main/java/org/gitlab4j/api/models/Project.java b/src/main/java/org/gitlab4j/api/models/Project.java index 75c6b50bda6b88ea00dacebb75fe4d29460457dd..1819c9b7091a38358906bcc67c95831e600ad205 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 0000000000000000000000000000000000000000..f87b7aaccb1becf38818c9e577ca3549258e678c --- /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 3b21035449a1eaf5f7faa2b95ff435522d5db8ea..82717c149e103c39e2da165cd118e83111436500 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 {