From 889423972c4e3e7cb852c86acfd834a0e6eef171 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Sun, 7 Jul 2019 20:38:22 +0200
Subject: [PATCH] Refactor midi device code

---
 .../playpad/action/mapper/MidiMapper.java      |  2 +-
 .../DeviceColorAssociatorConnector.java        |  2 +-
 .../playpad/midi/device/DeviceRegistry.java    | 14 ++++++++++----
 .../impl/LaunchpadPluginImpl.java              | 16 ++++------------
 .../launchpadplugin/midi/mk2/LaunchPadMK2.java | 18 ++++++++++--------
 .../launchpadplugin/midi/s/LaunchPadS.java     |  9 +++++----
 .../resources/lang/launchpad_de.properties     |  0
 7 files changed, 31 insertions(+), 30 deletions(-)
 delete mode 100644 PlayWallPluginLaunchpad/src/main/resources/lang/launchpad_de.properties

diff --git a/PlayWall/src/main/java/de/tobias/playpad/action/mapper/MidiMapper.java b/PlayWall/src/main/java/de/tobias/playpad/action/mapper/MidiMapper.java
index 9e251043..495ea269 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/action/mapper/MidiMapper.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/action/mapper/MidiMapper.java
@@ -146,7 +146,7 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
 		if (midiDeviceImpl != null) {
 			if (midiDeviceImpl instanceof DeviceColorAssociatorConnector) {
-				return ((DeviceColorAssociatorConnector) midiDeviceImpl).map(color);
+				return ((DeviceColorAssociatorConnector) midiDeviceImpl).getPreferColorMapping(color);
 			}
 		}
 		return null;
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/action/mididevice/DeviceColorAssociatorConnector.java b/PlayWallCore/src/main/java/de/tobias/playpad/action/mididevice/DeviceColorAssociatorConnector.java
index 16804f7a..9ef99ee2 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/action/mididevice/DeviceColorAssociatorConnector.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/action/mididevice/DeviceColorAssociatorConnector.java
@@ -11,5 +11,5 @@ public interface DeviceColorAssociatorConnector {
 
 	DisplayableFeedbackColor[] getColors();
 
-	DisplayableFeedbackColor map(Color color);
+	DisplayableFeedbackColor getPreferColorMapping(Color color);
 }
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/midi/device/DeviceRegistry.java b/PlayWallCore/src/main/java/de/tobias/playpad/midi/device/DeviceRegistry.java
index 957466f7..42a602db 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/midi/device/DeviceRegistry.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/midi/device/DeviceRegistry.java
@@ -6,6 +6,8 @@ import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import de.tobias.playpad.event.Event;
 import de.tobias.playpad.event.EventDispatcher;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.util.HashMap;
 import java.util.List;
 
