From ac47d49cc731330947b73181a34307e00f86586b Mon Sep 17 00:00:00 2001 From: Samuel Carlsson Date: Thu, 20 Mar 2014 11:33:03 +0100 Subject: [PATCH] Refactor: Creating RemoteFile base class to be used as arguments. --- src/se/vidstige/jadb/JadbDevice.java | 6 +-- src/se/vidstige/jadb/RemoteFile.java | 38 +++++-------------- src/se/vidstige/jadb/RemoteFileRecord.java | 34 +++++++++++++++++ src/se/vidstige/jadb/SyncTransport.java | 6 +-- .../jadb/test/RealDeviceTestCases.java | 6 +-- 5 files changed, 52 insertions(+), 38 deletions(-) create mode 100644 src/se/vidstige/jadb/RemoteFileRecord.java diff --git a/src/se/vidstige/jadb/JadbDevice.java b/src/se/vidstige/jadb/JadbDevice.java index 372b2b2..2d522ec 100644 --- a/src/se/vidstige/jadb/JadbDevice.java +++ b/src/se/vidstige/jadb/JadbDevice.java @@ -70,13 +70,13 @@ public class JadbDevice { send("shell:" + shellLine.toString()); } - public List list(String remotePath) throws IOException, JadbException { + public List list(String remotePath) throws IOException, JadbException { ensureTransportIsSelected(); SyncTransport sync = transport.startSync(); sync.send("LIST", remotePath); - List result = new ArrayList(); - for (RemoteFile dent = sync.readDirectoryEntry(); dent != RemoteFile.DONE; dent = sync.readDirectoryEntry()) + List result = new ArrayList(); + for (RemoteFileRecord dent = sync.readDirectoryEntry(); dent != RemoteFileRecord.DONE; dent = sync.readDirectoryEntry()) { result.add(dent); } diff --git a/src/se/vidstige/jadb/RemoteFile.java b/src/se/vidstige/jadb/RemoteFile.java index fe08e05..88bec6f 100644 --- a/src/se/vidstige/jadb/RemoteFile.java +++ b/src/se/vidstige/jadb/RemoteFile.java @@ -1,37 +1,17 @@ package se.vidstige.jadb; +import sun.reflect.generics.reflectiveObjects.NotImplementedException; + /** - * Created by vidstige on 2014-03-19. + * Created by vidstige on 2014-03-20 */ public class RemoteFile { - public static final RemoteFile DONE = new RemoteFile("DONE", null, 0, 0, 0); + private final String path; - private final String name; - private final int mode; - private final int size; - private final long lastModified; + public RemoteFile(String path) { this.path = path;} - public RemoteFile(String id, String name, int mode, int size, long lastModified) { - this.name = name; - this.mode = mode; - this.size = size; - this.lastModified = lastModified; - } - - public String getName() { - - return name; - } - - public int getSize() { - return size; - } - - public long getLastModified() { - return lastModified; - } - - public boolean isDirectory() { - return (mode & (1 << 14)) == (1 << 14); - } + public String getName() { throw new NotImplementedException(); } + public int getSize() { throw new NotImplementedException(); } + public long getLastModified() { throw new NotImplementedException(); } + public boolean isDirectory() { throw new NotImplementedException(); } } diff --git a/src/se/vidstige/jadb/RemoteFileRecord.java b/src/se/vidstige/jadb/RemoteFileRecord.java new file mode 100644 index 0000000..9ffe93d --- /dev/null +++ b/src/se/vidstige/jadb/RemoteFileRecord.java @@ -0,0 +1,34 @@ +package se.vidstige.jadb; + +/** + * Created by vidstige on 2014-03-19. + */ +public class RemoteFileRecord extends RemoteFile{ + public static final RemoteFileRecord DONE = new RemoteFileRecord(null, 0, 0, 0); + + private final int mode; + private final int size; + private final long lastModified; + + public RemoteFileRecord(String name, int mode, int size, long lastModified) { + super(name); + this.mode = mode; + this.size = size; + this.lastModified = lastModified; + } + + @Override + public int getSize() { + return size; + } + + @Override + public long getLastModified() { + return lastModified; + } + + @Override + public boolean isDirectory() { + return (mode & (1 << 14)) == (1 << 14); + } +} diff --git a/src/se/vidstige/jadb/SyncTransport.java b/src/se/vidstige/jadb/SyncTransport.java index cfb4d77..732bf40 100644 --- a/src/se/vidstige/jadb/SyncTransport.java +++ b/src/se/vidstige/jadb/SyncTransport.java @@ -52,7 +52,7 @@ class SyncTransport { return new String(buffer, Charset.forName("utf-8")); } - public RemoteFile readDirectoryEntry() throws IOException { + public RemoteFileRecord readDirectoryEntry() throws IOException { String id = readString(4); int mode = readInt(); int size = readInt(); @@ -60,8 +60,8 @@ class SyncTransport { int nameLength = readInt(); String name = readString(nameLength); - if (!"DENT".equals(id)) return RemoteFile.DONE; - return new RemoteFile(id, name, mode, size, time); + if (!"DENT".equals(id)) return RemoteFileRecord.DONE; + return new RemoteFileRecord(name, mode, size, time); } private void sendChunk(byte[] buffer, int offset, int length) throws IOException { diff --git a/test/se/vidstige/jadb/test/RealDeviceTestCases.java b/test/se/vidstige/jadb/test/RealDeviceTestCases.java index 6dbf401..4da5786 100644 --- a/test/se/vidstige/jadb/test/RealDeviceTestCases.java +++ b/test/se/vidstige/jadb/test/RealDeviceTestCases.java @@ -6,7 +6,7 @@ import org.junit.Test; import se.vidstige.jadb.JadbDevice; import se.vidstige.jadb.JadbConnection; -import se.vidstige.jadb.RemoteFile; +import se.vidstige.jadb.RemoteFileRecord; public class RealDeviceTestCases { @@ -30,8 +30,8 @@ public class RealDeviceTestCases { { JadbConnection jadb = new JadbConnection(); JadbDevice any = jadb.getAnyDevice(); - List files = any.list("/"); - for (RemoteFile f : files) + List files = any.list("/"); + for (RemoteFileRecord f : files) { System.out.println(f.getName()); }