Changeset 01152f8


Ignore:
Timestamp:
Jul 26, 2010, 3:07:31 PM (8 years ago)
Author:
Michael Seifert <mseifert@…>
Branches:
master
Children:
c90b0d6
Parents:
60de382
Message:

Changed functions of ReplayStorage? to support loading/saving/deleting of single replays instead of multiple replays;

Every UI module has its own executable controller (the core module serves as a command line interface);

Renamed de.erichseifert.warp.java.swing to de.erichseifert.warp.gui.swing

Files:
1 added
13 edited
13 moved

Legend:

Unmodified
Added
Removed
  • core/src/main/java/de/erichseifert/warp/core/ActionFilterFactory.java

    r60de382 r01152f8  
    7070                        }
    7171                        try {
    72                                 Map<String, List<String>> mappedFilters = FileUtil.parseFile(stream);
     72                                Map<String, List<String>> mappedFilters = FileUtil.parseProperties(stream);
    7373                                for (Map.Entry<String, List<String>> entry : mappedFilters.entrySet()) {
    7474                                        String actionClassName = entry.getKey();
  • core/src/main/java/de/erichseifert/warp/core/WARP.java

    r60de382 r01152f8  
    2323
    2424import java.io.File;
    25 import java.lang.reflect.Constructor;
    2625import java.util.Collection;
    2726import java.util.Map;
    2827import java.util.Set;
    2928
    30 import de.erichseifert.warp.core.gui.WARPGUI;
    3129import de.erichseifert.warp.core.io.BufferedStorage;
    3230import de.erichseifert.warp.core.io.ReplayStorage;
     
    3634import de.erichseifert.warp.core.io.search.indices.Index.Range;
    3735import de.erichseifert.warp.core.replays.ReplayParserFactory;
     36import de.erichseifert.warp.core.ui.CLI;
     37import de.erichseifert.warp.core.ui.WARPUI;
    3838import de.erichseifert.warp.core.util.FileUtil;
    3939
     
    4646
    4747        private final ReplayStorage storage;
    48         private final WARPGUI gui;
     48        private WARPUI ui;
    4949
    5050        /**
     
    100100         * Creates a <code>WARP</code> object.
    101101         */
    102         public WARP(Class<? extends WARPGUI> guiClass) throws InstantiationException, IllegalAccessException, SecurityException, NoSuchMethodException {
    103                 if (guiClass == null) {
    104                         System.exit(-1);
    105                 }
    106                 ReplayStorage serStorage = new SerializingStorage();
    107                 storage = new BufferedStorage(serStorage);
    108 
    109                 Constructor<? extends WARPGUI> guiConstructor = guiClass.getConstructor(WARP.class);
    110                 gui = guiClass.newInstance();
    111 
    112                 gui.setReplays(storage.getDescriptors());
    113 
     102        public WARP() {
     103                this(new BufferedStorage(new SerializingStorage()), new CLI());
     104        }
     105
     106        public WARP(WARPUI ui) {
     107                this(new BufferedStorage(new SerializingStorage()), ui);
     108        }
     109
     110        public WARP(ReplayStorage storage, WARPUI ui) {
     111                this.storage = storage;
     112                this.ui = ui;
     113
     114                ui.setReplays(storage.getDescriptors());
    114115                boolean parsingComplete = Settings.getInstance().isParsingComplete();
    115116                if (!parsingComplete) {
    116                         gui.resumeParsing();
     117                        ui.resumeParsing();
    117118                }
    118119        }
     
    122123         */
    123124        public static void main(String[] args) {
    124                 Class<? extends WARPGUI> guiClass = null;
    125                 if (args.length > 1) {
    126                         String guiClassName = args[0];
    127                         try {
    128                                 guiClass = (Class<? extends WARPGUI>) Class.forName(guiClassName);
    129                         } catch (ClassNotFoundException e) {
    130                                 // TODO Auto-generated catch block
    131                                 e.printStackTrace();
    132                         }
    133                 }
    134                 try {
    135                         new WARP(guiClass);
    136                 } catch (SecurityException e) {
    137                         // TODO Auto-generated catch block
    138                         e.printStackTrace();
    139                 } catch (InstantiationException e) {
    140                         // TODO Auto-generated catch block
    141                         e.printStackTrace();
    142                 } catch (IllegalAccessException e) {
    143                         // TODO Auto-generated catch block
    144                         e.printStackTrace();
    145                 } catch (NoSuchMethodException e) {
    146                         // TODO Auto-generated catch block
    147                         e.printStackTrace();
    148                 }
     125                new WARP();
    149126        }
    150127        /**
     
    160137
    161138                String oldDir = Settings.getInstance().getReplayDir();
    162                 if (!oldDir.equals(dir)) {
     139                if (oldDir != null && !oldDir.equals(dir)) {
    163140                        // Clear storage
    164141                        storage.clear();
     
    225202                storage.removeReplayDataChangeListener(listener);
    226203        }
     204
     205        public void setUi(WARPUI ui) {
     206                // TODO Dispose old UI
     207                this.ui = ui;
     208        }
    227209}
  • core/src/main/java/de/erichseifert/warp/core/io/AbstractReplayStorage.java

    r60de382 r01152f8  
    3838
    3939        @Override
    40         public void save(Replay... replays) {
    41                 for (Replay replay : replays) {
    42                         ReplayDescriptor descriptor = replay.getDescriptor();
    43                         fireReplayDataChanged(null, descriptor);
    44                 }
     40        public void save(Replay replay) {
     41                ReplayDescriptor descriptor = replay.getDescriptor();
     42                fireReplayDataChanged(null, descriptor);
    4543        }
    4644
    4745        @Override
    48         public void delete(long... ids) {
    49                 for (long id : ids) {
    50                         ReplayDescriptor descriptorOld = load(id).get(0);
    51                         fireReplayDataChanged(descriptorOld, null);
    52                 }
     46        public void delete(long id) {
     47                ReplayDescriptor descriptorOld = load(id);
     48                fireReplayDataChanged(descriptorOld, null);
    5349        }
    5450
  • core/src/main/java/de/erichseifert/warp/core/io/BufferedStorage.java

    r60de382 r01152f8  
    2424import java.io.File;
    2525import java.util.LinkedHashMap;
    26 import java.util.List;
    2726import java.util.Map;
    2827import java.util.Set;
     
    9695
    9796        @Override
    98         public List<ReplayDescriptor> load(long... ids) {
    99                 return storage.load(ids);
     97        public ReplayDescriptor load(long id) {
     98                return storage.load(id);
    10099        }
    101100
    102101        @Override
    103         public void save(Replay... replays) {
     102        public void save(Replay replays) {
    104103                storage.save(replays);
    105104        }
     
    114113
    115114        @Override
    116         public void delete(long... ids) {
    117                 storage.delete(ids);
     115        public void delete(long id) {
     116                storage.delete(id);
    118117        }
    119118
  • core/src/main/java/de/erichseifert/warp/core/io/MemoryStorage.java

    r60de382 r01152f8  
    2525import java.util.HashMap;
    2626import java.util.HashSet;
    27 import java.util.LinkedList;
    28 import java.util.List;
    2927import java.util.Map;
    3028import java.util.Set;
     
    6058
    6159        @Override
    62         public void save(Replay... replays) {
    63                 for (Replay replay : replays) {
    64                         cache.put(replay.getDescriptor().getId(), replay);
    65                 }
    66                 super.save(replays);
     60        public void save(Replay replay) {
     61                cache.put(replay.getDescriptor().getId(), replay);
     62                super.save(replay);
    6763        }
    6864
    6965        @Override
    70         public void delete(long... ids) {
    71                 for (long id : ids) {
    72                         cache.remove(id);
    73                 }
    74                 super.delete(ids);
     66        public void delete(long id) {
     67                cache.remove(id);
     68                super.delete(id);
    7569        }
    7670
     
    117111
    118112        @Override
    119         public List<ReplayDescriptor> load(long... ids) {
    120                 List<ReplayDescriptor> descriptors = new LinkedList<ReplayDescriptor>();
    121                 for (long id : ids) {
    122                         Replay replay = cache.get(id);
    123                         descriptors.add(replay.getDescriptor());
    124                 }
    125                 return descriptors;
     113        public ReplayDescriptor load(long id) {
     114                Replay replay = cache.get(id);
     115                return replay.getDescriptor();
    126116        }
    127117
  • core/src/main/java/de/erichseifert/warp/core/io/ReplayStorage.java

    r60de382 r01152f8  
    2323
    2424import java.io.File;
    25 import java.util.List;
    2625import java.util.Map;
    2726import java.util.Set;
     
    4039
    4140        /**
    42          * Returns the parsed replays which belong to the specified file paths.
    43          * @param ids IDs of the unparsed replay files.
    44          * @return Descriptors of the parsed replays in the same order as the specified paths.
     41         * Returns the parsed replay which belongs to the specified id.
     42         * @param id ID of the unparsed replay files.
     43         * @return Descriptor of the parsed replay.
    4544         */
    46         List<ReplayDescriptor> load(long... ids);
     45        ReplayDescriptor load(long id);
    4746        /**
    48          * Stores the specified replays.
    49          * @param replays Replays to be stored.
     47         * Stores the specified replay.
     48         * @param replay Replay to be stored.
    5049         */
    51         void save(Replay... replays);
     50        void save(Replay replay);
    5251        /**
    53          * Removes the specified replays.
    54          * @param ids Replay ids.
     52         * Removes the specified replay.
     53         * @param id Replay id.
    5554         */
    56         void delete(long... ids);
     55        void delete(long id);
    5756
    5857        Replay getReplay(ReplayDescriptor descriptor);
  • core/src/main/java/de/erichseifert/warp/core/io/SerializingStorage.java

    r60de382 r01152f8  
    3131import java.util.HashMap;
    3232import java.util.HashSet;
    33 import java.util.LinkedList;
    34 import java.util.List;
    3533import java.util.Map;
    3634import java.util.Set;
     
    196194        // FIXME: Throw exception
    197195        @Override
    198         public void save(Replay... replays) {
     196        public void save(Replay replay) {
     197                if (replay == null) {
     198                        return;
     199                }
    199200                if (!storageDir.exists()) {
    200201                        storageDir.mkdir();
     
    204205                initIndexer();
    205206
    206                 // Save replays
    207                 for (Replay replay : replays) {
    208                         if (replay == null) {
    209                                 continue;
    210                         }
    211                         String replayFilePath = getSerializationPath(storageDir, replay.getDescriptor());
    212                         serialize(replay, replayFilePath);
    213                         descriptorsById.put(replay.getDescriptor().getId(), replay.getDescriptor());
    214                         lastSavedReplay = replay;
    215                 }
    216 
    217                 super.save(replays);
     207                // Save replay
     208                String replayFilePath = getSerializationPath(storageDir, replay.getDescriptor());
     209                serialize(replay, replayFilePath);
     210                descriptorsById.put(replay.getDescriptor().getId(), replay.getDescriptor());
     211                lastSavedReplay = replay;
     212
     213                super.save(replay);
    218214
    219215                // Serialize replay descriptors
     
    245241
    246242        @Override
    247         public void delete(long... ids) {
     243        public void delete(long id) {
    248244                initDescriptorCache();
    249245                initStatistics();
    250246                initIndexer();
    251247
    252                 super.delete(ids);
    253 
    254                 for (long id : ids) {
    255                         ReplayDescriptor descriptor = load(id).get(0);
    256                         String serPath = getSerializationPath(storageDir, descriptor);
    257                         File serializedFile = new File(serPath);
    258                         serializedFile.delete();
    259 
    260                         descriptorsById.remove(descriptor.getId());
    261                 }
     248                super.delete(id);
     249
     250                ReplayDescriptor descriptor = load(id);
     251                String serPath = getSerializationPath(storageDir, descriptor);
     252                File serializedFile = new File(serPath);
     253                serializedFile.delete();
     254
     255                descriptorsById.remove(descriptor.getId());
    262256
    263257                // Serialize replay descriptors
     
    344338
    345339        @Override
    346         public List<ReplayDescriptor> load(long... ids) {
    347                 List<ReplayDescriptor> descriptors = new LinkedList<ReplayDescriptor>();
    348                 for (long id : ids) {
    349                         ReplayDescriptor descriptor = descriptorsById.get(id);
    350                         descriptors.add(descriptor);
    351                 }
    352                 return descriptors;
     340        public ReplayDescriptor load(long id) {
     341                ReplayDescriptor descriptor = descriptorsById.get(id);
     342                return descriptor;
    353343        }
    354344
  • core/src/main/java/de/erichseifert/warp/core/io/search/DefaultReplayIndexer.java

    r60de382 r01152f8  
    191191                                        // The parent element of an index hierarchy must be a replay
    192192                                        long replayID = resultNode.getRootNode().getId();
    193                                         ReplayDescriptor descriptor = storage.load(replayID).get(0);
     193                                        ReplayDescriptor descriptor = storage.load(replayID);
    194194                                        results.add(descriptor);
    195195                                }
     
    210210                for (Node pathNode : node.getPath()) {
    211211                        if ("#replay".equals(pathNode.getPropertyGetterName())) {
    212                                 ReplayDescriptor descriptor = storage.load(pathNode.getId()).get(0);
     212                                ReplayDescriptor descriptor = storage.load(pathNode.getId());
    213213                                parentObj = storage.getReplay(descriptor);
    214214                                continue;
  • core/src/main/java/de/erichseifert/warp/core/replays/ReplayParserFactory.java

    r60de382 r01152f8  
    6161                        }
    6262                        try {
    63                                 Map<String, List<String>> mappedParsers = FileUtil.parseFile(stream);
     63                                Map<String, List<String>> mappedParsers = FileUtil.parseProperties(stream);
    6464                                for (Map.Entry<String, List<String>> entry : mappedParsers.entrySet()) {
    6565                                        String fileExtension = entry.getKey().toLowerCase();
  • core/src/main/java/de/erichseifert/warp/core/ui/WARPUI.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.core.gui;
     22package de.erichseifert.warp.core.ui;
    2323
    2424import java.util.Set;
     
    2626import de.erichseifert.warp.core.ReplayDescriptor;
    2727
    28 public interface WARPGUI {
     28public interface WARPUI {
    2929        void resumeParsing();
    3030
  • core/src/main/java/de/erichseifert/warp/core/util/FileUtil.java

    r60de382 r01152f8  
    3232import java.util.HashMap;
    3333import java.util.HashSet;
     34import java.util.LinkedList;
    3435import java.util.List;
    3536import java.util.Map;
     
    4546        }
    4647
     48        public static List<String> parseLines(InputStream stream) throws IOException {
     49                InputStreamReader ifs = new InputStreamReader(stream);
     50                BufferedReader br = new BufferedReader(ifs);
     51                List<String> lines = new LinkedList<String>();
     52                String line;
     53                while ((line = br.readLine()) != null) {
     54                        if (!line.isEmpty()) {
     55                                lines.add(line);
     56                        }
     57                }
     58                ifs.close();
     59                return lines;
     60        }
     61
    4762        /**
    4863         * Parses properties that contain multiple values per key from the
     
    5267         * @throws IOException
    5368         */
    54         public static final Map<String, List<String>> parseFile(InputStream stream) throws IOException {
     69        public static Map<String, List<String>> parseProperties(InputStream stream) throws IOException {
    5570                InputStreamReader ifs = new InputStreamReader(stream);
    5671                BufferedReader br = new BufferedReader(ifs);
  • core/src/test/java/de/erichseifert/warp/core/util/FileUtilTest.java

    r60de382 r01152f8  
    8181                Map<String, List<String>> properties = null;
    8282                try {
    83                         properties = FileUtil.parseFile(in);
     83                        properties = FileUtil.parseProperties(in);
    8484                } catch (IOException e) {
    8585                        // TODO Auto-generated catch block
  • gui.swing/pom.xml

    r60de382 r01152f8  
    99  <artifactId>gui.swing</artifactId>
    1010  <version>0.6</version>
     11
     12  <build>
     13    <plugins>
     14      <plugin>
     15        <artifactId>maven-jar-plugin</artifactId>
     16        <configuration>
     17          <archive>
     18            <manifest>
     19              <addClasspath>true</addClasspath>
     20              <mainClass>de.erichseifert.warp.gui.swing.WARP</mainClass>
     21            </manifest>
     22          </archive>
     23        </configuration>
     24      </plugin>
     25    </plugins>
     26  </build>
    1127
    1228  <dependencies>
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/APMPlot.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424import java.awt.BorderLayout;
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/AboutWindow.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424import java.awt.BorderLayout;
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/DefaultChatRenderer.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424import java.awt.BorderLayout;
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/DefaultPlayerRenderer.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424import java.awt.Component;
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/DefaultReplayRenderer.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424import java.awt.BorderLayout;
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/ExpandableSplitPane.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424import javax.swing.JSplitPane;
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/ItemRenderer.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424import java.awt.Component;
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/ReplayCellEditor.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424import java.awt.Component;
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/ReplayParserGUI.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424import java.awt.BorderLayout;
     
    9090import de.erichseifert.warp.core.io.Settings;
    9191import de.erichseifert.warp.core.io.search.indices.Index.Range;
     92import de.erichseifert.warp.core.ui.WARPUI;
    9293import de.erichseifert.warp.core.util.FileUtil;
    9394
     
    9899 * to display important information. Both components are organized in a <code>JSplitPane</code>.
    99100 */
    100 public class ReplayParserGUI extends JFrame implements ReplayDataChangeListener, ProgressListener {
     101public class ReplayParserGUI extends JFrame implements ReplayDataChangeListener, ProgressListener, WARPUI {
    101102        private static enum State {
    102103                PARSING(true, false, "Parsing replays..."),
     
    223224                super("WARP");
    224225
    225                 parsedDir = new File(Settings.getInstance().getReplayDir());
     226                String parsedDirPath = Settings.getInstance().getReplayDir();
     227                if (parsedDirPath != null) {
     228                        parsedDir = new File(parsedDirPath);
     229                }
     230                else {
     231                        parsedDir = null;
     232                }
    226233
    227234                this.warp = warp;
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/VisibilityChangeEvent.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424public class VisibilityChangeEvent<T> {
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/VisibilityChangeListener.java

    r60de382 r01152f8  
    2020 */
    2121
    22 package de.erichseifert.warp.java.swing;
     22package de.erichseifert.warp.gui.swing;
    2323
    2424public interface VisibilityChangeListener<T> {
  • sc2replay/src/main/java/de/erichseifert/warp/sc2replay/renderers/SC2ReplayRenderer.java

    r60de382 r01152f8  
    3232
    3333import de.erichseifert.warp.core.Player;
    34 import de.erichseifert.warp.java.swing.DefaultReplayRenderer;
    35 import de.erichseifert.warp.java.swing.VisibilityChangeEvent;
    36 import de.erichseifert.warp.java.swing.VisibilityChangeListener;
     34import de.erichseifert.warp.gui.swing.DefaultReplayRenderer;
     35import de.erichseifert.warp.gui.swing.VisibilityChangeEvent;
     36import de.erichseifert.warp.gui.swing.VisibilityChangeListener;
    3737import de.erichseifert.warp.sc2replay.SC2Replay;
    3838
Note: See TracChangeset for help on using the changeset viewer.