STRING support for java fields

This commit is contained in:
rusefi 2020-07-18 19:12:47 -04:00
parent 979bb19ea4
commit a3393133a6
3 changed files with 15 additions and 5 deletions

Binary file not shown.

View File

@ -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);

View File

@ -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());