Add name to all controlled components.
[sonitus.git] / src / main / java / net / pterodactylus / sonitus / data / source / FileSource.java
index c967e12..766d7de 100644 (file)
 
 package net.pterodactylus.sonitus.data.source;
 
-import static com.google.common.base.Preconditions.*;
-import static net.pterodactylus.sonitus.data.Format.UNKNOWN_CHANNELS;
-import static net.pterodactylus.sonitus.data.Format.UNKNOWN_ENCODING;
-import static net.pterodactylus.sonitus.data.Format.UNKNOWN_FREQUENCY;
+import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.io.EOFException;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 
-import net.pterodactylus.sonitus.data.Format;
+import net.pterodactylus.sonitus.data.Controller;
 import net.pterodactylus.sonitus.data.Metadata;
 import net.pterodactylus.sonitus.data.Source;
 import net.pterodactylus.sonitus.io.IdentifyingInputStream;
 
 import com.google.common.base.Optional;
-import com.google.common.io.ByteStreams;
 
 /**
- * A {@link Source} that is read from the local file system.
+ * A {@link net.pterodactylus.sonitus.data.Source} that is read from the local
+ * file system.
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
@@ -46,8 +45,8 @@ public class FileSource implements Source {
        /** The path of the file. */
        private final String path;
 
-       /** The identified format of the file. */
-       private final Format format;
+       /** The identified metadata of the file. */
+       private final Metadata metadata;
 
        /** The input stream. */
        private InputStream fileInputStream;
@@ -57,7 +56,7 @@ public class FileSource implements Source {
         *
         * @param path
         *              The path of the file
-        * @throws IOException
+        * @throws java.io.IOException
         *              if the file can not be found, or an I/O error occurs
         */
        public FileSource(String path) throws IOException {
@@ -67,44 +66,53 @@ public class FileSource implements Source {
                /* identify file type. */
                Optional<IdentifyingInputStream> identifyingInputStream = IdentifyingInputStream.create(new FileInputStream(path));
                if (identifyingInputStream.isPresent()) {
-                       format = identifyingInputStream.get().format();
+                       metadata = identifyingInputStream.get().metadata();
                } else {
                        /* fallback. */
-                       format = new Format(UNKNOWN_CHANNELS, UNKNOWN_FREQUENCY, UNKNOWN_ENCODING);
+                       metadata = new Metadata().name(path);
                }
        }
 
        //
-       // SOURCE METHODS
+       // CONTROLLED METHODS
        //
 
        @Override
-       public Format format() {
-               return format;
+       public String name() {
+               return path;
        }
 
        @Override
-       public Metadata metadata() {
-               return new Metadata().name(path);
+       public List<Controller<?>> controllers() {
+               return Collections.emptyList();
        }
 
+       //
+       // SOURCE METHODS
+       //
+
        @Override
        public byte[] get(int bufferSize) throws IOException {
                byte[] buffer = new byte[bufferSize];
-               int read = ByteStreams.read(fileInputStream, buffer, 0, bufferSize);
-               if (read == 0) {
+               int read = fileInputStream.read(buffer);
+               if (read == -1) {
                        throw new EOFException();
                }
                return Arrays.copyOf(buffer, read);
        }
 
+       @Override
+       public Metadata metadata() {
+               return metadata;
+       }
+
        //
        // OBJECT METHODS
        //
 
        @Override
        public String toString() {
-               return String.format("%s (%s)", path, format);
+               return String.format("%s (%s)", path, metadata);
        }
 
 }