Changeset 5c99491


Ignore:
Timestamp:
Aug 23, 2010, 4:21:10 PM (7 years ago)
Author:
Michael Seifert <mseifert@…>
Branches:
master
Children:
d7023f0
Parents:
c60bc67
Message:

core:
Added commons-cli as dependecy for easier processing of commandline arguments
ReplayStorage? supports setting a storage path;
First steps of creating a command line interface

Location:
core
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • core/pom.xml

    rc60bc67 r5c99491  
    5555    </plugins>
    5656  </build>
     57 
     58  <dependencies>
     59        <dependency>
     60                <groupId>commons-cli</groupId>
     61                <artifactId>commons-cli</artifactId>
     62                <version>1.2</version>
     63        </dependency>
     64  </dependencies>
    5765
    5866  <reporting>
  • core/src/main/java/de/erichseifert/warp/core/DataPresenter.java

    rc60bc67 r5c99491  
    153153         * This constructor uses a <code>MemoryStorage</code> as storage
    154154         * and a <code>CLI</code> as user interface by default.
    155          */
    156         protected DataPresenter() {
    157                 this(new MemoryStorage(), new CLI());
     155         * @param args Command line arguments.
     156         */
     157        protected DataPresenter(String... args) {
     158                this(new MemoryStorage(), args);
    158159        }
    159160
    160161        /**
    161162         * Creates a <code>DataPresenter</code> object with the specified
    162          * storage and user interface.
     163         * storage and a command line user interface.
    163164         * @param storage Replay storage.
    164          * @param ui User interface.
    165          */
    166         protected DataPresenter(ReplayStorage storage, WARPUI ui) {
     165         * @param args Command line arguments.
     166         */
     167        protected DataPresenter(ReplayStorage storage, String... args) {
    167168                this.storage = storage;
    168                 this.ui = ui;
     169                this.ui = new CLI(this, args);
    169170                invalidFiles = new LinkedHashSet<File>();
    170171        }
     
    192193         * @param dir
    193194         */
    194         public void parseDir(File dir, ProgressListener listener) {
     195        public void parseDir(File dir, ProgressListener... listeners) {
    195196                if (dir == null) {
    196197                        return;
     
    208209
    209210                // Start parsing routine
    210                 ParserThread parserThread = new ParserThread(dir, storage, invalidFiles, listener);
     211                ParserThread parserThread = new ParserThread(dir, storage, invalidFiles, listeners);
    211212                parserThread.start();
    212213        }
     
    292293                return ui;
    293294        }
     295
     296        public void setStoragePath(String path) throws IOException {
     297                storage.setStoragePath(path);
     298        }
     299
     300        public String getStoragePath() {
     301                return storage.getStoragePath();
     302        }
    294303}
  • core/src/main/java/de/erichseifert/warp/core/WARP.java

    rc60bc67 r5c99491  
    3434        /**
    3535         * Creates a <code>WARP</code> object.
     36         * @param args Command line arguments.
    3637         */
    37         public WARP() {
     38        public WARP(String... args) {
     39                super(args);
    3840                WARPUI ui = getUi();
    3941                ui.setReplays(getStorage().getDescriptors());
     
    4547
    4648        /**
    47          * @param args No command line arguments are processed.
     49         * @param args Command line arguments.
    4850         */
    4951        public static void main(String[] args) {
    50                 new WARP();
     52                new WARP(args);
    5153        }
    5254}
  • core/src/main/java/de/erichseifert/warp/core/io/BufferedStorage.java

    rc60bc67 r5c99491  
    2323
    2424import java.io.File;
     25import java.io.IOException;
    2526import java.util.LinkedHashMap;
    2627import java.util.Map;
     
    164165                storage.clear();
    165166        }
     167
     168        @Override
     169        public String getStoragePath() {
     170                return storage.getStoragePath();
     171        }
     172
     173        @Override
     174        public void setStoragePath(String path) throws IOException {
     175                storage.setStoragePath(path);
     176        }
    166177}
  • core/src/main/java/de/erichseifert/warp/core/io/MemoryStorage.java

    rc60bc67 r5c99491  
    2323
    2424import java.io.File;
     25import java.io.IOException;
    2526import java.util.HashMap;
    2627import java.util.HashSet;
     
    120121                cache.clear();
    121122        }
     123
     124        @Override
     125        public String getStoragePath() {
     126                return null;
     127        }
     128
     129        @Override
     130        public void setStoragePath(String path) throws IOException {
     131        }
    122132}
  • core/src/main/java/de/erichseifert/warp/core/io/ReplayStorage.java

    rc60bc67 r5c99491  
    2323
    2424import java.io.File;
     25import java.io.IOException;
    2526import java.util.Map;
    2627import java.util.Set;
     
    121122         */
    122123        void clear();
     124
     125        String getStoragePath();
     126        void setStoragePath(String path) throws IOException;
    123127}
  • core/src/main/java/de/erichseifert/warp/core/io/SerializingStorage.java

    rc60bc67 r5c99491  
    388388                }
    389389        }
     390
     391        @Override
     392        public String getStoragePath() {
     393                return storageDir.getAbsolutePath();
     394        }
     395
     396        @Override
     397        public void setStoragePath(String path) throws IOException {
     398                File dst = new File(path);
     399                boolean moveSuccessful = storageDir.renameTo(dst);
     400                if (!moveSuccessful) {
     401                        throw new IOException(String.format("Could not move %s to %s.", storageDir.getAbsolutePath(), dst.getAbsolutePath()));
     402                }
     403        }
    390404}
  • core/src/main/java/de/erichseifert/warp/core/ui/CLI.java

    rc60bc67 r5c99491  
    2222package de.erichseifert.warp.core.ui;
    2323
     24import java.io.File;
     25import java.io.IOException;
    2426import java.util.Set;
    2527
     28import org.apache.commons.cli.CommandLine;
     29import org.apache.commons.cli.CommandLineParser;
     30import org.apache.commons.cli.HelpFormatter;
     31import org.apache.commons.cli.Option;
     32import org.apache.commons.cli.OptionBuilder;
     33import org.apache.commons.cli.Options;
     34import org.apache.commons.cli.ParseException;
     35import org.apache.commons.cli.PosixParser;
     36
     37import de.erichseifert.warp.core.DataPresenter;
    2638import de.erichseifert.warp.core.replay.ReplayDescriptor;
    2739
    2840public class CLI implements WARPUI {
    2941
    30         public CLI() {
    31                 System.err.println(getClass().getName()+" is not implemented.");
     42        public CLI(DataPresenter presenter, String[] args) {
     43                // Create options
     44                Options opts = new Options();
     45                @SuppressWarnings("static-access")
     46                Option parseOpt = OptionBuilder.withArgName("src dst").hasArgs(2)
     47                        .withValueSeparator(' ')
     48                        .withDescription("Parses the files in the specified source folder storing it in the specified destination folder. If the destination folder is \"\", the parsed replays will be stored in memory.")
     49                        .withLongOpt("parse").create("p");
     50                opts.addOption(parseOpt);
     51                //opts.addOption("p", "parse", true, "Parses the files in the specified folder");
     52                opts.addOption("v", "verbose", false, "Verbose mode (not implemented)");
     53                //opts.addOption(null, "path", true, "Save path of parsed replays. Parsed replays are stored in the memory, if no path is set. (not implemented)");
     54
     55                // Create help
     56                HelpFormatter help = new HelpFormatter();
     57                help.printHelp("WARP", opts);
     58
     59                // Process arguments
     60                CommandLineParser parser = new PosixParser();
     61                CommandLine cl = null;
     62                try {
     63                        cl = parser.parse(opts, args, true);
     64                } catch (ParseException e) {
     65                        e.printStackTrace();
     66                        // TODO Auto-generated catch block
     67                        return;
     68                }
     69
     70                if (cl.hasOption("p")) {
     71                        String[] paths = cl.getOptionValues("p");
     72                        File src = new File(paths[0]);
     73                        if (!paths[1].isEmpty()) {
     74                                try {
     75                                        presenter.setStoragePath(paths[1]);
     76                                } catch (IOException e) {
     77                                        // TODO Auto-generated catch block
     78                                        e.printStackTrace();
     79                                }
     80                        }
     81                        presenter.parseDir(src);
     82                }
     83
    3284        }
    3385
Note: See TracChangeset for help on using the changeset viewer.