James Moger
2015-09-18 a592329a82d0a85d33abcc63f08df20b79e8e4f7
commit | author | age
f13c4c 1 /*
JM 2  * Copyright 2011 gitblit.com.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
1f9dae 16 package com.gitblit.models;
5fe7df 17
JM 18 import java.io.Serializable;
19 import java.util.Date;
20
21 import org.eclipse.jgit.lib.ObjectId;
4ab184 22 import org.eclipse.jgit.lib.PersonIdent;
5fe7df 23 import org.eclipse.jgit.lib.Ref;
JM 24 import org.eclipse.jgit.revwalk.RevCommit;
4ab184 25 import org.eclipse.jgit.revwalk.RevObject;
JM 26 import org.eclipse.jgit.revwalk.RevTag;
5fe7df 27
4263c2 28 import com.gitblit.utils.JGitUtils;
JM 29
d9f687 30 /**
JM 31  * RefModel is a serializable model class that represents a tag or branch and
32  * includes the referenced object.
699e71 33  *
d9f687 34  * @author James Moger
699e71 35  *
d9f687 36  */
5fe7df 37 public class RefModel implements Serializable, Comparable<RefModel> {
JM 38
39     private static final long serialVersionUID = 1L;
2a7306 40     public final String displayName;
4ab184 41     public final RevObject referencedObject;
JM 42     public transient Ref reference;
5fe7df 43
4ab184 44     public RefModel(String displayName, Ref ref, RevObject refObject) {
5fe7df 45         this.displayName = displayName;
4ab184 46         this.reference = ref;
JM 47         this.referencedObject = refObject;
5fe7df 48     }
JM 49
50     public Date getDate() {
4ab184 51         Date date = new Date(0);
JM 52         if (referencedObject != null) {
53             if (referencedObject instanceof RevTag) {
e11f48 54                 RevTag tag = (RevTag) referencedObject;
4263c2 55                 PersonIdent tagger = tag.getTaggerIdent();
JM 56                 if (tagger != null) {
57                     date = tagger.getWhen();
e11f48 58                 }
4ab184 59             } else if (referencedObject instanceof RevCommit) {
4263c2 60                 RevCommit commit = (RevCommit) referencedObject;
a59232 61                 PersonIdent author = commit.getAuthorIdent();
JM 62                 if (author != null) {
63                     date = author.getWhen();
4263c2 64                 } else {
JM 65                     date = JGitUtils.getCommitDate(commit);
66                 }
4ab184 67             }
JM 68         }
69         return date;
5fe7df 70     }
JM 71
72     public String getName() {
33622b 73         if (reference == null) {
JM 74             return displayName;
75         }
4ab184 76         return reference.getName();
232890 77     }
5fe7df 78
4ab184 79     public int getReferencedObjectType() {
JM 80         int type = referencedObject.getType();
81         if (referencedObject instanceof RevTag) {
82             type = ((RevTag) referencedObject).getObject().getType();
83         }
84         return type;
5fe7df 85     }
JM 86
4ab184 87     public ObjectId getReferencedObjectId() {
JM 88         if (referencedObject instanceof RevTag) {
89             return ((RevTag) referencedObject).getObject().getId();
90         }
91         return referencedObject.getId();
92     }
93
94     public String getShortMessage() {
95         String message = "";
96         if (referencedObject instanceof RevTag) {
97             message = ((RevTag) referencedObject).getShortMessage();
98         } else if (referencedObject instanceof RevCommit) {
99             message = ((RevCommit) referencedObject).getShortMessage();
100         }
101         return message;
102     }
103
104     public String getFullMessage() {
105         String message = "";
106         if (referencedObject instanceof RevTag) {
107             message = ((RevTag) referencedObject).getFullMessage();
108         } else if (referencedObject instanceof RevCommit) {
109             message = ((RevCommit) referencedObject).getFullMessage();
110         }
111         return message;
112     }
113
114     public PersonIdent getAuthorIdent() {
115         if (referencedObject instanceof RevTag) {
116             return ((RevTag) referencedObject).getTaggerIdent();
117         } else if (referencedObject instanceof RevCommit) {
118             return ((RevCommit) referencedObject).getAuthorIdent();
119         }
120         return null;
5fe7df 121     }
JM 122
123     public ObjectId getObjectId() {
4ab184 124         return reference.getObjectId();
5fe7df 125     }
155bf7 126
232890 127     public boolean isAnnotatedTag() {
4ab184 128         if (referencedObject instanceof RevTag) {
JM 129             return !getReferencedObjectId().equals(getObjectId());
130         }
131         return reference.getPeeledObjectId() != null;
232890 132     }
155bf7 133
5fe7df 134     @Override
2a7306 135     public int hashCode() {
4ab184 136         return getReferencedObjectId().hashCode() + getName().hashCode();
2a7306 137     }
JM 138
139     @Override
140     public boolean equals(Object o) {
141         if (o instanceof RefModel) {
142             RefModel other = (RefModel) o;
143             return getName().equals(other.getName());
144         }
145         return super.equals(o);
146     }
147
148     @Override
5fe7df 149     public int compareTo(RefModel o) {
JM 150         return getDate().compareTo(o.getDate());
151     }
008322 152
1fa5e8 153     @Override
JM 154     public String toString() {
155         return displayName;
156     }
5fe7df 157 }