Files
RidgeScout/app/src/main/java/com/astatin3/scoutingapp2025/scoutingData/ScoutingDataWriter.java
T

94 lines
3.4 KiB
Java
Raw Normal View History

2024-06-28 15:44:38 -06:00
package com.astatin3.scoutingapp2025.scoutingData;
import com.astatin3.scoutingapp2025.scoutingData.transfer.transferType;
import com.astatin3.scoutingapp2025.types.ScoutingArray;
import com.astatin3.scoutingapp2025.types.data.dataType;
import com.astatin3.scoutingapp2025.types.data.stringType;
import com.astatin3.scoutingapp2025.types.input.inputType;
import com.astatin3.scoutingapp2025.types.data.intType;
import com.astatin3.scoutingapp2025.utility.AlertManager;
2024-06-28 15:44:38 -06:00
import com.astatin3.scoutingapp2025.utility.fileEditor;
import com.astatin3.scoutingapp2025.utility.BuiltByteParser;
import com.astatin3.scoutingapp2025.utility.ByteBuilder;
import java.util.ArrayList;
public class ScoutingDataWriter {
// private static final int int_type_id = 255;
// private static final int string_type_id = 254;
public static boolean save(int version, String username, String filename, dataType[] data){
2024-06-28 15:44:38 -06:00
ByteBuilder bb = new ByteBuilder();
try {
bb.addInt(version);
bb.addString(username);
for(int i = 0; i < data.length; i++){
switch (data[i].getValueType()){
case NUM:
bb.addInt((int) data[i].get());
break;
case STRING:
bb.addString((String) data[i].get());
break;
}
}
byte[] bytes = bb.build();
fileEditor.writeFile(filename, bytes);
return true;
} catch (ByteBuilder.buildingException e) {
AlertManager.error(e);
2024-06-28 15:44:38 -06:00
return false;
}
}
public static class ParsedScoutingDataResult {
public String filename;
public String username;
public int version;
public ScoutingArray data;
2024-06-28 15:44:38 -06:00
}
public static ParsedScoutingDataResult load(String filename, inputType[][] values , transferType[][] transferValues){
2024-06-28 15:44:38 -06:00
byte[] bytes = fileEditor.readFile(filename);
BuiltByteParser bbp = new BuiltByteParser(bytes);
try {
ArrayList<BuiltByteParser.parsedObject> objects = bbp.parse();
dataType[] dataTypes = new dataType[objects.size()-2];
2024-06-28 15:44:38 -06:00
int version = ((int)objects.get(0).get());
2024-07-03 19:31:20 -06:00
// System.out.println(version);
2024-06-28 15:44:38 -06:00
String username = (String) objects.get(1).get();
for(int i = 0; i < values[version].length; i++){
switch (objects.get(i+2).getType()){
2024-07-16 21:25:34 -06:00
case 1:
dataTypes[i] = new intType(values[version][i].name, (int) objects.get(i+2).get());
2024-06-28 15:44:38 -06:00
break;
2024-07-16 21:25:34 -06:00
case 2:
2024-06-28 15:44:38 -06:00
String name = values[version][i].name;
String value = (String) objects.get(i+2).get();
2024-07-16 21:25:34 -06:00
dataTypes[i] = new stringType(name, value);
2024-06-28 15:44:38 -06:00
break;
}
}
ScoutingArray msa = new ScoutingArray(version, dataTypes, values, transferValues);
2024-06-28 15:44:38 -06:00
msa.update();
ParsedScoutingDataResult psda = new ParsedScoutingDataResult();
psda.filename = filename;
psda.username = username;
psda.version = version;
psda.data = msa;
return psda;
} catch (BuiltByteParser.byteParsingExeption e){
AlertManager.error(e);
2024-06-28 15:44:38 -06:00
return null;
}
}
}