@@ -49,12 +51,16 @@ public class DeviceRegistry extends EventDispatcher {
 	 * @see DeviceRegistry#registerDevice(String, Class)
 	 * @see DefaultMidiDeviceImpl
 	 */
-	public MidiDeviceImpl getDevice(String id) throws InstantiationException, IllegalAccessException {
+	public MidiDeviceImpl getDevice(String id) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
 		if (devices.containsKey(id)) {
-			System.out.println("Recognize known MIDI device: " + id);
-			return devices.get(id).newInstance();
+			Logger.debug("Recognize known MIDI device: " + id);
+
+			final Class<? extends MidiDeviceImpl> deviceClass = devices.get(id);
+			final Constructor<? extends MidiDeviceImpl> constructor = deviceClass.getConstructor();
+
+			return constructor.newInstance();
 		} else {
-			System.out.println("Use Default MIDI device");
+			Logger.debug("Use Default MIDI device");
 			return new DefaultMidiDeviceImpl();
 		}
 	}
diff --git a/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/impl/LaunchpadPluginImpl.java b/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/impl/LaunchpadPluginImpl.java
index 848e3004..dd80ff18 100644
--- a/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/impl/LaunchpadPluginImpl.java
+++ b/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/impl/LaunchpadPluginImpl.java
@@ -1,41 +1,33 @@
 package de.tobias.playpad.launchpadplugin.impl;
 
+import de.thecodelabs.logger.Logger;
 import de.thecodelabs.plugins.PluginArtifact;
 import de.thecodelabs.plugins.PluginDescriptor;
-import de.thecodelabs.utils.util.Localization;
 import de.tobias.playpad.launchpadplugin.midi.mk2.LaunchPadMK2;
 import de.tobias.playpad.launchpadplugin.midi.s.LaunchPadS;
 import de.tobias.playpad.midi.device.DeviceRegistry;
 import de.tobias.playpad.plugin.Module;
 import de.tobias.playpad.plugin.PlayPadPluginStub;
 
-import java.util.ResourceBundle;
-
+@SuppressWarnings("unused")
 public class LaunchpadPluginImpl implements PlayPadPluginStub, PluginArtifact {
 
-	private static ResourceBundle bundle;
-
 	private Module module;
 
 	@Override
 	public void startup(PluginDescriptor descriptor) {
-		bundle = Localization.loadBundle("lang/launchpad", LaunchpadPluginImpl.class.getClassLoader());
 		module = new Module(descriptor.getName(), descriptor.getArtifactId());
 
 		DeviceRegistry deviceFactory = DeviceRegistry.getFactoryInstance();
 		deviceFactory.registerDevice(LaunchPadMK2.NAME, LaunchPadMK2.class);
 		deviceFactory.registerDevice(LaunchPadS.NAME, LaunchPadS.class);
 
-		System.out.println("Enable LaunchPad Plugin");
+		Logger.debug("Enable LaunchPad Plugin");
 	}
 
 	@Override
 	public void shutdown() {
-		System.out.println("Disable LaunchPad Plugin");
-	}
-
-	public static ResourceBundle getBundle() {
-		return bundle;
+		Logger.debug("Disable LaunchPad Plugin");
 	}
 
 	@Override
diff --git a/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/midi/mk2/LaunchPadMK2.java b/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/midi/mk2/LaunchPadMK2.java
index 9cf89923..c9c37cf7 100644
--- a/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/midi/mk2/LaunchPadMK2.java
+++ b/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/midi/mk2/LaunchPadMK2.java
@@ -1,5 +1,6 @@
 package de.tobias.playpad.launchpadplugin.midi.mk2;
 
+import de.thecodelabs.logger.Logger;
 import de.tobias.playpad.action.feedback.DisplayableFeedbackColor;
 import de.tobias.playpad.action.feedback.Feedback;
 import de.tobias.playpad.action.feedback.FeedbackMessage;
@@ -22,12 +23,12 @@ public class LaunchPadMK2 extends MidiDeviceImpl implements DeviceColorAssociato
 	// Modern Colors mapped to the colors of the launchpad
 	private static Map<String, String> mapProperties;
 
-	public LaunchPadMK2() {
+	static {
 		try {
-			URL resource = getClass().getClassLoader().getResource("launchpad_mk2.map");
+			URL resource = LaunchPadMK2.class.getClassLoader().getResource("launchpad_mk2.map");
 			mapProperties = MapParser.load(resource);
 		} catch (Exception e) {
-			e.printStackTrace();
+			Logger.error(e);
 		}
 	}
 
@@ -43,6 +44,7 @@ public class LaunchPadMK2 extends MidiDeviceImpl implements DeviceColorAssociato
 
 	@Override
 	public void initDevice() {
+		// nothing to do
 	}
 
 	@Override
@@ -56,13 +58,13 @@ public class LaunchPadMK2 extends MidiDeviceImpl implements DeviceColorAssociato
 					Midi.getInstance().sendMessage(144, key, value);
 				}
 			} catch (MidiUnavailableException | InvalidMidiDataException e) {
-				e.printStackTrace();
+				Logger.error(e);
 			}
 		} else {
 			try {
 				Midi.getInstance().sendMessage(145, key, feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
 			} catch (MidiUnavailableException | InvalidMidiDataException e) {
-				e.printStackTrace();
+				Logger.error(e);
 			}
 		}
 	}
