Changeset 195

Show
Ignore:
Timestamp:
02/28/10 14:41:42 (2 years ago)
Author:
stefan
Message:

towards feature #168: pulse after session can be recorded

Location:
trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/CHANGELOG

    r192 r195  
    33 
    44//== 0.7.9 == 
     5 
     62010-02-28 
     7* [stefan]  * towards feature #168: pulse after session can be recorded 
    58 
    692010-02-23 
  • trunk/src/org/jergometer/JergometerConsole.java

    r194 r195  
    6262          } 
    6363          lastTime = time; 
     64          for (int idleTime = 0; idleTime < 20; idleTime++) { 
     65            pulse     += random.nextInt(2)-1; 
     66            jergometer.bikeData(new DataRecord(pulse, 0, 0, distance, destPower, energy, "" + time, realPower)); 
     67            sleep(10); 
     68          } 
    6469        } else 
    6570        if (line.equals("quit")) { 
  • trunk/src/org/jergometer/model/BikeSession.java

    r194 r195  
    187187      miniDataRecord.toStream(out); 
    188188    } 
     189    out.writeInt(pulseAfterSession.size()); 
     190    for (Integer pulse : pulseAfterSession) { 
     191      out.writeInt(pulse); 
     192    } 
    189193  } 
    190194 
    191195  private void fromStream(DataInputStream in) throws IOException { 
    192     String type = in.readUTF(); 
    193     if (type.equals("jergometer session")) { 
    194       int format = Integer.parseInt(in.readUTF()); 
    195  
    196       if (format <= 2) { 
    197         startTime = new Time(in.readLong()); 
    198         programName = in.readUTF(); 
    199         MiniDataRecord regularSum = new MiniDataRecord(in); 
    200         int pulseCount = in.readInt(); 
    201         lastRecordRegular = new DataRecord(in); 
    202         if (format >= 2) { 
     196    try { 
     197      String type = in.readUTF(); 
     198      if (type.equals("jergometer session")) { 
     199        int format = Integer.parseInt(in.readUTF()); 
     200 
     201        if (format <= 2) { 
     202          startTime = new Time(in.readLong()); 
     203          programName = in.readUTF(); 
     204          MiniDataRecord regularSum = new MiniDataRecord(in); 
     205          int pulseCount = in.readInt(); 
     206          lastRecordRegular = new DataRecord(in); 
     207          if (format >= 2) { 
     208            programDuration = in.readInt(); 
     209          } 
     210          int duration = in.readInt(); 
     211          data = new ArrayList<MiniDataRecord>(duration); 
     212          for (int i = 0; i < duration; i++) { 
     213            data.add(new MiniDataRecord(in)); 
     214          } 
     215          statsRegular = new StatsRecord(regularSum.getPulse(), regularSum.getPower(), regularSum.getPedalRpm(), duration, pulseCount); 
     216          statsTotal = statsRegular; 
     217          currentStats = null; 
     218        } else 
     219        if (format == 3) { 
     220          startTime = new Time(in.readLong()); 
     221          programName = in.readUTF(); 
    203222          programDuration = in.readInt(); 
     223          lastRecordRegular = new DataRecord(in); 
     224          lastRecordTotal = new DataRecord(in); 
     225          statsRegular = new StatsRecord(in); 
     226          statsTotal = new StatsRecord(in); 
     227          int dataSize = in.readInt(); 
     228          data = new ArrayList<MiniDataRecord>(dataSize); 
     229          for (int i = 0; i < dataSize; i++) { 
     230            data.add(new MiniDataRecord(in)); 
     231          } 
     232          int pulseSize = in.readInt(); 
     233          for (int i = 0; i < pulseSize; i++) { 
     234            pulseAfterSession.add(in.readInt()); 
     235          } 
     236        } else { 
     237          throw new IOException("Session format " + format + " too new for this version of JErgometer.  Seems you need to update JErgometer."); 
    204238        } 
    205         int duration = in.readInt(); 
    206         data = new ArrayList<MiniDataRecord>(duration); 
    207         for (int i = 0; i < duration; i++) { 
    208           data.add(new MiniDataRecord(in)); 
    209         } 
    210         statsRegular = new StatsRecord(regularSum.getPulse(), regularSum.getPower(), regularSum.getPedalRpm(), duration, pulseCount); 
    211         statsTotal = statsRegular; 
    212         currentStats = null; 
    213       } else 
    214       if (format == 3) { 
    215         startTime = new Time(in.readLong()); 
    216         programName = in.readUTF(); 
    217         programDuration = in.readInt(); 
    218         lastRecordRegular = new DataRecord(in); 
    219         lastRecordTotal = new DataRecord(in); 
    220         statsRegular = new StatsRecord(in); 
    221         statsTotal = new StatsRecord(in); 
    222         int size = in.readInt(); 
    223         data = new ArrayList<MiniDataRecord>(size); 
    224         for (int i = 0; i < size; i++) { 
    225           data.add(new MiniDataRecord(in)); 
    226         } 
    227       } 
    228     } 
    229     else { 
    230       throw new IOException("File \"" + file.getName() + "\" is not a valid session file."); 
     239      } else { 
     240        throw new IOException("File \"" + file.getName() + "\" is not a valid session file."); 
     241      } 
     242    } catch (EOFException e) { 
     243      throw new IOException("Session file corrupted (too short).  Please report this bug at jergometer.org."); 
    231244    } 
    232245  }