View Javadoc

1   /***
2    *     Ambient - A music player for the Android platform
3    Copyright (C) 2007 Martin Vysny
4    
5    This program is free software: you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation, either version 3 of the License, or
8    (at your option) any later version.
9    
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14  
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17   */
18  
19  package sk.baka.ambient.collection;
20  
21  import java.io.Serializable;
22  
23  /***
24   * Statistics class.
25   * 
26   * @author Martin Vysny
27   */
28  public final class Statistics implements Serializable {
29  	private static final long serialVersionUID = -6991284221227650772L;
30  	/***
31  	 * Number of tracks.
32  	 */
33  	public int tracks = 0;
34  	/***
35  	 * Overall length in seconds.
36  	 */
37  	public int length = 0;
38  
39  	/***
40  	 * Overall file size.
41  	 */
42  	public long fileSize = 0;
43  
44  	/***
45  	 * Albums count.
46  	 */
47  	public int albums = 0;
48  
49  	/***
50  	 * Artists count.
51  	 */
52  	public int artists = 0;
53  
54  	/***
55  	 * Merge this object with another statistics object.
56  	 * 
57  	 * @param other
58  	 *            the other statistics.
59  	 */
60  	public void add(final Statistics other) {
61  		tracks += other.tracks;
62  		length += other.length;
63  		fileSize += other.fileSize;
64  		albums += other.albums;
65  		artists += other.artists;
66  	}
67  
68  	/***
69  	 * Copies statistics from another statistics object.
70  	 * 
71  	 * @param other
72  	 *            the other statistics.
73  	 */
74  	public void copyFrom(final Statistics other) {
75  		tracks = other.tracks;
76  		length = other.length;
77  		fileSize = other.fileSize;
78  		albums = other.albums;
79  		artists = other.artists;
80  	}
81  
82  	/***
83  	 * Computes average track length.
84  	 * 
85  	 * @return average track length in seconds.
86  	 */
87  	public int getAverageLength() {
88  		if (tracks == 0)
89  			return 0;
90  		return length / tracks;
91  	}
92  }