James Moger
2015-11-22 ed552ba47c02779c270ffd62841d6d1048dade70
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;
4e9446 61                 date = JGitUtils.getAuthorDate(commit);
4ab184 62             }
JM 63         }
64         return date;
5fe7df 65     }
JM 66
67     public String getName() {
33622b 68         if (reference == null) {
JM 69             return displayName;
70         }
4ab184 71         return reference.getName();
232890 72     }
5fe7df 73
4ab184 74     public int getReferencedObjectType() {
JM 75         int type = referencedObject.getType();
76         if (referencedObject instanceof RevTag) {
77             type = ((RevTag) referencedObject).getObject().getType();
78         }
79         return type;
5fe7df 80     }
JM 81
4ab184 82     public ObjectId getReferencedObjectId() {
JM 83         if (referencedObject instanceof RevTag) {
84             return ((RevTag) referencedObject).getObject().getId();
85         }
86         return referencedObject.getId();
87     }
88
89     public String getShortMessage() {
90         String message = "";
91         if (referencedObject instanceof RevTag) {
92             message = ((RevTag) referencedObject).getShortMessage();
93         } else if (referencedObject instanceof RevCommit) {
94             message = ((RevCommit) referencedObject).getShortMessage();
95         }
96         return message;
97     }
98
99     public String getFullMessage() {
100         String message = "";
101         if (referencedObject instanceof RevTag) {
102             message = ((RevTag) referencedObject).getFullMessage();
103         } else if (referencedObject instanceof RevCommit) {
104             message = ((RevCommit) referencedObject).getFullMessage();
105         }
106         return message;
107     }
108
109     public PersonIdent getAuthorIdent() {
110         if (referencedObject instanceof RevTag) {
111             return ((RevTag) referencedObject).getTaggerIdent();
112         } else if (referencedObject instanceof RevCommit) {
113             return ((RevCommit) referencedObject).getAuthorIdent();
114         }
115         return null;
5fe7df 116     }
JM 117
118     public ObjectId getObjectId() {
4ab184 119         return reference.getObjectId();
5fe7df 120     }
155bf7 121
232890 122     public boolean isAnnotatedTag() {
4ab184 123         if (referencedObject instanceof RevTag) {
JM 124             return !getReferencedObjectId().equals(getObjectId());
125         }
126         return reference.getPeeledObjectId() != null;
232890 127     }
155bf7 128
5fe7df 129     @Override
2a7306 130     public int hashCode() {
4ab184 131         return getReferencedObjectId().hashCode() + getName().hashCode();
2a7306 132     }
JM 133
134     @Override
135     public boolean equals(Object o) {
136         if (o instanceof RefModel) {
137             RefModel other = (RefModel) o;
138             return getName().equals(other.getName());
139         }
140         return super.equals(o);
141     }
142
143     @Override
5fe7df 144     public int compareTo(RefModel o) {
JM 145         return getDate().compareTo(o.getDate());
146     }
008322 147
1fa5e8 148     @Override
JM 149     public String toString() {
150         return displayName;
151     }
5fe7df 152 }