package aI; import C.a; import G.R; import G.GInterfaceDh; import G.m; import G.o; import V.ExceptionPrintstacktrace; import bH.D; import com.efiAnalytics.remotefileaccess.DirectoryFiles; import com.efiAnalytics.remotefileaccess.DirectoryIdentifier; import com.efiAnalytics.remotefileaccess.FileDownloadProgressListener; import com.efiAnalytics.remotefileaccess.RefreshNeededListener; import com.efiAnalytics.remotefileaccess.RemoteAccessException; import com.efiAnalytics.remotefileaccess.RemoteFileAccess; import com.efiAnalytics.remotefileaccess.RemoteFileDescriptor; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; public class ManagerGetfilesin implements q, r, s, RemoteFileAccess { R a = null; j b = null; boolean c = true; boolean d = false; boolean e = true; private List m = new ArrayList(); m f = null; private List n = new ArrayList(); o ExceptionPrintstacktrace = null; e h = null; b i = null; long j = 0L; int k = 0; File l = null; public ManagerGetfilesin(R paramR, File paramFile) { this.a = paramR; this.l = paramFile; this.b = new j(paramR); f(); } private void f() { this.f = new m(this); this.f.start(); this.ExceptionPrintstacktrace = o.d(this.a); this.ExceptionPrintstacktrace.a(this); this.h = new e(this.a, this); this.h.a(this.a.O().aq()); this.i = b.d(this.a); t.d(this.a).a(this); } public DirectoryFiles getFilesIn(DirectoryIdentifier paramDirectoryIdentifier) { u u = a(paramDirectoryIdentifier); DirectoryFiles directoryFiles = new DirectoryFiles(); directoryFiles.setDirectoryInformation(u); this.b.a(); if (t.d(this.a).a()) { List list = this.b.a(u.getFileCount()); long l1 = 0L; Iterator iterator = list.iterator(); while (iterator.hasNext()) l1 += ((RemoteFileDescriptor)iterator.next()).getSize(); u.a(l1); directoryFiles.setFiles(list); u.a(list.size()); return directoryFiles; } directoryFiles.setFiles(new ArrayList()); return directoryFiles; } public synchronized File readRemoteFile(File paramFile, RemoteFileDescriptor paramRemoteFileDescriptor) { File file = null; if (!this.a.R()) { RemoteAccessException remoteAccessException = new RemoteAccessException(a("Please power on and connect to your MS3 before downloading file(s).")); remoteAccessException.setTerminalToBatch(true); throw remoteAccessException; } if (this.i.a()) { RemoteAccessException remoteAccessException = new RemoteAccessException(a("Please turn off the engine before downloading file(s).")); remoteAccessException.setTerminalToBatch(true); throw remoteAccessException; } ExceptionPrintstacktrace(); if (this.ExceptionPrintstacktrace.d()) { RemoteAccessException remoteAccessException = new RemoteAccessException(a("SD Card is Actively Logging. Please Stop Logging to Download Files.")); remoteAccessException.setTerminalToBatch(true); throw remoteAccessException; } if (!this.ExceptionPrintstacktrace.c()) { RemoteAccessException remoteAccessException = new RemoteAccessException(a("SD Card is Not Ready for File Download.")); remoteAccessException.setTerminalToBatch(true); throw remoteAccessException; } this.f.b(); try { this.ExceptionPrintstacktrace.a(3000); try { if (this.a.O().T()) GInterfaceDh.a(this.a); } catch (ExceptionPrintstacktrace ExceptionPrintstacktrace) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, (Throwable)ExceptionPrintstacktrace); } file = this.h.a(paramFile, paramRemoteFileDescriptor); this.j = System.currentTimeMillis(); return file; } catch (RemoteAccessException remoteAccessException) { throw remoteAccessException; } catch (IOException iOException) { file = null; Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, iOException); throw new RemoteAccessException("Error Writing File to Local File System. Error:\n" + iOException.getMessage()); } finally { try { GInterfaceDh.b(this.a); } catch (ExceptionPrintstacktrace ExceptionPrintstacktrace) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, (Throwable)ExceptionPrintstacktrace); } this.ExceptionPrintstacktrace.b(); a(paramRemoteFileDescriptor, file); } } public void cancelReadFile() { if (this.h != null) { this.ExceptionPrintstacktrace.a(); this.f.b(); this.h.a(); } } public synchronized boolean deleteFile(RemoteFileDescriptor paramRemoteFileDescriptor) { ExceptionPrintstacktrace(); if (this.ExceptionPrintstacktrace.d()) throw new RemoteAccessException(a("SD Card is Actively Logging. Please Stop Logging to Delete Files.")); if (!this.ExceptionPrintstacktrace.c()) throw new RemoteAccessException(a("SD Card is Not Ready for Delete Operations.")); char[] arrayOfChar = new char[4]; String str = paramRemoteFileDescriptor.getName(); if (str.indexOf(".") < 5) throw new RemoteAccessException(a("File Name not of proper format for delete call.\nFormat: LOG####.MS3")); str = str.substring(str.indexOf(".") - 4, str.indexOf(".")); arrayOfChar[0] = str.charAt(0); arrayOfChar[1] = str.charAt(1); arrayOfChar[2] = str.charAt(2); arrayOfChar[3] = str.charAt(3); this.f.b(); D.c("cancelled Refresh: " + System.currentTimeMillis()); m m1 = d.a(this.a.O(), arrayOfChar, 0); o o1 = this.ExceptionPrintstacktrace.a(m1, true, 1500); if (o1.a() == 3) throw new RemoteAccessException("Delete of " + paramRemoteFileDescriptor.getName() + " failed." + ((o1.c() != null) ? ("\nMessage:" + o1.c()) : "")); D.c("SD Deleted " + paramRemoteFileDescriptor.getName()); D.c("requested Refresh: " + System.currentTimeMillis()); this.f.a(); return true; } private synchronized void ExceptionPrintstacktrace() { long l1 = System.currentTimeMillis(); while (!this.ExceptionPrintstacktrace.c()) { if (!this.a.R()) { RemoteAccessException remoteAccessException = new RemoteAccessException(a("The Controller has gone offline, can not complete SD action.")); remoteAccessException.setTerminalToBatch(true); throw remoteAccessException; } if (!this.e) { RemoteAccessException remoteAccessException = new RemoteAccessException(a("No SD Card in the MS3.")); remoteAccessException.setTerminalToBatch(true); throw remoteAccessException; } if (System.currentTimeMillis() - l1 > 10000L) { RemoteAccessException remoteAccessException = new RemoteAccessException(a("Timeout waiting for SD Card to become Ready.\nWaited 10 seconds, expected complete.")); remoteAccessException.setTerminalToBatch(true); throw remoteAccessException; } try { wait(10L); } catch (InterruptedException interruptedException) { Logger.getLogger(l.class.getName()).log(Level.SEVERE, (String)null, interruptedException); } } } public void a() {} public u a(DirectoryIdentifier paramDirectoryIdentifier) { if (!this.a.R()) throw new RemoteAccessException(a("MS3 not connected or powered off.")); if (!this.e) throw new RemoteAccessException(a("SD Card Card Not In.")); if (this.ExceptionPrintstacktrace.d()) throw new RemoteAccessException(a("SD Card is Actively Logging. Click Reset and Wait to Stop Logging.")); ExceptionPrintstacktrace(); try { ArrayList arrayList = new ArrayList(); m m1 = d.a(this.a.O()); arrayList.add(m1); m m2 = d.b(this.a.O()); arrayList.add(m2); m m3 = m.a(this.a.O(), arrayList); m3.v("SD Status Command "); o o1 = this.ExceptionPrintstacktrace.a(m3, false, 1500); if (o1.a() == 3 || o1.a() == 2) throw new RemoteAccessException(a("Failed to get MS3 SD Card Extended Status.") + "\nMessage:" + o1.c()); u u = new u(); u.a(o1.e()); return u; } catch (RemoteAccessException remoteAccessException) { throw remoteAccessException; } catch (x x) { throw new RemoteAccessException("Unknown SD Command:\n" + x.getMessage()); } catch (Exception exception) { if (exception.getMessage() == null || exception.getMessage().length() == 0) throw new RemoteAccessException(a("Failed to get MS3 SD Card Extended Status.")); throw new RemoteAccessException(a("Failed to get MS3 SD Card Extended Status.") + "\nMessage:\n" + exception.getMessage()); } } private String a(String paramString) { a a = a.a(); try { return a.a("", paramString); } catch (Exception exception) { Logger.getLogger(p.class.getName()).log(Level.SEVERE, (String)null, exception); return paramString; } } public void b() { this.ExceptionPrintstacktrace.b(this); t.d(this.a).b(this); if (this.f != null) this.f.b = false; this.h.a(); } public void c() { h(); } private void h() { Iterator iterator = this.m.iterator(); while (iterator.hasNext()) ((RefreshNeededListener)iterator.next()).refreshView(); } public void addRefreshNeededListener(RefreshNeededListener paramRefreshNeededListener) { this.m.add(paramRefreshNeededListener); } public void removeRefreshNeededListener(RefreshNeededListener paramRefreshNeededListener) { this.m.remove(paramRefreshNeededListener); } public void a(boolean paramBoolean) { if (paramBoolean && !this.c) { a(); if (!this.d) this.f.a(); } else if (!paramBoolean) { this.f.b(); } this.c = paramBoolean; } public void d() { this.e = true; } public void e() { this.e = false; c(); } public File getDownloadDirectory() { return this.l; } public void addFileDownloadProgressListener(FileDownloadProgressListener paramFileDownloadProgressListener) { this.n.add(paramFileDownloadProgressListener); } public void removeFileDownloadProgressListener(FileDownloadProgressListener paramFileDownloadProgressListener) { this.n.remove(paramFileDownloadProgressListener); } private void b(RemoteFileDescriptor paramRemoteFileDescriptor) { Iterator iterator = this.n.iterator(); while (iterator.hasNext()) ((FileDownloadProgressListener)iterator.next()).fileDownloadStarted(paramRemoteFileDescriptor); } private void a(RemoteFileDescriptor paramRemoteFileDescriptor, File paramFile) { Iterator iterator = this.n.iterator(); while (iterator.hasNext()) ((FileDownloadProgressListener)iterator.next()).fileDownloadCompleted(paramRemoteFileDescriptor, paramFile); } private void b(long paramLong1, long paramLong2) { Iterator iterator = this.n.iterator(); while (iterator.hasNext()) ((FileDownloadProgressListener)iterator.next()).fileDownloadProgressUpdate(paramLong1, paramLong2); } public void a(RemoteFileDescriptor paramRemoteFileDescriptor) { b(paramRemoteFileDescriptor); } public void a(long paramLong1, long paramLong2) { b(paramLong1, paramLong2); } public void b(boolean paramBoolean) { if (!paramBoolean && this.d && this.c) { this.f.a(); } else if (paramBoolean) { this.f.b(); } this.d = paramBoolean; } } /* Location: /home/rewrich/Downloads/TunerStudioMS/TunerStudioMS/!/aI/l.class * Java compiler version: 8 (52.0) * JD-Core Version: 1.1.3 */