diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index 5563da07d4..96110ee601 100644 Binary files a/java_tools/ConfigDefinition.jar and b/java_tools/ConfigDefinition.jar differ diff --git a/java_tools/configuration_definition/src/com/rusefi/output/JavaFieldsConsumer.java b/java_tools/configuration_definition/src/com/rusefi/output/JavaFieldsConsumer.java index 45d2676f8f..b40d21f8bb 100644 --- a/java_tools/configuration_definition/src/com/rusefi/output/JavaFieldsConsumer.java +++ b/java_tools/configuration_definition/src/com/rusefi/output/JavaFieldsConsumer.java @@ -1,5 +1,6 @@ package com.rusefi.output; +import com.opensr5.ini.IniFileModel; import com.rusefi.*; import java.io.CharArrayWriter; @@ -75,8 +76,11 @@ public abstract class JavaFieldsConsumer implements ConfigurationConsumer { javaFieldsWriter.write("\tpublic static final String[] " + configField.getType() + " = {" + enumOptions + "};" + EOL); } + writeJavaFieldName(nameWithPrefix, tsPosition); - if (configField.getElementSize() == 1) { + if (isStringField(configField)) { + javaFieldsWriter.write("FieldType.STRING"); + } else if (configField.getElementSize() == 1) { javaFieldsWriter.write("FieldType.INT8"); } else if (configField.getElementSize() == 2) { javaFieldsWriter.write("FieldType.INT16"); @@ -94,6 +98,11 @@ public abstract class JavaFieldsConsumer implements ConfigurationConsumer { return tsPosition; } + private boolean isStringField(ConfigField configField) { + String custom = state.tsCustomLine.get(configField.getType()); + return custom != null && custom.toLowerCase().startsWith(IniFileModel.FIELD_TYPE_STRING); + } + public void handleEndStruct(ConfigStructure structure) throws IOException { if (state.stack.isEmpty()) { writeJavaFields(structure.tsFields, "", 0); diff --git a/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java b/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java index dbdb08317d..83bc7d5962 100644 --- a/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java +++ b/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java @@ -4,13 +4,14 @@ import com.rusefi.ConfigField; import com.rusefi.ReaderState; import com.rusefi.TypesHelper; import com.rusefi.VariableRegistry; -import com.rusefi.output.ConfigurationConsumer; import com.rusefi.output.FsioSettingsConsumer; import com.rusefi.output.JavaFieldsConsumer; -import com.rusefi.output.TSProjectConsumer; import org.junit.Test; -import java.io.*; +import java.io.BufferedReader; +import java.io.CharArrayWriter; +import java.io.IOException; +import java.io.StringReader; import java.util.Arrays; import java.util.Collections; @@ -114,7 +115,7 @@ public class ConfigFieldParserTest { JavaFieldsConsumer javaFieldsConsumer = new TestJavaFieldsConsumer(state); state.readBufferedReader(reader, Arrays.asList(javaFieldsConsumer)); - assertEquals("\tpublic static final Field VAR = Field.create(\"VAR\", 0, FieldType.INT);\n" + + assertEquals("\tpublic static final Field VAR = Field.create(\"VAR\", 0, FieldType.STRING);\n" + "\tpublic static final Field PERIODMS = Field.create(\"PERIODMS\", 120, FieldType.INT16);\n", javaFieldsConsumer.getJavaFieldsWriter());