refactoring

This commit is contained in:
rusefi 2018-12-20 00:27:49 -05:00
parent 26c7c35eed
commit cfc05de986
3 changed files with 77 additions and 63 deletions

Binary file not shown.

View File

@ -12,21 +12,18 @@ public class ConfigDefinition {
public static final String EOL = "\n";
private static final String INPUT_FILE_NAME = "rusefi_config.txt";
public static final String MESSAGE = "was generated automatically by ConfigDefinition.jar based on " + INPUT_FILE_NAME + " " + new Date();
private static final String TS_FILE_INPUT_NAME = "rusefi.input";
private static final String TS_FILE_OUTPUT_NAME = "rusefi.ini";
public static final String TS_FILE_INPUT_NAME = "rusefi.input";
private static final String STRUCT_NO_PREFIX = "struct_no_prefix ";
private static final String STRUCT = "struct ";
private static final String END_STRUCT = "end_struct";
private static final String CUSTOM = "custom";
private static final String DEFINE = "#define";
private static final String BIT = "bit";
private static final String CONFIG_DEFINITION_START = "CONFIG_DEFINITION_START";
private static final String CONFIG_DEFINITION_END = "CONFIG_DEFINITION_END";
private static final String ROM_RAIDER_XML_TEMPLATE = "rusefi_template.xml";
private static final String ROM_RAIDER_XML_OUTPUT = "rusefi.xml";
private static final String ENGINE_CONFIGURATION_GENERATED_STRUCTURES_H = "engine_configuration_generated_structures.h";
private static final String FIELDS_JAVA = "models/src/com/rusefi/config/Fields.java";
private static int totalTsSize;
public static int totalTsSize;
public static StringBuilder settingContextHelp = new StringBuilder();
@ -55,9 +52,11 @@ public class ConfigDefinition {
CharArrayWriter javaFieldsWriter = new CharArrayWriter();
ConfigurationConsumer cHeaderConsumer = new CHeaderConsumer(cHeader);
ReaderState state = new ReaderState();
ConfigurationConsumer cHeaderConsumer = new CHeaderConsumer(cHeader);
ConfigurationConsumer tsProjectConsumer = new TSProjectConsumer(tsWriter, tsPath, state);
processFile(state, br, cHeaderConsumer, tsWriter, javaFieldsWriter);
BufferedWriter javaFields = new BufferedWriter(new FileWriter(javaConsolePath + File.separator + FIELDS_JAVA));
@ -70,7 +69,7 @@ public class ConfigDefinition {
javaFields.close();
writeTunerStudioFile(tsPath, tsWriter.toString());
TSProjectConsumer.writeTunerStudioFile(tsPath, tsWriter.toString());
state.ensureEmptyAfterProcessing();
@ -84,27 +83,6 @@ public class ConfigDefinition {
processTextTemplate(inputFileName, outputFileName);
}
private static void writeTunerStudioFile(String tsPath, String fieldsSection) throws IOException {
TsFileContent tsContent = readTsFile(tsPath);
System.out.println("Got " + tsContent.getPrefix().length() + "/" + tsContent.getPostfix().length() + " of " + TS_FILE_INPUT_NAME);
BufferedWriter tsHeader = new BufferedWriter(new FileWriter(tsPath + File.separator + TS_FILE_OUTPUT_NAME));
tsHeader.write(tsContent.getPrefix());
tsHeader.write("; " + CONFIG_DEFINITION_START + ConfigDefinition.EOL);
tsHeader.write("; this section " + MESSAGE + ConfigDefinition.EOL + ConfigDefinition.EOL);
tsHeader.write("pageSize = " + totalTsSize + ConfigDefinition.EOL);
tsHeader.write("page = 1" + ConfigDefinition.EOL);
tsHeader.write(fieldsSection);
if (settingContextHelp.length() > 0) {
tsHeader.write("[SettingContextHelp]" + ConfigDefinition.EOL);
tsHeader.write(settingContextHelp.toString() + ConfigDefinition.EOL + ConfigDefinition.EOL);
}
tsHeader.write("; " + CONFIG_DEFINITION_END + ConfigDefinition.EOL);
tsHeader.write(tsContent.getPostfix());
tsHeader.close();
}
private static void processTextTemplate(String inputFileName, String outputFileName) throws IOException {
System.out.println("Reading from " + inputFileName);
System.out.println("Writing to " + outputFileName);
@ -125,35 +103,6 @@ public class ConfigDefinition {
fw.close();
}
private static TsFileContent readTsFile(String tsPath) throws IOException {
BufferedReader r = new BufferedReader(new FileReader(tsPath + File.separator + TS_FILE_INPUT_NAME));
StringBuilder prefix = new StringBuilder();
StringBuilder postfix = new StringBuilder();
boolean isBeforeStartTag = true;
boolean isAfterEndTag = false;
String line;
while ((line = r.readLine()) != null) {
if (line.contains(CONFIG_DEFINITION_START)) {
isBeforeStartTag = false;
continue;
}
if (line.contains(CONFIG_DEFINITION_END)) {
isAfterEndTag = true;
continue;
}
if (isBeforeStartTag)
prefix.append(line + ConfigDefinition.EOL);
if (isAfterEndTag)
postfix.append(VariableRegistry.INSTANCE.applyVariables(line) + ConfigDefinition.EOL);
}
r.close();
return new TsFileContent(prefix.toString(), postfix.toString());
}
private static void processFile(ReaderState state, BufferedReader br, ConfigurationConsumer cHeaderConsumer,
Writer tsHeader, CharArrayWriter javaFieldsWriter) throws IOException {
String line;

View File

@ -1,14 +1,73 @@
package com.rusefi;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.*;
import static com.rusefi.ConfigDefinition.EOL;
public class TSProjectConsumer implements ConfigurationConsumer {
private final CharArrayWriter tsWriter;
private static int totalTsSize;
private static final String CONFIG_DEFINITION_START = "CONFIG_DEFINITION_START";
private static final String CONFIG_DEFINITION_END = "CONFIG_DEFINITION_END";
private static final String TS_FILE_OUTPUT_NAME = "rusefi.ini";
public TSProjectConsumer(ReaderState state, CharArrayWriter tsWriter) {
private final CharArrayWriter tsWriter;
private final String tsPath;
private final ReaderState state;
// private int totalTsSize;
public TSProjectConsumer(CharArrayWriter tsWriter, String tsPath, ReaderState state) {
this.tsWriter = tsWriter;
this.tsPath = tsPath;
this.state = state;
}
static void writeTunerStudioFile(String tsPath, String fieldsSection) throws IOException {
TsFileContent tsContent = readTsFile(tsPath);
System.out.println("Got " + tsContent.getPrefix().length() + "/" + tsContent.getPostfix().length() + " of " + ConfigDefinition.TS_FILE_INPUT_NAME);
BufferedWriter tsHeader = new BufferedWriter(new FileWriter(tsPath + File.separator + TS_FILE_OUTPUT_NAME));
tsHeader.write(tsContent.getPrefix());
tsHeader.write("; " + CONFIG_DEFINITION_START + ConfigDefinition.EOL);
tsHeader.write("; this section " + ConfigDefinition.MESSAGE + ConfigDefinition.EOL + ConfigDefinition.EOL);
tsHeader.write("pageSize = " + ConfigDefinition.totalTsSize + ConfigDefinition.EOL);
tsHeader.write("page = 1" + ConfigDefinition.EOL);
tsHeader.write(fieldsSection);
if (ConfigDefinition.settingContextHelp.length() > 0) {
tsHeader.write("[SettingContextHelp]" + ConfigDefinition.EOL);
tsHeader.write(ConfigDefinition.settingContextHelp.toString() + ConfigDefinition.EOL + ConfigDefinition.EOL);
}
tsHeader.write("; " + CONFIG_DEFINITION_END + ConfigDefinition.EOL);
tsHeader.write(tsContent.getPostfix());
tsHeader.close();
}
private static TsFileContent readTsFile(String tsPath) throws IOException {
BufferedReader r = new BufferedReader(new FileReader(tsPath + File.separator + ConfigDefinition.TS_FILE_INPUT_NAME));
StringBuilder prefix = new StringBuilder();
StringBuilder postfix = new StringBuilder();
boolean isBeforeStartTag = true;
boolean isAfterEndTag = false;
String line;
while ((line = r.readLine()) != null) {
if (line.contains(CONFIG_DEFINITION_START)) {
isBeforeStartTag = false;
continue;
}
if (line.contains(CONFIG_DEFINITION_END)) {
isAfterEndTag = true;
continue;
}
if (isBeforeStartTag)
prefix.append(line + ConfigDefinition.EOL);
if (isAfterEndTag)
postfix.append(VariableRegistry.INSTANCE.applyVariables(line) + ConfigDefinition.EOL);
}
r.close();
return new TsFileContent(prefix.toString(), postfix.toString());
}
@Override
@ -23,6 +82,12 @@ public class TSProjectConsumer implements ConfigurationConsumer {
@Override
public void handleEndStruct(ConfigStructure structure) throws IOException {
if (state.stack.isEmpty()) {
ConfigDefinition.totalTsSize = structure.writeTunerStudio("", tsWriter, 0);
tsWriter.write("; total TS size = " + ConfigDefinition.totalTsSize + EOL);
VariableRegistry.INSTANCE.register("TOTAL_CONFIG_SIZE", ConfigDefinition.totalTsSize);
writeTunerStudioFile(tsPath, tsWriter.toString());
}
}
@Override