James Moger
2012-11-01 7ba85bfa11c7fcab21ada61650fe30763aafd7b0
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
d9f687 28 /**
JM 29  * RefModel is a serializable model class that represents a tag or branch and
30  * includes the referenced object.
31  * 
32  * @author James Moger
33  * 
34  */
5fe7df 35 public class RefModel implements Serializable, Comparable<RefModel> {
JM 36
37     private static final long serialVersionUID = 1L;
2a7306 38     public final String displayName;
4ab184 39     public final RevObject referencedObject;
JM 40     public transient Ref reference;
5fe7df 41
4ab184 42     public RefModel(String displayName, Ref ref, RevObject refObject) {
5fe7df 43         this.displayName = displayName;
4ab184 44         this.reference = ref;
JM 45         this.referencedObject = refObject;
5fe7df 46     }
JM 47
48     public Date getDate() {
4ab184 49         Date date = new Date(0);
JM 50         if (referencedObject != null) {
51             if (referencedObject instanceof RevTag) {
e11f48 52                 RevTag tag = (RevTag) referencedObject;
JM 53                 if (tag.getTaggerIdent() != null) {
54                     date = tag.getTaggerIdent().getWhen();
55                 }
4ab184 56             } else if (referencedObject instanceof RevCommit) {
JM 57                 date = ((RevCommit) referencedObject).getCommitterIdent().getWhen();
58             }
59         }
60         return date;
5fe7df 61     }
JM 62
63     public String getName() {
33622b 64         if (reference == null) {
JM 65             return displayName;
66         }
4ab184 67         return reference.getName();
232890 68     }
5fe7df 69
4ab184 70     public int getReferencedObjectType() {
JM 71         int type = referencedObject.getType();
72         if (referencedObject instanceof RevTag) {
73             type = ((RevTag) referencedObject).getObject().getType();
74         }
75         return type;
5fe7df 76     }
JM 77
4ab184 78     public ObjectId getReferencedObjectId() {
JM 79         if (referencedObject instanceof RevTag) {
80             return ((RevTag) referencedObject).getObject().getId();
81         }
82         return referencedObject.getId();
83     }
84
85     public String getShortMessage() {
86         String message = "";
87         if (referencedObject instanceof RevTag) {
88             message = ((RevTag) referencedObject).getShortMessage();
89         } else if (referencedObject instanceof RevCommit) {
90             message = ((RevCommit) referencedObject).getShortMessage();
91         }
92         return message;
93     }
94
95     public String getFullMessage() {
96         String message = "";
97         if (referencedObject instanceof RevTag) {
98             message = ((RevTag) referencedObject).getFullMessage();
99         } else if (referencedObject instanceof RevCommit) {
100             message = ((RevCommit) referencedObject).getFullMessage();
101         }
102         return message;
103     }
104
105     public PersonIdent getAuthorIdent() {
106         if (referencedObject instanceof RevTag) {
107             return ((RevTag) referencedObject).getTaggerIdent();
108         } else if (referencedObject instanceof RevCommit) {
109             return ((RevCommit) referencedObject).getAuthorIdent();
110         }
111         return null;
5fe7df 112     }
JM 113
114     public ObjectId getObjectId() {
4ab184 115         return reference.getObjectId();
5fe7df 116     }
155bf7 117
232890 118     public boolean isAnnotatedTag() {
4ab184 119         if (referencedObject instanceof RevTag) {
JM 120             return !getReferencedObjectId().equals(getObjectId());
121         }
122         return reference.getPeeledObjectId() != null;
232890 123     }
155bf7 124
5fe7df 125     @Override
2a7306 126     public int hashCode() {
4ab184 127         return getReferencedObjectId().hashCode() + getName().hashCode();
2a7306 128     }
JM 129
130     @Override
131     public boolean equals(Object o) {
132         if (o instanceof RefModel) {
133             RefModel other = (RefModel) o;
134             return getName().equals(other.getName());
135         }
136         return super.equals(o);
137     }
138
139     @Override
5fe7df 140     public int compareTo(RefModel o) {
JM 141         return getDate().compareTo(o.getDate());
142     }
008322 143
1fa5e8 144     @Override
JM 145     public String toString() {
146         return displayName;
147     }
5fe7df 148 }