From cdd1cce784a1a543a7f3c9bb4ef5cd7dc2048fc6 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Sat, 13 Oct 2012 09:02:17 -0700 Subject: Initial commit. --- design/classdiagram.graphml | 387 +++++++++++++++++++++ .../jesterpm/sermonuploader/SermonUploader.java | 57 +++ src/net/jesterpm/sermonuploader/config/Config.java | 39 +++ .../sermonuploader/control/ConfigureTask.java | 80 +++++ .../sermonuploader/ui/ConfigurationWindow.java | 52 +++ 5 files changed, 615 insertions(+) create mode 100644 design/classdiagram.graphml create mode 100644 src/net/jesterpm/sermonuploader/SermonUploader.java create mode 100644 src/net/jesterpm/sermonuploader/config/Config.java create mode 100644 src/net/jesterpm/sermonuploader/control/ConfigureTask.java create mode 100644 src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java diff --git a/design/classdiagram.graphml b/design/classdiagram.graphml new file mode 100644 index 0000000..ed605e0 --- /dev/null +++ b/design/classdiagram.graphml @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + + + + + + + + + + sermonuploader + + + + + + + + + + + + + + + + + + ui + + + + + + + + + + + + + + + + + + s3 + + + + + + + + + + + + + + + + + + control + + + + + + + + + + + + + + + + + + ProgressWindow + + + + + + + + + + + + + + + + + + ConfigurationWindow + + + + + + + + + + + + + + + + + + config + + + + + + + + + + + + + + + + + + ConfigureTask + + + + + + + + + + + + + + + + + + UploadTask + + + + + + + + + + + + + + + + + + UploadMetadataTask + + + + + + + + + + + + + + + + + + Config + + + + + + + + + + + + + + + + + + SermonUploader + + + + + + + + + + + + + + + + + + Action + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + */ +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 "); + 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 + */ +public class Config { + private final String mFilename; + private final Map 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 + */ +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 + */ +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) { + + } +} -- cgit v1.2.3