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