package org.yamcs.simulator.leospacecraft; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /** * Cleans and reduces filesize of HKM's data file by converting float-encoded * to ints after gz compression, difference is only about 2mb though. * <p> * Keeping this around for when we need to do something similar again */ public class CsvSizeReducer { public static void main(String... args) throws IOException { try (FileWriter writer = new FileWriter(new File("/Users/fdi/satellite.csv")); BufferedReader in = new BufferedReader(new FileReader("/Users/fdi/rep1.txt"))) { in.readLine(); // Headers String line = in.readLine(); String[] titles = line.split("\\s+"); for (int i=1; i<titles.length; i++) { writer.write(titles[i]); if (i < titles.length - 1) { writer.write(","); } } writer.write("\n"); // Units in.readLine(); // Data while ((line = in.readLine()) != null) { String[] parts = line.split("\\s+"); writer.write(parts[1]); // LEO_Spacecraft.EpochUSNO; writer.write(','); writer.write(asInt(parts[2])); // LEO_Spacecraft.OrbitNumberCumulative; writer.write(','); writer.write(asInt(parts[3])); // LEO_Spacecraft.ElapsedSeconds; writer.write(','); writer.write(parts[4]); // LEO_Spacecraft.A; writer.write(','); writer.write(parts[5]); // LEO_Spacecraft.Height; writer.write(','); writer.write(parts[6]); // LEO_Spacecraft.X; writer.write(','); writer.write(parts[7]); // LEO_Spacecraft.Y; writer.write(','); writer.write(parts[8]); // LEO_Spacecraft.Z; writer.write(','); writer.write(parts[9]); // LEO_Spacecraft.VX; writer.write(','); writer.write(parts[10]); // LEO_Spacecraft.VY; writer.write(','); writer.write(parts[11]); // LEO_Spacecraft.VZ; writer.write(','); writer.write(asInt(parts[12])); // LEO_Spacecraft.Shadow; writer.write(','); writer.write(asInt(parts[13])); // LEO_Spacecraft.Contact(Golbasi_GS); writer.write(','); writer.write(asInt(parts[14])); // LEO_Spacecraft.Contact(Svalbard); writer.write(','); writer.write(parts[15]); // LEO_Spacecraft.Latitude; writer.write(','); writer.write(parts[16]); // LEO_Spacecraft.Longitude; writer.write(','); writer.write(asInt(parts[17])); // Payload_Status; writer.write(','); writer.write(asInt(parts[18])); // payload_error_flag; writer.write(','); writer.write(asInt(parts[19])); // ADCS_error_flag; writer.write(','); writer.write(asInt(parts[20])); // CDHS_error_flag; writer.write(','); writer.write(asInt(parts[21])); // COMMS_error_flag; writer.write(','); writer.write(asInt(parts[22])); // EPS_error_flag; writer.write(','); writer.write(asInt(parts[23])); // COMMS_status; writer.write(','); writer.write(asInt(parts[24])); // CDHS_status; writer.write(','); writer.write(parts[25]); // Bat1_voltage; writer.write(','); writer.write(parts[26]); // Bat2_voltage; writer.write(','); writer.write(parts[27]); // bat1_temp; writer.write(','); writer.write(parts[28]); // bat2_temp; writer.write(','); writer.write(parts[29]); // Magnetometer_X; writer.write(','); writer.write(parts[30]); // Magnetometer_Y; writer.write(','); writer.write(parts[31]); // Magnetometer_Z; writer.write(','); writer.write(parts[32]); // Sunsensor; writer.write(','); writer.write(parts[33]); // Gyro_X; writer.write(','); writer.write(parts[34]); // Gyro_Y; writer.write(','); writer.write(parts[35]); // Gyro_Z; writer.write(','); writer.write(parts[36]); // detector_temp; writer.write(','); writer.write(asInt(parts[37])); // mode_night; writer.write(','); writer.write(asInt(parts[38])); // mode_day; writer.write(','); writer.write(asInt(parts[39])); // mode_payload; writer.write(','); writer.write(asInt(parts[40])); // mode_xband; writer.write(','); writer.write(asInt(parts[41])); // mode_sband; writer.write(','); writer.write(asInt(parts[42])); // mode_safe; writer.write("\n"); } } } private static String asInt(String part) { return Integer.valueOf(Float.valueOf(part).intValue()).toString(); } }