Changeset 88ead20


Ignore:
Timestamp:
Aug 1, 2010, 9:22:26 PM (7 years ago)
Author:
Michael Seifert <mseifert@…>
Branches:
master
Children:
b1df941
Parents:
ca8fb82
Message:

Updated APMPlot to support GRAL v0.8

Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • core/pom.xml

    rca8fb82 r88ead20  
    33    <artifactId>WARP</artifactId>
    44    <groupId>de.erichseifert.warp</groupId>
    5     <version>0.6</version>
     5    <version>0.7-SNAPSHOT</version>
    66  </parent>
    77  <modelVersion>4.0.0</modelVersion>
    88  <groupId>de.erichseifert.warp</groupId>
    99  <artifactId>core</artifactId>
    10   <version>0.6</version>
     10  <version>0.7-SNAPSHOT</version>
    1111  <build>
    1212    <plugins>
  • core/src/main/java/de/erichseifert/warp/core/io/SerializingStorage.java

    rca8fb82 r88ead20  
    4949public class SerializingStorage extends AbstractReplayStorage {
    5050        private static final String STORAGE_PATH_DEFAULT = "data";
     51        private static final String TMP_FILE_PREFIX = "warp";
    5152        private static final String DESCRIPTOR_FILE_NAME = ".descriptors";
    5253        private static final String STATISTICS_FILE_NAME = ".statistics";
     
    206207
    207208                // 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);
    214 
     209                try {
     210                        File replaySerTmp = File.createTempFile(TMP_FILE_PREFIX+".replay", null);
     211                        serialize(replay, replaySerTmp.getAbsolutePath());
     212                        descriptorsById.put(replay.getDescriptor().getId(), replay.getDescriptor());
     213                        lastSavedReplay = replay;
     214                        super.save(replay);
     215                        String replayFilePath = getSerializationPath(storageDir, replay.getDescriptor());
     216                        updateMetadata();
     217                        boolean renameSuccessful = replaySerTmp.renameTo(new File(replayFilePath));
     218                        // TODO: Check if renaming was successful
     219                } catch (IOException e) {
     220                        // TODO Auto-generated catch block
     221                        e.printStackTrace();
     222                }
     223        }
     224
     225        private void updateMetadata() throws IOException {
    215226                // Serialize replay descriptors
    216                 serialize(descriptorsById, descriptorFile.getAbsolutePath());
    217 
     227                File descriptorTmp = File.createTempFile(TMP_FILE_PREFIX+DESCRIPTOR_FILE_NAME, null);
     228                serialize(descriptorsById, descriptorTmp.getAbsolutePath());
     229
     230                File statisticsTmp = File.createTempFile(TMP_FILE_PREFIX+STATISTICS_FILE_NAME, null);
    218231                // Serialize statistics
    219                 serialize(statistics, statisticsFile.getAbsolutePath());
     232                serialize(statistics, statisticsTmp.getAbsolutePath());
    220233
    221234                // Serialize indexer
    222                 serialize(indexer, indexerFile.getAbsolutePath());
     235                File indexerTmp = File.createTempFile(TMP_FILE_PREFIX+INDEXER_FILE_NAME, null);
     236                serialize(indexer, indexerTmp.getAbsolutePath());
     237
     238                boolean renameSuccessful = descriptorTmp.renameTo(descriptorFile);
     239                renameSuccessful = statisticsTmp.renameTo(statisticsFile);
     240                renameSuccessful = indexerTmp.renameTo(indexerFile);
     241                // TODO: Check if renaming was successful
    223242        }
    224243
     
    251270                String serPath = getSerializationPath(storageDir, descriptor);
    252271                File serializedFile = new File(serPath);
    253                 serializedFile.delete();
    254 
    255272                descriptorsById.remove(descriptor.getId());
    256 
    257                 // Serialize replay descriptors
    258                 serialize(descriptorsById, descriptorFile.getAbsolutePath());
    259 
    260                 // Serialize statistics
    261                 serialize(statistics, statisticsFile.getAbsolutePath());
    262 
    263                 // Serialize indexer
    264                 serialize(indexer, indexerFile.getAbsolutePath());
     273                try {
     274                        updateMetadata();
     275                        serializedFile.delete();
     276                } catch (IOException e) {
     277                        // TODO Auto-generated catch block
     278                        e.printStackTrace();
     279                }
    265280        }
    266281
  • gui.swing/pom.xml

    rca8fb82 r88ead20  
    33    <artifactId>WARP</artifactId>
    44    <groupId>de.erichseifert.warp</groupId>
    5     <version>0.6</version>
     5    <version>0.7-SNAPSHOT</version>
    66  </parent>
    77  <modelVersion>4.0.0</modelVersion>
    88  <groupId>de.erichseifert.warp</groupId>
    99  <artifactId>gui.swing</artifactId>
    10   <version>0.6</version>
     10  <version>0.7-SNAPSHOT</version>
    1111
    1212  <build>
     
    3030      <groupId>de.erichseifert.warp</groupId>
    3131      <artifactId>core</artifactId>
    32       <version>0.6</version>
     32      <version>0.7-SNAPSHOT</version>
    3333    </dependency>
    3434    <dependency>
    3535      <groupId>de.erichseifert.gral</groupId>
    3636      <artifactId>GRAL</artifactId>
    37       <version>0.7</version>
     37      <version>0.8</version>
    3838    </dependency>
    3939  </dependencies>
  • gui.swing/src/main/java/de/erichseifert/warp/gui/swing/APMPlot.java

    rca8fb82 r88ead20  
    4040import de.erichseifert.gral.data.DataSource;
    4141import de.erichseifert.gral.data.DataTable;
    42 import de.erichseifert.gral.data.Row;
    4342import de.erichseifert.gral.data.filters.Convolution;
    4443import de.erichseifert.gral.data.filters.Filter;
     
    4746import de.erichseifert.gral.data.filters.Filter.Mode;
    4847import de.erichseifert.gral.data.statistics.Histogram1D;
    49 import de.erichseifert.gral.data.statistics.Statistics.Orientation;
     48import de.erichseifert.gral.data.statistics.Orientation;
    5049import de.erichseifert.gral.plots.XYPlot;
    5150import de.erichseifert.gral.plots.areas.AreaRenderer;
     
    8079
    8180                        // Create a data set and fill it with the actions' time stamps
    82                         DataTable timeStamps = new DataTable(Double.class, Double.class);
     81                        DataTable timeStamps = new DataTable(Double.class);
    8382                        for (GameAction action : actions) {
    8483                                int actionValue = actionFilter.getValue(action);
    8584                                double timeInSeconds = action.getTimestamp()/25.0;
    8685                                for (int i = 0; i < actionValue; i++) {
    87                                         timeStamps.add(timeInSeconds, timeInSeconds);
     86                                        timeStamps.add(timeInSeconds);
    8887                                }
    8988                        }
     
    9695                        double timeMax = actions.get(actions.size()-1).getTimestamp()/25.0;
    9796                        int cellCount = (int) Math.ceil(timeMax);
    98                         Number[][] cells = new Number[2][cellCount];
     97                        Number[][] cells = new Number[1][cellCount];
    9998                        // The intervals are one second wide
    10099                        for (int i = 0; i < cellCount; i++) {
    101100                                cells[0][i] = (double) i;
    102                                 cells[1][i] = (double) i;
    103101                        }
    104102                        // The following histogram calculates the number of occurrences of a value in each sector
     
    107105                        // Insert the number of occurrences (y-axis) per interval (x-axis) into a new data set
    108106                        DataTable apmData = new DataTable(Double.class, Long.class);
    109                         for (Row row : actionsPerInterval) {
    110                                 Number x = actionsPerInterval.getCellLimits(0, row.getIndex())[0];
    111                                 Number y = row.get(0);
     107                        for (int rowIndex = 0; rowIndex < actionsPerInterval.getRowCount(); rowIndex++) {
     108                                Number x = actionsPerInterval.getCellLimits(0, rowIndex)[0];
     109                                Number y = actionsPerInterval.get(0, rowIndex);
    112110                                apmData.add(x, y);
    113111                        }
     
    149147                }
    150148                // Configure axes
    151                 AxisRenderer axisXRenderer = plot.getAxisRenderer(Axis.X);
     149                AxisRenderer axisXRenderer = plot.getAxisRenderer("x");
    152150                axisXRenderer.setSetting(AxisRenderer.LABEL, "Time [s]");
    153151                axisXRenderer.setSetting(AxisRenderer.TICKS_SPACING, 60.0);
    154152                axisXRenderer.setSetting(AxisRenderer.TICKS_MINOR_COUNT, 1);
    155                 AxisRenderer axisYRenderer = plot.getAxisRenderer(Axis.Y);
     153                AxisRenderer axisYRenderer = plot.getAxisRenderer("y");
    156154                axisYRenderer.setSetting(AxisRenderer.LABEL, "APM");
    157155                axisYRenderer.setSetting(AxisRenderer.LABEL_DISTANCE, 2.0);
    158156                axisYRenderer.setSetting(AxisRenderer.TICKS_SPACING, 20.0);
    159157                axisYRenderer.setSetting(AxisRenderer.TICKS_MINOR_COUNT, 0);
    160                 Axis axisX = plot.getAxis(Axis.X);
     158                Axis axisX = plot.getAxis("x");
    161159                axisX.setMin(0);
    162                 Axis axisY = plot.getAxis(Axis.Y);
     160                Axis axisY = plot.getAxis("y");
    163161                axisY.setMin(0);
    164                 double maxY = plot.getAxis(Axis.Y).getMax().doubleValue() + 2.0*axisYRenderer.<Double>getSetting(AxisRenderer.TICKS_SPACING);
     162                double maxY = plot.getAxis("y").getMax().doubleValue() + 2.0*axisYRenderer.<Double>getSetting(AxisRenderer.TICKS_SPACING);
    165163                axisY.setMax(maxY);
    166164
  • pom.xml

    rca8fb82 r88ead20  
    33  <groupId>de.erichseifert.warp</groupId>
    44  <artifactId>WARP</artifactId>
    5   <version>0.6</version>
     5  <version>0.7-SNAPSHOT</version>
    66  <packaging>pom</packaging>
    77  <inceptionYear>2010</inceptionYear>
  • sc2replay/pom.xml

    rca8fb82 r88ead20  
    33    <artifactId>WARP</artifactId>
    44    <groupId>de.erichseifert.warp</groupId>
    5     <version>0.6</version>
     5    <version>0.7-SNAPSHOT</version>
    66  </parent>
    77  <modelVersion>4.0.0</modelVersion>
    88  <groupId>de.erichseifert.warp</groupId>
    99  <artifactId>sc2replay</artifactId>
    10   <version>0.6</version>
     10  <version>0.7-SNAPSHOT</version>
    1111
    1212  <dependencies>
     
    1414      <groupId>de.erichseifert.warp</groupId>
    1515      <artifactId>core</artifactId>
    16       <version>0.6</version>
     16      <version>0.7-SNAPSHOT</version>
    1717    </dependency>
    1818    <dependency>
     
    2424      <groupId>de.erichseifert.warp</groupId>
    2525      <artifactId>gui.swing</artifactId>
    26       <version>0.6</version>
     26      <version>0.7-SNAPSHOT</version>
    2727      <optional>true</optional>
    2828    </dependency>
Note: See TracChangeset for help on using the changeset viewer.