package MusicLandscape.util.formatters;
import MusicLandscape.entities.Track;
import MusicLandscape.util.MyFormatter;package MusicLandscape.util.formatters;
import MusicLandscape.entities.Track;
import MusicLandscape.util.MyFormatter;This class is the same as in ES06.
/**
* This class represents the concept of short formatting of a track containing
* only some information.
*
* @author TeM, JS
* @version 234
* @Stage ES04
* @ProgrammingProblem.Category abstract class
* @ProgrammingProblem.Introduced ExerciseSheet04
*/
public class ShortTrackFormatter implements MyFormatter<Track> {
/**
* Get the headers for the table as a single string.<br>
* <p>
* Contains the names for all columns separated by the correct number of
* blanks.
*
* @return the header string.
*/
@Override
public String header() {
return String.format("%-10.10s (%s:%s)", "Title", "min", "sec");
}
/**
* top separator consists of dashes (-) only. It is exactly as wide as the header.
*
* @return the separator.
*/
@Override
public String topSeparator() {
return "-".repeat(header().length());
}
/**
* Creates a short format of a track.
* <p>
* The short representation of a track is
* <pre>
* "title (duration)"
* </pre>
* <p>
* (without quotes).<br>
* Title is exactly ten characters wide with leading blanks (if any). Duration is in the format minutes:seconds,
* both at least two digits wide with leading zeros.
*/
@Override
public String format(Track t) {
return String.format("%-10.10s (%02d:%02d)", t.getTitle(), t.getDuration() / 60, t.getDuration() % 60);
}
/**
* the string representation of this formatter is
* <pre>
* "short format [Title (min:sec)]" (without quotes)
* </pre>
*
* @return the string representation
*/
public String toString() {
return "short format [Title (min:sec)]";
}
}