1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.linecorp.centraldogma.server.internal.api;
18
19 import static java.util.Objects.requireNonNull;
20
21 import javax.annotation.Nullable;
22
23 import com.linecorp.centraldogma.common.Author;
24 import com.linecorp.centraldogma.common.Change;
25 import com.linecorp.centraldogma.common.Commit;
26 import com.linecorp.centraldogma.common.Entry;
27 import com.linecorp.centraldogma.common.EntryType;
28 import com.linecorp.centraldogma.common.MergedEntry;
29 import com.linecorp.centraldogma.common.Revision;
30 import com.linecorp.centraldogma.internal.api.v1.ChangeDto;
31 import com.linecorp.centraldogma.internal.api.v1.CommitDto;
32 import com.linecorp.centraldogma.internal.api.v1.CommitMessageDto;
33 import com.linecorp.centraldogma.internal.api.v1.EntryDto;
34 import com.linecorp.centraldogma.internal.api.v1.MergedEntryDto;
35 import com.linecorp.centraldogma.internal.api.v1.ProjectDto;
36 import com.linecorp.centraldogma.internal.api.v1.PushResultDto;
37 import com.linecorp.centraldogma.internal.api.v1.RepositoryDto;
38 import com.linecorp.centraldogma.server.storage.project.Project;
39 import com.linecorp.centraldogma.server.storage.repository.Repository;
40
41
42
43
44 final class DtoConverter {
45
46 public static ProjectDto convert(Project project) {
47 requireNonNull(project, "project");
48 return new ProjectDto(project.name(), project.author(), project.creationTimeMillis());
49 }
50
51 public static RepositoryDto convert(Repository repository) {
52 requireNonNull(repository, "repository");
53 final Revision headRevision = repository.normalizeNow(Revision.HEAD);
54 final String projectName = repository.parent().name();
55 final String repoName = repository.name();
56
57 return new RepositoryDto(projectName, repoName, repository.author(), headRevision,
58 repository.creationTimeMillis());
59 }
60
61 public static <T> EntryDto<T> convert(Repository repository, Revision revision,
62 Entry<T> entry, boolean withContent) {
63 requireNonNull(entry, "entry");
64 if (withContent && entry.hasContent()) {
65 return convert(repository, revision, entry.path(), entry.type(), entry.content());
66 }
67 return convert(repository, revision, entry.path(), entry.type());
68 }
69
70 private static <T> EntryDto<T> convert(Repository repository, Revision revision,
71 String path, EntryType type) {
72 return convert(repository, revision, path, type, null);
73 }
74
75 private static <T> EntryDto<T> convert(Repository repository, Revision revision, String path,
76 EntryType type, @Nullable T content) {
77 requireNonNull(repository, "repository");
78 return new EntryDto<>(requireNonNull(revision, "revision"),
79 requireNonNull(path, "path"),
80 requireNonNull(type, "type"),
81 repository.parent().name(),
82 repository.name(),
83 content);
84 }
85
86 public static PushResultDto convert(Revision revision, long commitTimeMillis) {
87 return new PushResultDto(revision, commitTimeMillis);
88 }
89
90 public static CommitDto convert(Commit commit) {
91 requireNonNull(commit, "commit");
92
93 return convert(commit.revision(), commit.author(),
94 new CommitMessageDto(commit.summary(), commit.detail(), commit.markup()),
95 commit.when());
96 }
97
98 public static CommitDto convert(Revision revision, Author author, CommitMessageDto commitMessage,
99 long commitTimeMillis) {
100 return new CommitDto(revision, author, commitMessage, commitTimeMillis);
101 }
102
103 public static <T> ChangeDto<T> convert(Change<T> change) {
104 requireNonNull(change, "change");
105 return new ChangeDto<>(change.path(), change.type(), change.content());
106 }
107
108 public static <T> MergedEntryDto<T> convert(MergedEntry<T> mergedEntry) {
109 requireNonNull(mergedEntry, "mergedEntry");
110 return new MergedEntryDto<>(mergedEntry.revision(), mergedEntry.type(),
111 mergedEntry.content(), mergedEntry.paths());
112 }
113
114 private DtoConverter() {}
115 }