]> source.dussan.org Git - archiva.git/blob
4c212520cad81d2e6812c58f932a6da4a837510c
[archiva.git] /
1 package org.apache.maven.repository.indexing.record;
2
3 import java.util.Date;
4 import java.util.List;
5
6 /*
7  * Copyright 2005-2006 The Apache Software Foundation.
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  */
21
22 /**
23  * The a record with the fields in the minimal index.
24  *
25  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
26  */
27 public class MinimalArtifactIndexRecord
28     implements RepositoryIndexRecord
29 {
30     /**
31      * The classes in the archive for the artifact, if it is a JAR.
32      */
33     private List classes;
34
35     /**
36      * The MD5 checksum of the artifact file.
37      */
38     private String md5Checksum;
39
40     /**
41      * The filename of the artifact file (no path).
42      */
43     private String filename;
44
45     /**
46      * The timestamp that the artifact file was last modified. Granularity is seconds.
47      */
48     private long lastModified;
49
50     /**
51      * The size of the artifact file in bytes.
52      */
53     private long size;
54
55     private static final int MS_PER_SEC = 1000;
56
57     public void setClasses( List classes )
58     {
59         this.classes = classes;
60     }
61
62     public void setMd5Checksum( String md5Checksum )
63     {
64         this.md5Checksum = md5Checksum;
65     }
66
67     public void setFilename( String filename )
68     {
69         this.filename = filename;
70     }
71
72     public void setLastModified( long lastModified )
73     {
74         this.lastModified = lastModified - lastModified % MS_PER_SEC;
75     }
76
77     public void setSize( long size )
78     {
79         this.size = size;
80     }
81
82     public List getClasses()
83     {
84         return classes;
85     }
86
87     public String getMd5Checksum()
88     {
89         return md5Checksum;
90     }
91
92     public String getFilename()
93     {
94         return filename;
95     }
96
97     public long getLastModified()
98     {
99         return lastModified;
100     }
101
102     public long getSize()
103     {
104         return size;
105     }
106
107     /**
108      * @noinspection RedundantIfStatement
109      */
110     public boolean equals( Object obj )
111     {
112         if ( this == obj )
113         {
114             return true;
115         }
116         if ( obj == null || getClass() != obj.getClass() )
117         {
118             return false;
119         }
120
121         MinimalArtifactIndexRecord that = (MinimalArtifactIndexRecord) obj;
122
123         if ( lastModified != that.lastModified )
124         {
125             return false;
126         }
127         if ( size != that.size )
128         {
129             return false;
130         }
131         if ( classes != null ? !classes.equals( that.classes ) : that.classes != null )
132         {
133             return false;
134         }
135         if ( !filename.equals( that.filename ) )
136         {
137             return false;
138         }
139         if ( md5Checksum != null ? !md5Checksum.equals( that.md5Checksum ) : that.md5Checksum != null )
140         {
141             return false;
142         }
143
144         return true;
145     }
146
147     /**
148      * @noinspection UnnecessaryParentheses
149      */
150     public int hashCode()
151     {
152         int result = classes != null ? classes.hashCode() : 0;
153         result = 31 * result + ( md5Checksum != null ? md5Checksum.hashCode() : 0 );
154         result = 31 * result + filename.hashCode();
155         result = 31 * result + (int) ( lastModified ^ ( lastModified >>> 32 ) );
156         result = 31 * result + (int) ( size ^ ( size >>> 32 ) );
157         return result;
158     }
159
160     public String toString()
161     {
162         return "Filename: " + filename + "; checksum: " + md5Checksum + "; size: " + size + "; lastModified: " +
163             new Date( lastModified ) + "; classes: " + classes;
164     }
165
166     public String getPrimaryKey()
167     {
168         return filename;
169     }
170 }