summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2012-10-13 09:02:17 -0700
committerJesse Morgan <jesse@jesterpm.net>2012-10-13 09:02:17 -0700
commitcdd1cce784a1a543a7f3c9bb4ef5cd7dc2048fc6 (patch)
treec8a380544caf52b5b46128b310538eb39feca20d /src
Initial commit.
Diffstat (limited to 'src')
-rw-r--r--src/net/jesterpm/sermonuploader/SermonUploader.java57
-rw-r--r--src/net/jesterpm/sermonuploader/config/Config.java39
-rw-r--r--src/net/jesterpm/sermonuploader/control/ConfigureTask.java80
-rw-r--r--src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java52
4 files changed, 228 insertions, 0 deletions
diff --git a/src/net/jesterpm/sermonuploader/SermonUploader.java b/src/net/jesterpm/sermonuploader/SermonUploader.java
new file mode 100644
index 0000000..b3d623e
--- /dev/null
+++ b/src/net/jesterpm/sermonuploader/SermonUploader.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2012 Jesse Morgan
+ */
+
+package net.jesterpm.sermonuploader;
+
+/**
+ * Application entry-point.
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public class SermonUploader {
+ private static final String DEFAULT_CONFIG = System.getProperty("user.home")
+ + System.getProperty("file.separator") + ".sermonuploader";
+
+ public static void main(String... args) {
+ final Config appconfig = new Config(DEFAULT_CONFIG);
+
+ if (args.length == 0) {
+ startConfigure(appconfig);
+
+ } else {
+ if (args[0].equals("--help")) {
+ printHelp();
+ }
+
+ startUpload(appconfig, args[0]);
+ }
+ }
+
+ private static void printHelp() {
+ System.out.println("SermonUploader - Podcast upload utility.");
+ System.out.println("Created by Jesse Morgan <jesse@jesterpm.net>");
+ System.out.println("http://jesterpm.net/projects/sermonuploader");
+ System.out.println();
+ System.out.println("Usage: SermonUploader [directory]");
+ System.out.println(
+ "\tWhen started with no arguments, the configuration dialog is opened.");
+ System.out.println("\tWhen started with one argument, it is assumed to "
+ + "be a directory with a metadata.txt file with upload instructions.");
+ System.out.println();
+ }
+
+ private static void startConfigure(final Config appconfig) {
+ ConfigurationWindow win = new ConfigurationWindow();
+ ConfigureTask task = new ConfigureTask(appconfig, win);
+
+ task.run();
+ }
+
+ public static void startUpload(final Config appconfig, final String dir) {
+ ProgressWindow win = new ProgressWindow();
+ UploadTask task = new UploadTask(appconfig, win, dir);
+
+ task.run();
+ }
+}
diff --git a/src/net/jesterpm/sermonuploader/config/Config.java b/src/net/jesterpm/sermonuploader/config/Config.java
new file mode 100644
index 0000000..d824464
--- /dev/null
+++ b/src/net/jesterpm/sermonuploader/config/Config.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2012 Jesse Morgan
+ */
+
+package net.jesterpm.sermonuploader.config;
+
+/**
+ * Configuration and metadata parser.
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public class Config {
+ private final String mFilename;
+ private final Map<String, String> mConfig;
+
+ /**
+ * Create a new Config object based on the given file.
+ */
+ public Config(final String filename) {
+ mFilename = filename;
+ parse();
+ }
+
+ private void parse() {
+
+ }
+
+ public void save() {
+
+ }
+
+ public String get(final String key) {
+ return mConfig.get(key);
+ }
+
+ public String put(final String key, final String obj) {
+ mConfig.put(key, obj);
+ }
+}
diff --git a/src/net/jesterpm/sermonuploader/control/ConfigureTask.java b/src/net/jesterpm/sermonuploader/control/ConfigureTask.java
new file mode 100644
index 0000000..1960165
--- /dev/null
+++ b/src/net/jesterpm/sermonuploader/control/ConfigureTask.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2012 Jesse Morgan
+ */
+
+package net.jesterpm.sermonuploader.control;
+
+import net.jesterpm.sermonuploader.config.Config;
+
+import net.jesterpm.sermonuploader.ui.Action;
+import net.jesterpm.sermonuploader.ui.ConfigurationWindow;
+
+/**
+ * Controller for the ConfigurationWindow.
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public class ConfigureTask {
+ private final Config mAppConfig;
+ private final ConfigurationWindow mWin;
+
+ public ConfigureTask(final Config appconfig, final ConfigurationWindow win) {
+ mAppConfig = appconfig;
+ mWin = win;
+
+ mWin.setSaveAction(new Action() {
+ public void onAction() {
+ populateConfig();
+ mAppConfig.save();
+ mWin.setVisible(false);
+ });
+
+ mWin.setCancelAction(new Action() {
+ public void onAction() {
+ mWin.setVisible(false);
+ });
+
+ mWin.setAuthorizeAction(new Action() {
+ public void onAction() {
+ populateConfig();
+ getAuthorization();
+ });
+
+ populateWindow();
+ }
+
+ /**
+ * Set the fields in the configuration window.
+ */
+ private void populateWindow() {
+ mWin.setAWSKey(Config.get("AWSAccessKeyId"));
+ mWin.setAWSSecret(Config.get("AWSSecretKey"));
+ mWin.setS3Bucket(Config.get("S3Bucket"));
+ mWin.setMetadataServer(Config.get("MetadataURL"));
+ mWin.setHasAuthKey(Config.get("MetadataAuthKey") != null);
+ }
+
+ /**
+ * Populate the config from the window.
+ */
+ private void populateConfig() {
+ Config.put("AWSAccessKeyId", mWin.getAWSKey());
+ Config.put("AWSSecretKey", mWin.getAWSSecret());
+ Config.put("S3Bucket", mWin.getS3Bucket());
+ Config.put("MetadataURL", mWin.getMetadataServer());
+ }
+
+ /**
+ * Display the window.
+ */
+ public void run() {
+ mWin.setVisible(true);
+ }
+
+ /**
+ * Get an authorization token from the metadata service.
+ */
+ private void getAuthorization() {
+
+ }
+}
diff --git a/src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java b/src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java
new file mode 100644
index 0000000..9dcc2dc
--- /dev/null
+++ b/src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2012 Jesse Morgan
+ */
+
+package net.jesterpm.sermonuploader.ui;
+
+/**
+ * UI for the configuration window.
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public class ConfigurationWindow extends JFrame {
+ public ConfigurationWindow() {
+ // TODO: Build window.
+ }
+
+ public void setAWSKey(final String value) {
+
+ }
+
+ public String getAWSKey() {
+
+ }
+
+ public void setAWSSecret(final String value) {
+
+ }
+
+ public String getAWSSecret() {
+
+ }
+
+ public void setS3Bucket(final String value) {
+
+ }
+
+ public String getS3Bucket() {
+
+ }
+
+ public void setMetadataServer(final String value) {
+
+ }
+
+ public String getMetadataServer() {
+
+ }
+
+ public void setHasAuthKey(final boolean value) {
+
+ }
+}