Move event and metadata handling into abstract base class.
[sonitus.git] / src / main / java / net / pterodactylus / sonitus / data / sink / FileSink.java
index 7210f71..be934f3 100644 (file)
@@ -19,8 +19,12 @@ package net.pterodactylus.sonitus.data.sink;
 
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
 import java.util.logging.Logger;
 
+import net.pterodactylus.sonitus.data.AbstractControlledComponent;
+import net.pterodactylus.sonitus.data.Controller;
 import net.pterodactylus.sonitus.data.Metadata;
 import net.pterodactylus.sonitus.data.Sink;
 
@@ -30,7 +34,7 @@ import net.pterodactylus.sonitus.data.Sink;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class FileSink implements Sink {
+public class FileSink extends AbstractControlledComponent implements Sink {
 
        /** The logger. */
        private static final Logger logger = Logger.getLogger(FileSink.class.getName());
@@ -38,6 +42,7 @@ public class FileSink implements Sink {
        /** The path of the file to write to. */
        private final String path;
 
+       /** The output stream writing to the file. */
        private FileOutputStream fileOutputStream;
 
        /**
@@ -47,12 +52,27 @@ public class FileSink implements Sink {
         *              The path of the file to write to
         */
        public FileSink(String path) {
+               super(path);
                this.path = path;
        }
 
+       //
+       // CONTROLLED METHODS
+       //
+
+       @Override
+       public List<Controller<?>> controllers() {
+               return Collections.emptyList();
+       }
+
+       //
+       // SINK METHODS
+       //
+
        @Override
        public void open(Metadata metadata) throws IOException {
                fileOutputStream = new FileOutputStream(path);
+               metadataUpdated(metadata);
        }
 
        @Override
@@ -65,11 +85,6 @@ public class FileSink implements Sink {
        }
 
        @Override
-       public void metadataUpdated(Metadata metadata) {
-               /* ignore. */
-       }
-
-       @Override
        public void process(byte[] buffer) throws IOException {
                fileOutputStream.write(buffer);
                logger.finest(String.format("FileSink: Wrote %d Bytes.", buffer.length));