/* * Week - represents one week of music listening */ class Week{ int id; // The iterative index of this week. id = 0 refers to the first week data was recorded long timeStamp; // timestamp for this week int totalPlays; // Total song plays during this week int maxPlays; // Max plays of an artist during this week Vector artistRanking; // List of artist references, sorted by ranking for this week Weeks parent; // The weeks collection that contains this week Week(int id, long timeStamp, Weeks parent){ this.id = id; this.timeStamp = timeStamp; this.parent = parent; totalPlays = 0; maxPlays = 0; artistRanking = new Vector(); } int getID(){ return id; } long getDate(){ return timeStamp; } int getTotalPlays(){ return totalPlays; } int getMaxPlays(){ return maxPlays; } int getCount(){ return artistRanking.size(); } Artist getArtist(int rank){ return (Artist) artistRanking.get(rank); } void addArtist(Artist a){ artistRanking.add(a); parent.maxArtists = max(parent.maxArtists, artistRanking.size()); } int getPlays(int rank){ Artist a = this.getArtist(rank); return this.getPlays(a); } int getPlays(Artist a){ return a.getPlays(this); } boolean isFirst(){ return id==0; } boolean isLast(){ return id==(parent.getCount()-1); } Week getPrev(){ if(isFirst()) return null; return parent.getWeek(id-1); } Week getNext(){ if(isLast()) return null; return parent.getWeek(id+1); } }