From 08ade9847530f628503c09f4770c7f4f7ee1d10b Mon Sep 17 00:00:00 2001 From: Pedro Vicente Gomez Date: Sun, 13 Dec 2015 16:47:04 +0100 Subject: [PATCH 1/9] Fix AndroidWiFiADB.iml configuration --- AndroidWiFiADB.iml | 137 ++------------------------------------------- 1 file changed, 5 insertions(+), 132 deletions(-) diff --git a/AndroidWiFiADB.iml b/AndroidWiFiADB.iml index 8929c0a..e9c44ad 100644 --- a/AndroidWiFiADB.iml +++ b/AndroidWiFiADB.iml @@ -1,146 +1,19 @@ - + - - - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + \ No newline at end of file From 1e8e5f62b15c437b3d82fb75b30ad49644982de6 Mon Sep 17 00:00:00 2001 From: Pedro Vicente Gomez Date: Sun, 13 Dec 2015 16:57:22 +0100 Subject: [PATCH 2/9] Remove sut usage as a naming convention in some tests --- .../androidwifiadb/AndroidWiFiADBTest.java | 44 ++++++------- .../window/AndroidDevicesTableModelTest.java | 62 +++++++++---------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java b/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java index 7d5d5e6..61ff62b 100644 --- a/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java +++ b/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java @@ -44,29 +44,29 @@ public class AndroidWiFiADBTest extends UnitTest { @Mock private View view; @Test public void shouldShowErrorIfADBIsNotInstalled() { - AndroidWiFiADB sut = givenAnAndroidWiFiADB(); + AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); givenADBIsNotInstalled(); - sut.connectDevices(); + androidWiFiAdb.connectDevices(); verify(view).showADBNotInstalledNotification(); } @Test public void shouldShowNoConnectedDevicesNotificationIfThereAreNotConnectedDevicesByUSB() { - AndroidWiFiADB sut = givenAnAndroidWiFiADB(); + AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); givenThereAreNoConnectedDevices(); - sut.connectDevices(); + androidWiFiAdb.connectDevices(); verify(view).showNoConnectedDevicesNotification(); } @Test public void shouldShowDevicesConnectedIfADBWiFiWhenConnectionIsEstablished() { - AndroidWiFiADB sut = givenAnAndroidWiFiADB(); + AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); List devices = givenThereAreSomeDevicesConnectedByUSB(); givenDevicesAreConnectedSuccessfully(devices); - sut.connectDevices(); + androidWiFiAdb.connectDevices(); for (Device device : devices) { verify(view).showConnectedDeviceNotification(device); @@ -74,11 +74,11 @@ public class AndroidWiFiADBTest extends UnitTest { } @Test public void shouldShowDeviceConnectionErrorWhenConnectionIsNotEstablished() { - AndroidWiFiADB sut = givenAnAndroidWiFiADB(); + AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); List devices = givenThereAreSomeDevicesConnectedByUSB(); givenDevicesAreNotConnectedSuccessfully(devices); - sut.connectDevices(); + androidWiFiAdb.connectDevices(); for (Device device : devices) { verify(view).showErrorConnectingDeviceNotification(device); @@ -87,56 +87,56 @@ public class AndroidWiFiADBTest extends UnitTest { @Test public void shouldNotRefreshDevicesListIfAdbIsNotIstalled() throws Exception { - AndroidWiFiADB sut = givenAnAndroidWiFiADB(); + AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); givenADBIsNotInstalled(); - assertFalse(sut.refreshDevicesList()); + assertFalse(androidWiFiAdb.refreshDevicesList()); } @Test public void shouldRefreshDevicesListAddNewDevice() throws Exception { - AndroidWiFiADB sut = givenAnAndroidWiFiADB(); + AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); List devices = givenThereAreSomeDevicesConnectedByUSB(); givenDevicesAreConnectedSuccessfully(devices); givenAnyIpToDevices(); - assertEquals(0, sut.getDevices().size()); - sut.refreshDevicesList(); - assertEquals(devices.size(), sut.getDevices().size()); + assertEquals(0, androidWiFiAdb.getDevices().size()); + androidWiFiAdb.refreshDevicesList(); + assertEquals(devices.size(), androidWiFiAdb.getDevices().size()); } @Test public void shouldRefreshDevicesListUpdateExistingDevices() throws Exception { - AndroidWiFiADB sut = givenAnAndroidWiFiADB(); + AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); List devices = givenThereAreSomeDevicesConnectedByUSB(); givenDevicesAreConnectedSuccessfully(devices); - sut.connectDevices(); - sut.refreshDevicesList(); + androidWiFiAdb.connectDevices(); + androidWiFiAdb.refreshDevicesList(); - assertEquals(devices.size(), sut.getDevices().size()); + assertEquals(devices.size(), androidWiFiAdb.getDevices().size()); } @Test public void shouldDisconnectDevice() throws Exception { - AndroidWiFiADB sut = givenAnAndroidWiFiADB(); + AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); givenADBIsInstalled(); Device device = givenAnyConnectedDevice(); givenDevicesAreDisconnectedSuccessfully(Arrays.asList(device)); - sut.disconnectDevice(device); + androidWiFiAdb.disconnectDevice(device); assertFalse(device.isConnected()); } @Test public void shouldConnectDevice() throws Exception { - AndroidWiFiADB sut = givenAnAndroidWiFiADB(); + AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); givenADBIsInstalled(); Device device = givenAnyDisonnectedDevice(); givenDevicesAreConnectedSuccessfully(Arrays.asList(device)); - sut.connectDevice(device); + androidWiFiAdb.connectDevice(device); assertTrue(device.isConnected()); } diff --git a/src/test/java/com/github/pedrovgs/androidwifiadb/window/AndroidDevicesTableModelTest.java b/src/test/java/com/github/pedrovgs/androidwifiadb/window/AndroidDevicesTableModelTest.java index 2bd7730..5221584 100644 --- a/src/test/java/com/github/pedrovgs/androidwifiadb/window/AndroidDevicesTableModelTest.java +++ b/src/test/java/com/github/pedrovgs/androidwifiadb/window/AndroidDevicesTableModelTest.java @@ -49,92 +49,92 @@ public class AndroidDevicesTableModelTest extends UnitTest { @Test public void shouldAddDevice() throws Exception { - AndroidDevicesTableModel sut = givenEmptyDevicesTableModel(); - assertNull(sut.get(0)); + AndroidDevicesTableModel androidDevicesTableModel = givenEmptyDevicesTableModel(); + assertNull(androidDevicesTableModel.get(0)); Device device = givenAnyDevice(); - sut.add(device); + androidDevicesTableModel.add(device); - assertEquals(device, sut.get(0)); + assertEquals(device, androidDevicesTableModel.get(0)); } @Test public void shouldClearDevicesList() throws Exception { - AndroidDevicesTableModel sut = givenEmptyDevicesTableModel(); + AndroidDevicesTableModel androidDevicesTableModel = givenEmptyDevicesTableModel(); - sut.add(givenAnyDevice()); + androidDevicesTableModel.add(givenAnyDevice()); - assertEquals(1, sut.getRowCount()); - sut.clear(); - assertEquals(0, sut.getRowCount()); + assertEquals(1, androidDevicesTableModel.getRowCount()); + androidDevicesTableModel.clear(); + assertEquals(0, androidDevicesTableModel.getRowCount()); } @Test public void shouldReturnValueDeviceAsStringForDeviceColumn() throws Exception { - AndroidDevicesTableModel sut = givenEmptyDevicesTableModel(); + AndroidDevicesTableModel androidDevicesTableModel = givenEmptyDevicesTableModel(); Device device = givenAnyDevice(); - sut.add(device); + androidDevicesTableModel.add(device); - assertEquals(device.toString(), sut.getValueAt(0, COLUMN_DEVICE)); + assertEquals(device.toString(), androidDevicesTableModel.getValueAt(0, COLUMN_DEVICE)); } @Test public void shouldReturnValueConnectedStringForConnectedDevice() throws Exception { - AndroidDevicesTableModel sut = givenEmptyDevicesTableModel(); + AndroidDevicesTableModel androidDevicesTableModel = givenEmptyDevicesTableModel(); Device device = givenAnyDevice(); device.setConnected(true); - sut.add(device); + androidDevicesTableModel.add(device); - assertEquals(CONNECTED, sut.getValueAt(0, COLUMN_STATE)); + assertEquals(CONNECTED, androidDevicesTableModel.getValueAt(0, COLUMN_STATE)); } @Test public void shouldReturnValueDisconnectedStringForDisconnectedDevice() throws Exception { - AndroidDevicesTableModel sut = givenEmptyDevicesTableModel(); + AndroidDevicesTableModel androidDevicesTableModel = givenEmptyDevicesTableModel(); Device device = givenAnyDevice(); device.setConnected(false); - sut.add(device); + androidDevicesTableModel.add(device); - assertEquals(DISCONNECTED, sut.getValueAt(0, COLUMN_STATE)); + assertEquals(DISCONNECTED, androidDevicesTableModel.getValueAt(0, COLUMN_STATE)); } @Test public void shouldReturnNullValueForActionColumn() throws Exception { - AndroidDevicesTableModel sut = givenEmptyDevicesTableModel(); + AndroidDevicesTableModel androidDevicesTableModel = givenEmptyDevicesTableModel(); - sut.add(givenAnyDevice()); + androidDevicesTableModel.add(givenAnyDevice()); - assertEquals(null, sut.getValueAt(0, COLUMN_ACTION)); + assertEquals(null, androidDevicesTableModel.getValueAt(0, COLUMN_ACTION)); } @Test public void shouldReturnNullValueForUnknownColumn() throws Exception { - AndroidDevicesTableModel sut = givenEmptyDevicesTableModel(); + AndroidDevicesTableModel androidDevicesTableModel = givenEmptyDevicesTableModel(); - sut.add(givenAnyDevice()); + androidDevicesTableModel.add(givenAnyDevice()); - assertEquals(null, sut.getValueAt(0, COLUMN_WITH_NOT_VALID_INDEX)); + assertEquals(null, androidDevicesTableModel.getValueAt(0, COLUMN_WITH_NOT_VALID_INDEX)); } @Test public void shouldReturnEditableCellForActionColumn() throws Exception { - AndroidDevicesTableModel sut = givenEmptyDevicesTableModel(); + AndroidDevicesTableModel androidDevicesTableModel = givenEmptyDevicesTableModel(); - sut.add(givenAnyDevice()); + androidDevicesTableModel.add(givenAnyDevice()); - assertFalse(sut.isCellEditable(0, COLUMN_STATE) || sut.isCellEditable(0, COLUMN_DEVICE)); - assertTrue(sut.isCellEditable(0, COLUMN_ACTION)); + assertFalse(androidDevicesTableModel.isCellEditable(0, COLUMN_STATE) || androidDevicesTableModel.isCellEditable(0, COLUMN_DEVICE)); + assertTrue(androidDevicesTableModel.isCellEditable(0, COLUMN_ACTION)); } @Test public void shouldFireCellUpdateOnlyForActionColumn() throws Exception { - AndroidDevicesTableModel sut = givenEmptyDevicesTableModel(); + AndroidDevicesTableModel androidDevicesTableModel = givenEmptyDevicesTableModel(); - sut.addTableModelListener(tableModelListener); - sut.setValueAt(anyObject(), 0, COLUMN_ACTION); + androidDevicesTableModel.addTableModelListener(tableModelListener); + androidDevicesTableModel.setValueAt(anyObject(), 0, COLUMN_ACTION); verify(tableModelListener, atLeastOnce()).tableChanged((TableModelEvent) anyObject()); } From d5e4fa02d0c3e8ec1977ed65b38f8b45718e0562 Mon Sep 17 00:00:00 2001 From: Pedro Vicente Gomez Date: Sun, 13 Dec 2015 17:04:17 +0100 Subject: [PATCH 3/9] Change devices list to be final in AndroidWiFiADB class --- .../pedrovgs/androidwifiadb/AndroidWiFiADB.java | 12 ++++++------ .../pedrovgs/androidwifiadb/AndroidWiFiADBTest.java | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java b/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java index 746d92d..c05da29 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java @@ -17,9 +17,8 @@ package com.github.pedrovgs.androidwifiadb; import com.github.pedrovgs.androidwifiadb.adb.ADB; -import com.intellij.openapi.project.Project; import com.github.pedrovgs.androidwifiadb.view.View; - +import com.intellij.openapi.project.Project; import java.util.ArrayList; import java.util.List; @@ -27,7 +26,7 @@ public class AndroidWiFiADB { private final ADB adb; private final View view; - private List devices; + private final List devices; public AndroidWiFiADB(ADB adb, View view) { this.adb = adb; @@ -40,13 +39,14 @@ public void connectDevices() { view.showADBNotInstalledNotification(); return; } - devices = adb.getDevicesConnectedByUSB(); - if (devices.isEmpty()) { + List connectedDevices = adb.getDevicesConnectedByUSB(); + if (connectedDevices.isEmpty()) { view.showNoConnectedDevicesNotification(); return; } - devices = adb.connectDevices(devices); + devices.clear(); + devices.addAll(adb.connectDevices(connectedDevices)); showConnectionResultNotification(devices); } diff --git a/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java b/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java index 61ff62b..0308666 100644 --- a/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java +++ b/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java @@ -30,6 +30,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; From 5f23a582c4c4409bba57edd1c7d32aebd27d1560 Mon Sep 17 00:00:00 2001 From: Pedro Vicente Gomez Date: Sun, 13 Dec 2015 17:11:28 +0100 Subject: [PATCH 4/9] Remove not used variable named project --- .../github/pedrovgs/androidwifiadb/AndroidWiFiADB.java | 5 ----- .../androidwifiadb/action/AndroidWiFiADBAction.java | 1 - .../com/github/pedrovgs/androidwifiadb/adb/ADB.java | 10 +--------- .../androidwifiadb/window/AndroidWiFiADBWindow.java | 2 -- 4 files changed, 1 insertion(+), 17 deletions(-) diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java b/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java index c05da29..45a5e5f 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java @@ -18,7 +18,6 @@ import com.github.pedrovgs.androidwifiadb.adb.ADB; import com.github.pedrovgs.androidwifiadb.view.View; -import com.intellij.openapi.project.Project; import java.util.ArrayList; import java.util.List; @@ -70,10 +69,6 @@ public List getDevices() { return devices; } - public void updateProject(Project project) { - this.adb.updateProject(project); - } - public void connectDevice(Device device) { if (!isADBInstalled()) { view.showADBNotInstalledNotification(); diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/action/AndroidWiFiADBAction.java b/src/main/java/com/github/pedrovgs/androidwifiadb/action/AndroidWiFiADBAction.java index 8e812ef..2327b58 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/action/AndroidWiFiADBAction.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/action/AndroidWiFiADBAction.java @@ -37,7 +37,6 @@ public AndroidWiFiADBAction() { } public void actionPerformed(final AnActionEvent event) { - this.androidWifiADB.updateProject(event.getProject()); ApplicationManager.getApplication().executeOnPooledThread(new Runnable() { public void run() { androidWifiADB.connectDevices(); diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADB.java b/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADB.java index 9894837..1a4bc9f 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADB.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADB.java @@ -17,10 +17,7 @@ package com.github.pedrovgs.androidwifiadb.adb; import com.github.pedrovgs.androidwifiadb.Device; -import com.intellij.openapi.project.Project; - import com.intellij.util.EnvironmentUtil; - import java.io.File; import java.util.List; @@ -33,7 +30,6 @@ public class ADB { private final CommandLine commandLine; private final ADBParser adbParser; - private Project project; public ADB(CommandLine commandLine, ADBParser adbParser) { this.commandLine = commandLine; @@ -74,10 +70,6 @@ public List disconnectDevices(List devices) { return devices; } - public void updateProject(Project project) { - this.project = project; - } - private boolean connectDeviceByIp(Device device) { String deviceIp = !device.getIp().isEmpty() ? device.getIp() : getDeviceIp(device); if (deviceIp.isEmpty()) { @@ -110,7 +102,7 @@ private void enableTCPCommand() { private boolean checkTCPCommandExecuted() { String getPropCommand = getCommand("adb shell getprop | grep adb"); String getPropOutput = commandLine.executeCommand(getPropCommand); - String adbTcpPort = adbParser.parseAdbServiceTcpPort(getPropOutput); + String adbTcpPort = adbParser.parseAdbServiceTcpPort(getPropOutput); return TCPIP_PORT.equals(adbTcpPort); } diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/window/AndroidWiFiADBWindow.java b/src/main/java/com/github/pedrovgs/androidwifiadb/window/AndroidWiFiADBWindow.java index 92d7cd4..9088f46 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/window/AndroidWiFiADBWindow.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/window/AndroidWiFiADBWindow.java @@ -50,8 +50,6 @@ public AndroidWiFiADBWindow() { } @Override public void createToolWindowContent(Project project, ToolWindow toolWindow) { - this.androidWifiADB.updateProject(project); - createToolWindowContent(toolWindow); setupUI(); monitorDevices(); From 9587dc1ecfd16515a5c28344c5f644194c422f56 Mon Sep 17 00:00:00 2001 From: Pedro Vicente Gomez Date: Sun, 13 Dec 2015 17:22:20 +0100 Subject: [PATCH 5/9] Change devices collection to be declared as collection and not as list and add a needed try catch to the ips parser --- .../androidwifiadb/AndroidWiFiADB.java | 34 ++++++++----------- .../pedrovgs/androidwifiadb/adb/ADB.java | 5 +-- .../androidwifiadb/adb/ADBParser.java | 11 ++++-- .../window/CardLayoutDevices.java | 5 +-- 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java b/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java index 45a5e5f..850a4e8 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java @@ -19,18 +19,21 @@ import com.github.pedrovgs.androidwifiadb.adb.ADB; import com.github.pedrovgs.androidwifiadb.view.View; import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; public class AndroidWiFiADB { private final ADB adb; private final View view; - private final List devices; + private final Set devices; public AndroidWiFiADB(ADB adb, View view) { this.adb = adb; this.view = view; - this.devices = new ArrayList(); + this.devices = new LinkedHashSet(); } public void connectDevices() { @@ -38,14 +41,14 @@ public void connectDevices() { view.showADBNotInstalledNotification(); return; } - List connectedDevices = adb.getDevicesConnectedByUSB(); - if (connectedDevices.isEmpty()) { + devices.clear(); + devices.addAll(adb.getDevicesConnectedByUSB()); + if (devices.isEmpty()) { view.showNoConnectedDevicesNotification(); return; } - devices.clear(); - devices.addAll(adb.connectDevices(connectedDevices)); + devices.addAll(adb.connectDevices(devices)); showConnectionResultNotification(devices); } @@ -53,7 +56,7 @@ public boolean refreshDevicesList() { if (!isADBInstalled()) { return false; } - final List connected = adb.getDevicesConnectedByUSB(); + final Collection connected = adb.getDevicesConnectedByUSB(); for (Device connectedDevice : connected) { if (!checkDeviceExistance(connectedDevice)) { connectedDevice.setIp(adb.getDeviceIp(connectedDevice)); @@ -65,7 +68,7 @@ public boolean refreshDevicesList() { return true; } - public List getDevices() { + public Collection getDevices() { return devices; } @@ -75,7 +78,7 @@ public void connectDevice(Device device) { return; } - List connectedDevices = new ArrayList(); + Collection connectedDevices = new ArrayList(); connectedDevices.add(device); connectedDevices = adb.connectDevices(connectedDevices); for (Device connected : connectedDevices) { @@ -100,14 +103,7 @@ public void disconnectDevice(Device device) { } private void updateDeviceConnectionState(final Device updatedDevice) { - for (int i = 0, size = devices.size(); i < size; i++) { - Device device = devices.get(i); - if (updatedDevice.getId().equals(device.getId())) { - devices.remove(i); - device.setName(updatedDevice.getName()); - devices.add(i, device); - } - } + devices.add(updatedDevice); } private boolean checkDeviceExistance(Device connectedDevice) { @@ -124,7 +120,7 @@ private boolean isADBInstalled() { return adb.isInstalled(); } - private void showConnectionResultNotification(List devices) { + private void showConnectionResultNotification(Collection devices) { for (Device device : devices) { if (device.isConnected()) { view.showConnectedDeviceNotification(device); @@ -134,7 +130,7 @@ private void showConnectionResultNotification(List devices) { } } - private void showDisconnectionResultNotification(List devices) { + private void showDisconnectionResultNotification(Collection devices) { for (Device device : devices) { if (!device.isConnected()) { view.showDisconnectedDeviceNotification(device); diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADB.java b/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADB.java index 1a4bc9f..51428e5 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADB.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADB.java @@ -19,6 +19,7 @@ import com.github.pedrovgs.androidwifiadb.Device; import com.intellij.util.EnvironmentUtil; import java.io.File; +import java.util.Collection; import java.util.List; public class ADB { @@ -41,13 +42,13 @@ public boolean isInstalled() { return !commandLine.executeCommand(versionCommand).isEmpty(); } - public List getDevicesConnectedByUSB() { + public Collection getDevicesConnectedByUSB() { String getDevicesCommand = getCommand("devices -l"); String adbDevicesOutput = commandLine.executeCommand(getDevicesCommand); return adbParser.parseGetDevicesOutput(adbDevicesOutput); } - public List connectDevices(List devices) { + public Collection connectDevices(Collection devices) { for (Device device : devices) { boolean connected = connectDeviceByIp(device); device.setConnected(connected); diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADBParser.java b/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADBParser.java index 85882eb..15f94d8 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADBParser.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/adb/ADBParser.java @@ -61,9 +61,14 @@ public String parseGetDeviceIp(String ipInfo) { if (ipInfo.isEmpty() || ipInfo.contains(ERROR_PARSING_DEVICE_IP_KEY)) { return ""; } - int start = ipInfo.indexOf(START_DEVICE_IP_INDICATOR) + 5; - int end = ipInfo.indexOf(END_DEVICE_IP_INDICATOR); - return ipInfo.substring(start, end); + try { + int start = ipInfo.indexOf(START_DEVICE_IP_INDICATOR) + 5; + int end = ipInfo.indexOf(END_DEVICE_IP_INDICATOR); + return ipInfo.substring(start, end); + } catch (StringIndexOutOfBoundsException e) { + System.out.println(e); + return ""; + } } public String parseAdbServiceTcpPort(String getPropOutput) { diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/window/CardLayoutDevices.java b/src/main/java/com/github/pedrovgs/androidwifiadb/window/CardLayoutDevices.java index d3fec5a..0385d1b 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/window/CardLayoutDevices.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/window/CardLayoutDevices.java @@ -23,6 +23,7 @@ import java.awt.CardLayout; import java.awt.Container; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import javax.swing.JCheckBox; @@ -43,7 +44,7 @@ public class CardLayoutDevices implements ActionButtonListener { private JPanel panelNoDevices; private JPanel panelDevices; private JTable tableDevices; - private List devices; + private Collection devices; private DeviceAction deviceAction; public CardLayoutDevices(Container parentContainer, DeviceAction action) { @@ -52,7 +53,7 @@ public CardLayoutDevices(Container parentContainer, DeviceAction action) { this.devices = new ArrayList(); } - public void setDevices(List devices) { + public void setDevices(Collection devices) { this.devices = devices; } From 52b5f31d39c9f676f78fb8d545740d245f39570b Mon Sep 17 00:00:00 2001 From: Pedro Vicente Gomez Date: Sun, 13 Dec 2015 17:25:15 +0100 Subject: [PATCH 6/9] Update Android Devices Window screenshot --- art/android_devices_window.png | Bin 51989 -> 83333 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/art/android_devices_window.png b/art/android_devices_window.png index 581a5041b450393c97dae7773941e59ac95e1b16..0559cd9dc84ae3e7c76f33bccf3078b8f06bb6d1 100644 GIT binary patch literal 83333 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…pwW{4^ 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%0D@hf1q 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 Do&q*# literal 51989 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%0D6EwO3}4W}rP&{Su6)F$$p@Zm)(E!^%#gzkCB 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 From a62782686dd046d1fd95a0bd190b367ce11b26c9 Mon Sep 17 00:00:00 2001 From: Pedro Vicente Gomez Date: Sun, 13 Dec 2015 17:42:09 +0100 Subject: [PATCH 7/9] Implement mechanism to link the application ui when a device is connected from the adb button and also change how the window is updated to remove not connected devices :) --- .../androidwifiadb/AndroidWiFiADB.java | 16 +++++- .../pedrovgs/androidwifiadb/Device.java | 50 ++++++------------- 2 files changed, 30 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java b/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java index 850a4e8..b4d5d48 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashSet; +import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -28,12 +29,11 @@ public class AndroidWiFiADB { private final ADB adb; private final View view; - private final Set devices; + private static final Set devices = new LinkedHashSet(); public AndroidWiFiADB(ADB adb, View view) { this.adb = adb; this.view = view; - this.devices = new LinkedHashSet(); } public void connectDevices() { @@ -56,6 +56,7 @@ public boolean refreshDevicesList() { if (!isADBInstalled()) { return false; } + removeNotConnectedDevices(); final Collection connected = adb.getDevicesConnectedByUSB(); for (Device connectedDevice : connected) { if (!checkDeviceExistance(connectedDevice)) { @@ -68,6 +69,17 @@ public boolean refreshDevicesList() { return true; } + private void removeNotConnectedDevices() { + List connectedDevices = new LinkedList(); + for (Device device : devices){ + if (device.isConnected()){ + connectedDevices.add(device); + } + } + devices.clear(); + devices.addAll(connectedDevices); + } + public Collection getDevices() { return devices; } diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/Device.java b/src/main/java/com/github/pedrovgs/androidwifiadb/Device.java index 09b8dcf..9187897 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/Device.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/Device.java @@ -16,10 +16,10 @@ package com.github.pedrovgs.androidwifiadb; -public class Device implements Cloneable { +public class Device { - private String name; private final String id; + private String name; private String ip = ""; private boolean connected; @@ -32,6 +32,10 @@ public String getName() { return name; } + public void setName(String name) { + this.name = name; + } + public String getId() { return id; } @@ -44,10 +48,6 @@ public void setIp(String ip) { this.ip = ip; } - public void setName(String name) { - this.name = name; - } - public boolean isConnected() { return connected; } @@ -56,42 +56,24 @@ public void setConnected(boolean connected) { this.connected = connected; } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(getName()); - if (!ip.isEmpty()) { - builder.append(" (").append(ip).append(")"); - } - return builder.toString(); - } - @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } Device device = (Device) o; - if (connected != device.connected) return false; - if (name != null ? !name.equals(device.name) : device.name != null) return false; - if (id != null ? !id.equals(device.id) : device.id != null) return false; - return !(ip != null ? !ip.equals(device.ip) : device.ip != null); + return id.equals(device.id); } @Override public int hashCode() { - int result = name != null ? name.hashCode() : 0; - result = 31 * result + (id != null ? id.hashCode() : 0); - result = 31 * result + (ip != null ? ip.hashCode() : 0); - result = 31 * result + (connected ? 1 : 0); - return result; + return id.hashCode(); } - @Override protected Device clone() { - Device clone; - try { - clone = (Device) super.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - return clone; + @Override public String toString() { + return name; } } From 94102c0d21a5ff62cfa92c246a95e2716ee29de1 Mon Sep 17 00:00:00 2001 From: Pedro Vicente Gomez Date: Sun, 13 Dec 2015 17:46:20 +0100 Subject: [PATCH 8/9] Update plugin metadata shonw in the intellij plugin store --- src/main/resources/META-INF/plugin.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index bf1473a..1798cf2 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -1,7 +1,7 @@ com.github.pedrovgs.androidwifiadb Android WiFi ADB - 1.3-SNAPSHOT + 2.0 Pedro Vicente Gómez Sánchez @@ -11,14 +11,15 @@
Connect your device using a USB cable and press the Android WiFi ADB button. Once the device be connected over WiFi you'll see an IntelliJ/Android Studio notification. Now you can disconnect your USB cable and enjoy deploying, running and debugging your applications over WiFi.
- To be able to connect your device over WiFi an environment variable with name ANDROID_HOME should be configured pointing at your Android SDK. + The version 2.0 enables a window to check which of your devices are connected or not and connect/disconnect it manually if needed. ]]> 1.1: Fixes for Windows and Linux.
- 1.2: Remove the usage of the ANDROID_HOME environment variable. This variable is not needed now. + 1.2: Remove the usage of the ANDROID_HOME environment variable. This variable is not needed now.
+ 2.0: Add a new Android WiFi ADB control panel showing all the devices connected by USB to be able to connect devices individually. ]]>
From ef1c265375a875ab1a6b1fef8c49e932ee64e7c8 Mon Sep 17 00:00:00 2001 From: Pedro Vicente Gomez Date: Sun, 13 Dec 2015 17:51:10 +0100 Subject: [PATCH 9/9] Fix checksyle issues --- .../androidwifiadb/AndroidWiFiADB.java | 34 +++++++++---------- .../window/CardLayoutDevices.java | 8 ++--- .../androidwifiadb/AndroidWiFiADBTest.java | 17 +++------- .../window/AndroidDevicesTableModelTest.java | 3 +- 4 files changed, 27 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java b/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java index b4d5d48..421b5e0 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADB.java @@ -20,16 +20,16 @@ import com.github.pedrovgs.androidwifiadb.view.View; import java.util.ArrayList; import java.util.Collection; -import java.util.LinkedHashSet; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; public class AndroidWiFiADB { + private static final Set DEVICES = new HashSet(); private final ADB adb; private final View view; - private static final Set devices = new LinkedHashSet(); public AndroidWiFiADB(ADB adb, View view) { this.adb = adb; @@ -41,15 +41,15 @@ public void connectDevices() { view.showADBNotInstalledNotification(); return; } - devices.clear(); - devices.addAll(adb.getDevicesConnectedByUSB()); - if (devices.isEmpty()) { + DEVICES.clear(); + DEVICES.addAll(adb.getDevicesConnectedByUSB()); + if (DEVICES.isEmpty()) { view.showNoConnectedDevicesNotification(); return; } - devices.addAll(adb.connectDevices(devices)); - showConnectionResultNotification(devices); + DEVICES.addAll(adb.connectDevices(DEVICES)); + showConnectionResultNotification(DEVICES); } public boolean refreshDevicesList() { @@ -61,7 +61,7 @@ public boolean refreshDevicesList() { for (Device connectedDevice : connected) { if (!checkDeviceExistance(connectedDevice)) { connectedDevice.setIp(adb.getDeviceIp(connectedDevice)); - devices.add(connectedDevice); + DEVICES.add(connectedDevice); } else { updateDeviceConnectionState(connectedDevice); } @@ -71,17 +71,17 @@ public boolean refreshDevicesList() { private void removeNotConnectedDevices() { List connectedDevices = new LinkedList(); - for (Device device : devices){ - if (device.isConnected()){ - connectedDevices.add(device); - } + for (Device device : DEVICES) { + if (device.isConnected()) { + connectedDevices.add(device); + } } - devices.clear(); - devices.addAll(connectedDevices); + DEVICES.clear(); + DEVICES.addAll(connectedDevices); } public Collection getDevices() { - return devices; + return DEVICES; } public void connectDevice(Device device) { @@ -115,12 +115,12 @@ public void disconnectDevice(Device device) { } private void updateDeviceConnectionState(final Device updatedDevice) { - devices.add(updatedDevice); + DEVICES.add(updatedDevice); } private boolean checkDeviceExistance(Device connectedDevice) { boolean deviceExists = false; - for (Device device : devices) { + for (Device device : DEVICES) { if (connectedDevice.getId().equals(device.getId())) { deviceExists = true; } diff --git a/src/main/java/com/github/pedrovgs/androidwifiadb/window/CardLayoutDevices.java b/src/main/java/com/github/pedrovgs/androidwifiadb/window/CardLayoutDevices.java index 0385d1b..d4d4c65 100644 --- a/src/main/java/com/github/pedrovgs/androidwifiadb/window/CardLayoutDevices.java +++ b/src/main/java/com/github/pedrovgs/androidwifiadb/window/CardLayoutDevices.java @@ -18,14 +18,11 @@ import com.github.pedrovgs.androidwifiadb.Device; import com.intellij.ui.table.JBTable; - import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Container; import java.util.ArrayList; import java.util.Collection; -import java.util.List; - import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; @@ -133,8 +130,9 @@ private void configureTableAppearance() { tableDevices.getColumnModel().getColumn(2).setMinWidth(215); tableDevices.getColumnModel().getColumn(2).setMaxWidth(215); tableDevices.getColumnModel().getColumn(2).setCellRenderer(new ConnectDisconnectRenderer()); - tableDevices.getColumnModel().getColumn(2).setCellEditor( - new ConnectDisconnectEditor(new JCheckBox(), this)); + tableDevices.getColumnModel() + .getColumn(2) + .setCellEditor(new ConnectDisconnectEditor(new JCheckBox(), this)); } private void updateDevicesTable() { diff --git a/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java b/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java index 0308666..cea743a 100644 --- a/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java +++ b/src/test/java/com/github/pedrovgs/androidwifiadb/AndroidWiFiADBTest.java @@ -18,7 +18,6 @@ import com.github.pedrovgs.androidwifiadb.adb.ADB; import com.github.pedrovgs.androidwifiadb.view.View; - import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; @@ -30,7 +29,6 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.anyObject; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -86,16 +84,14 @@ public class AndroidWiFiADBTest extends UnitTest { } } - @Test - public void shouldNotRefreshDevicesListIfAdbIsNotIstalled() throws Exception { + @Test public void shouldNotRefreshDevicesListIfAdbIsNotIstalled() throws Exception { AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); givenADBIsNotInstalled(); assertFalse(androidWiFiAdb.refreshDevicesList()); } - @Test - public void shouldRefreshDevicesListAddNewDevice() throws Exception { + @Test public void shouldRefreshDevicesListAddNewDevice() throws Exception { AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); List devices = givenThereAreSomeDevicesConnectedByUSB(); givenDevicesAreConnectedSuccessfully(devices); @@ -106,8 +102,7 @@ public void shouldRefreshDevicesListAddNewDevice() throws Exception { assertEquals(devices.size(), androidWiFiAdb.getDevices().size()); } - @Test - public void shouldRefreshDevicesListUpdateExistingDevices() throws Exception { + @Test public void shouldRefreshDevicesListUpdateExistingDevices() throws Exception { AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); List devices = givenThereAreSomeDevicesConnectedByUSB(); givenDevicesAreConnectedSuccessfully(devices); @@ -118,8 +113,7 @@ public void shouldRefreshDevicesListUpdateExistingDevices() throws Exception { assertEquals(devices.size(), androidWiFiAdb.getDevices().size()); } - @Test - public void shouldDisconnectDevice() throws Exception { + @Test public void shouldDisconnectDevice() throws Exception { AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); givenADBIsInstalled(); Device device = givenAnyConnectedDevice(); @@ -130,8 +124,7 @@ public void shouldDisconnectDevice() throws Exception { assertFalse(device.isConnected()); } - @Test - public void shouldConnectDevice() throws Exception { + @Test public void shouldConnectDevice() throws Exception { AndroidWiFiADB androidWiFiAdb = givenAnAndroidWiFiADB(); givenADBIsInstalled(); Device device = givenAnyDisonnectedDevice(); diff --git a/src/test/java/com/github/pedrovgs/androidwifiadb/window/AndroidDevicesTableModelTest.java b/src/test/java/com/github/pedrovgs/androidwifiadb/window/AndroidDevicesTableModelTest.java index 5221584..506ec20 100644 --- a/src/test/java/com/github/pedrovgs/androidwifiadb/window/AndroidDevicesTableModelTest.java +++ b/src/test/java/com/github/pedrovgs/androidwifiadb/window/AndroidDevicesTableModelTest.java @@ -125,7 +125,8 @@ public void shouldReturnEditableCellForActionColumn() throws Exception { androidDevicesTableModel.add(givenAnyDevice()); - assertFalse(androidDevicesTableModel.isCellEditable(0, COLUMN_STATE) || androidDevicesTableModel.isCellEditable(0, COLUMN_DEVICE)); + assertFalse(androidDevicesTableModel.isCellEditable(0, COLUMN_STATE) + || androidDevicesTableModel.isCellEditable(0, COLUMN_DEVICE)); assertTrue(androidDevicesTableModel.isCellEditable(0, COLUMN_ACTION)); }