Track: handle bad URLs better, properly serialise artist, allow for clearing input stream.

soundboard
Nekojimi 11 months ago
parent 8f35828c84
commit fd8cb9ebf0
  1. 44
      src/main/java/moe/nekojimi/chords/Track.java

@ -9,14 +9,13 @@ import com.amihaiemil.eoyaml.Yaml;
import com.amihaiemil.eoyaml.YamlMapping; import com.amihaiemil.eoyaml.YamlMapping;
import com.amihaiemil.eoyaml.YamlSequence; import com.amihaiemil.eoyaml.YamlSequence;
import com.amihaiemil.eoyaml.YamlSequenceBuilder; import com.amihaiemil.eoyaml.YamlSequenceBuilder;
import java.io.File; import java.io.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* *
@ -63,14 +62,17 @@ public class Track implements Comparable<Track>
.add("url", url.toExternalForm()) .add("url", url.toExternalForm())
.add("location", location.getAbsolutePath()) .add("location", location.getAbsolutePath())
.add("num", Integer.toString(number)) .add("num", Integer.toString(number))
.add("formats", build.build()) // .add("formats", build.build())
.add("artist", artist)
// .add("requestedBy", requestedBy) // .add("requestedBy", requestedBy)
// .add("requestedIn", requestedIn) // .add("requestedIn", requestedIn)
.add("kept", Boolean.toString(kept)) .add("kept", Boolean.toString(kept))
.build(); .build();
} }
public static Track fromYaml(YamlMapping map) throws MalformedURLException public static Track fromYaml(YamlMapping map)
{
try
{ {
Track track = new Track(new URL(map.string("url")), null); Track track = new Track(new URL(map.string("url")), null);
track.setArtist(map.string("artist")); track.setArtist(map.string("artist"));
@ -81,13 +83,18 @@ public class Track implements Comparable<Track>
// track.setRequestedBy(map.string("requestedBy")); // track.setRequestedBy(map.string("requestedBy"));
// track.setRequestedIn(map.string("requestedIn")); // track.setRequestedIn(map.string("requestedIn"));
List<Format> formats = new ArrayList<>(); // List<Format> formats = new ArrayList<>();
YamlSequence formatSeq = map.yamlSequence("formats"); // YamlSequence formatSeq = map.yamlSequence("formats");
for (int i = 0; i < formats.size(); i++) // for (int i = 0; i < formats.size(); i++)
formats.add(Format.fromYaml(formatSeq.yamlMapping(i))); // formats.add(Format.fromYaml(formatSeq.yamlMapping(i)));
track.setFormats(formats); // track.setFormats(formats);
return track; return track;
} catch (MalformedURLException ex)
{
Logger.getLogger(Track.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
} }
public boolean isDownloaded() public boolean isDownloaded()
@ -152,6 +159,21 @@ public class Track implements Comparable<Track>
this.inputStream = inputStream; this.inputStream = inputStream;
} }
void clearInputStream()
{
if (inputStream != null)
{
try
{
inputStream.close();
} catch (IOException ex)
{
Logger.getLogger(Track.class.getName()).log(Level.SEVERE, null, ex);
}
inputStream = null;
}
}
void delete() void delete()
{ {
if (location != null) if (location != null)

Loading…
Cancel
Save