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