Sei sulla pagina 1di 3

**************************************************************

Class Track = 08 Marks


Class MultiSessionCD = 07 Marks
Class OrdinaryCD = 07 Marks
Class CompareCDs = 03 Marks
Total = 8 + 7 + 7 + 3 = 25 Marks
**************************************************************

public class Track implements Comparable<Track> { //----> 01 M

private int trackID;


private int lengthMin;

Track(String track){ //----> 03 M


StringTokenizer st = new StringTokenizer(track, "#");
this.trackID = Integer.parseInt(st.nextToken());
this.lengthMin = Integer.parseInt(st.nextToken());

public int compareTo(Track track) { //----> 2 M


if(this.lengthMin > track.lengthMin) return 1;
if(this.lengthMin < track.lengthMin) return 1;
return 0;
}

public String toString() { //----> 2 M


return "Track [trackID = " + (trackID+1)
+ " lengthMin = " + lengthMin + "]";
}

/******************* Already Provided ******************/


public int getTrackID() {
return trackID;
}

public int getLengthMin() {


return lengthMin;
}

}
public class MultiSessionCD implements Writable {

private static int index;


private Track[] trackArray;

public MultiSessionCD(int noOfTracks) { //----> 1 M


index = 0;
this.trackArray = new Track[noOfTracks];
}

public void write(String[] trackStr) { //----> 4 M


int i=0;
while(i<trackStr.length){
this.trackArray[index] = new Track(trackStr[i++]);
index++;
}
}

/****************** HELPER METHODS *********************/


public int getTotalLength(){ //----> 1 M
int totalLength = 0;
for(Track track : trackArray){
if(null != track)
totalLength += track.getLengthMin();
}
return totalLength;
}

public void publishCD(){ //----> 1 M


System.out.println("* Publishing Mutli-Session CD *");
for(Track track : trackArray){
if(null != track)
System.out.println(track);
}
System.out.println("TOTAL RECORDED LENGTH: "
+ getTotalLength());
}
public class OrdinaryCD implements Writable {

private int index;


private Track[] trackArray;
private boolean writeFlag = false;

public OrdinaryCD(int noOfTracks) { //----> 01 M


this.index = 0;
this.trackArray = new Track[noOfTracks];
}

/***************** OVERRIDDEN METHODS ******************/

public void write(String[] strTrackArr) { //----> 05 M


if(!writeFlag){
for(String trackStr : strTrackArr){
this.trackArray[index] = new Track(trackStr);
index++;
}
this.writeFlag = true;
}else{
System.out.println("Cannot re-write");
}
}

/***************** HELPER METHODS **********************/

public int getTotalLength(){ //----> 01 M


int totalLength = 0;
for(int i=0; i<index; i++){
if(null != trackArray[i])
totalLength += trackArray[i].getLengthMin();
}
return totalLength;
}
}

/************************************************************/

//----> 3 M
public class CompareCDs implements Comparator<Writable> {
public int compare(Writable arg0, Writable arg1) {
if(arg0.getTotalLength() > arg1.getTotalLength())
return 1;
else
if(arg0.getTotalLength() < arg1.getTotalLength())
return -1;
return 0;
}
}

Potrebbero piacerti anche