@@ -76,7 +78,7 @@ public class LaunchPadMK2 extends MidiDeviceImpl implements DeviceColorAssociato
 			try {
 				Midi.getInstance().sendMessage(ShortMessage.NOTE_ON, i, 0);
 			} catch (MidiUnavailableException | InvalidMidiDataException e) {
-				e.printStackTrace();
+				Logger.error(e);
 			}
 		}
 
@@ -89,7 +91,7 @@ public class LaunchPadMK2 extends MidiDeviceImpl implements DeviceColorAssociato
 			try {
 				Midi.getInstance().sendMessage(ShortMessage.CONTROL_CHANGE, i, 0);
 			} catch (MidiUnavailableException | InvalidMidiDataException e) {
-				e.printStackTrace();
+				Logger.error(e);
 			}
 		}
 	}
@@ -115,7 +117,7 @@ public class LaunchPadMK2 extends MidiDeviceImpl implements DeviceColorAssociato
 	}
 
 	@Override
-	public DisplayableFeedbackColor map(Color color) {
+	public DisplayableFeedbackColor getPreferColorMapping(Color color) {
 		if (mapProperties.containsKey(color.toString())) {
 			String nameOfConst = mapProperties.get(color.toString());
 			return LaunchPadMK2Color.valueOf(nameOfConst);
diff --git a/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/midi/s/LaunchPadS.java b/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/midi/s/LaunchPadS.java
index b6ead392..2432014f 100644
--- a/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/midi/s/LaunchPadS.java
+++ b/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/midi/s/LaunchPadS.java
@@ -1,5 +1,6 @@
 package de.tobias.playpad.launchpadplugin.midi.s;
 
+import de.thecodelabs.logger.Logger;
 import de.tobias.playpad.action.feedback.DisplayableFeedbackColor;
 import de.tobias.playpad.action.feedback.Feedback;
 import de.tobias.playpad.action.feedback.FeedbackMessage;
@@ -31,7 +32,7 @@ public class LaunchPadS extends MidiDeviceImpl implements DeviceColorAssociatorC
 		try {
 			Midi.getInstance().sendMessage(176, 0, 40);
 		} catch (MidiUnavailableException | InvalidMidiDataException e) {
-			e.printStackTrace();
+			Logger.error(e);
 		}
 	}
 
@@ -54,7 +55,7 @@ public class LaunchPadS extends MidiDeviceImpl implements DeviceColorAssociatorC
 				Midi.getInstance().sendMessage(command, key, midiVelocity);
 			}
 		} catch (MidiUnavailableException | InvalidMidiDataException e) {
-			e.printStackTrace();
+			Logger.error(e);
 		}
 	}
 
@@ -63,7 +64,7 @@ public class LaunchPadS extends MidiDeviceImpl implements DeviceColorAssociatorC
 		try {
 			Midi.getInstance().sendMessage(176, 0, 0);
 		} catch (MidiUnavailableException | InvalidMidiDataException e) {
-			e.printStackTrace();
+			Logger.error(e);
 		}
 	}
 
@@ -88,7 +89,7 @@ public class LaunchPadS extends MidiDeviceImpl implements DeviceColorAssociatorC
 	}
 
 	@Override
-	public DisplayableFeedbackColor map(Color color) {
+	public DisplayableFeedbackColor getPreferColorMapping(Color color) {
 		return null;
 	}
 }
diff --git a/PlayWallPluginLaunchpad/src/main/resources/lang/launchpad_de.properties b/PlayWallPluginLaunchpad/src/main/resources/lang/launchpad_de.properties
deleted file mode 100644
index e69de29b..00000000
-- 
GitLab