diff --git a/.classpath b/.classpath index e60ceff..99bcecd 100644 --- a/.classpath +++ b/.classpath @@ -19,5 +19,8 @@ + + + diff --git a/bin/application/MainWindowController$1.class b/bin/application/MainWindowController$1.class index f77fdee..fd8a776 100644 Binary files a/bin/application/MainWindowController$1.class and b/bin/application/MainWindowController$1.class differ diff --git a/bin/application/MainWindowController$2.class b/bin/application/MainWindowController$2.class index d450515..8a6dd93 100644 Binary files a/bin/application/MainWindowController$2.class and b/bin/application/MainWindowController$2.class differ diff --git a/bin/application/MainWindowController$3.class b/bin/application/MainWindowController$3.class index 1a96310..f02684f 100644 Binary files a/bin/application/MainWindowController$3.class and b/bin/application/MainWindowController$3.class differ diff --git a/bin/application/MainWindowController$4.class b/bin/application/MainWindowController$4.class index ba2445f..775cf87 100644 Binary files a/bin/application/MainWindowController$4.class and b/bin/application/MainWindowController$4.class differ diff --git a/bin/application/MainWindowController$5.class b/bin/application/MainWindowController$5.class index b111c57..870e4f8 100644 Binary files a/bin/application/MainWindowController$5.class and b/bin/application/MainWindowController$5.class differ diff --git a/bin/application/MainWindowController$6.class b/bin/application/MainWindowController$6.class index 9492da4..0104b07 100644 Binary files a/bin/application/MainWindowController$6.class and b/bin/application/MainWindowController$6.class differ diff --git a/bin/application/MainWindowController$7.class b/bin/application/MainWindowController$7.class index 66733a3..1903948 100644 Binary files a/bin/application/MainWindowController$7.class and b/bin/application/MainWindowController$7.class differ diff --git a/bin/application/MainWindowController.class b/bin/application/MainWindowController.class index 107e4cf..b266414 100644 Binary files a/bin/application/MainWindowController.class and b/bin/application/MainWindowController.class differ diff --git a/bin/libraries/commons-logging-api-1.1.jar b/bin/libraries/commons-logging-api-1.1.jar new file mode 100644 index 0000000..d1abcbb Binary files /dev/null and b/bin/libraries/commons-logging-api-1.1.jar differ diff --git a/bin/libraries/commons-vfs2-2.1.1744488.2.jar b/bin/libraries/commons-vfs2-2.1.1744488.2.jar new file mode 100644 index 0000000..a9887cf Binary files /dev/null and b/bin/libraries/commons-vfs2-2.1.1744488.2.jar differ diff --git a/bin/libraries/junrar-0.7.jar b/bin/libraries/junrar-0.7.jar new file mode 100644 index 0000000..2b6817c Binary files /dev/null and b/bin/libraries/junrar-0.7.jar differ diff --git a/src/application/MainWindowController.java b/src/application/MainWindowController.java index 5db081a..ecba1bb 100644 --- a/src/application/MainWindowController.java +++ b/src/application/MainWindowController.java @@ -17,6 +17,7 @@ import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -38,7 +39,12 @@ import javax.swing.ProgressMonitor; import javax.swing.ProgressMonitorInputStream; import org.apache.commons.io.FileUtils; +import org.apache.commons.vfs2.tasks.MkdirTask; +import com.github.junrar.Archive; +import com.github.junrar.exception.RarException; +import com.github.junrar.impl.FileVolumeManager; +import com.github.junrar.rarfile.FileHeader; import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXColorPicker; import com.jfoenix.controls.JFXHamburger; @@ -203,6 +209,7 @@ public class MainWindowController { private String selectedGameTitleID; private String selectedGameTitle; private String color; + private String smmID; private String version = "0.1.5"; private String buildNumber = "021"; private String versionName = "Gusty Garden"; @@ -665,7 +672,9 @@ public class MainWindowController { @FXML void smmdbDownloadBtnAction(ActionEvent event){ String downloadUrl = "http://smmdb.ddns.net/courses/" + id; - //TODO un-rar and place to the right directory + String downloadFile = getCemuPath() + "/" + id + ".rar"; //getCemuPath() + "/" + smmID + "/" + id + ".rar" + String outputFile = getCemuPath() + "\\"; + try { HttpURLConnection conn = (HttpURLConnection) new URL(downloadUrl).openConnection(); ProgressMonitorInputStream pmis = new ProgressMonitorInputStream(null, "Downloading...", conn.getInputStream()); @@ -674,8 +683,50 @@ public class MainWindowController { pm.setMillisToPopup(0); pm.setMinimum(0); // tell the progress bar that we start at the beginning of the stream pm.setMaximum(conn.getContentLength()); // tell the progress bar the total number of bytes we are going to read. - FileUtils.copyInputStreamToFile(pmis, new File(getCemuPath() + "/" + id + ".rar")); //download file + "/mlc01/emulatorSave" + FileUtils.copyInputStreamToFile(pmis, new File(downloadFile)); //download file + "/mlc01/emulatorSave" + System.out.println((getCemuPath() + "/" + smmID + "/" + id + ".rar")); System.out.println("downloaded successfull"); + + //TODO place file into the right directory + File f = new File(downloadFile); + Archive a = null; + try { + a = new Archive(new FileVolumeManager(f)); + } catch (RarException e) { + // Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // Auto-generated catch block + e.printStackTrace(); + } + if (a != null) { + a.getMainHeader().print(); + FileHeader fh = a.nextFileHeader(); + File courseDirectory = new File(outputFile + fh.getFileNameString().substring(0, fh.getFileNameString().indexOf('\\'))); + while (fh != null) { + try { + if (!courseDirectory.exists()) { + courseDirectory.mkdir(); + } + File out = new File(outputFile + fh.getFileNameString().trim()); + System.out.println(out.getAbsolutePath()); + FileOutputStream os = new FileOutputStream(out); + a.extractFile(fh, os); + os.close(); + } catch (FileNotFoundException e) { + // Auto-generated catch block + e.printStackTrace(); + } catch (RarException e) { + // Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // Auto-generated catch block + e.printStackTrace(); + } + fh = a.nextFileHeader(); + } + } + } catch (IOException e) { System.err.println("something went wrong during downloading the course"); e.printStackTrace(); diff --git a/src/libraries/commons-logging-api-1.1.jar b/src/libraries/commons-logging-api-1.1.jar new file mode 100644 index 0000000..d1abcbb Binary files /dev/null and b/src/libraries/commons-logging-api-1.1.jar differ diff --git a/src/libraries/commons-vfs2-2.1.1744488.2.jar b/src/libraries/commons-vfs2-2.1.1744488.2.jar new file mode 100644 index 0000000..a9887cf Binary files /dev/null and b/src/libraries/commons-vfs2-2.1.1744488.2.jar differ diff --git a/src/libraries/junrar-0.7.jar b/src/libraries/junrar-0.7.jar new file mode 100644 index 0000000..2b6817c Binary files /dev/null and b/src/libraries/junrar-0.7.jar differ