| 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(); |
| | 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."); |
| 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."); |