The beginning of modulizing Primitive Collections.

This will be a small rewrite of the "Builder".
Why this is done?
Basically this library is really big and having the Option to turn of
modules that you don't need is really important.

And right now enabling/disabling modules is really difficult since
everything is merged together.

So the first goal is to modularized where everything can be turned on or
of as wished.
This commit is contained in:
Speiger 2022-11-21 06:39:22 +01:00
parent 99e9afe7b1
commit 25a7cd060a
2 changed files with 55 additions and 26 deletions

View File

@ -2,6 +2,8 @@ package speiger.src.builder;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -394,6 +396,7 @@ public class GlobalVariables
addSimpleMapper("VALUE_TO_ARRAY", "to"+valueType.getNonFileType()+"Array"); addSimpleMapper("VALUE_TO_ARRAY", "to"+valueType.getNonFileType()+"Array");
addSimpleMapper("TO_ARRAY", "to"+type.getNonFileType()+"Array"); addSimpleMapper("TO_ARRAY", "to"+type.getNonFileType()+"Array");
addSimpleMapper("[SPACE]", " "); addSimpleMapper("[SPACE]", " ");
operators.sort(Comparator.comparing(IMapper::getSearchValue, this::sort));
return this; return this;
} }
@ -419,6 +422,20 @@ public class GlobalVariables
return process; return process;
} }
public void testComparason(List<String> keys, List<String> values) {
List<IMapper> copy = new ArrayList<>(operators);
Collections.shuffle(copy);
copy.sort(Comparator.comparing(IMapper::getSearchValue, this::sort));
operators.stream().map(IMapper::getSearchValue).forEach(keys::add);
copy.stream().map(IMapper::getSearchValue).forEach(values::add);
}
private int sort(String key, String value) {
if(value.contains(key)) return 1;
else if(key.contains(value)) return -1;
return 0;
}
public ClassType getType() public ClassType getType()
{ {
return type; return type;
@ -426,82 +443,82 @@ public class GlobalVariables
private void addClassMapper(String pattern, String replacement) private void addClassMapper(String pattern, String replacement)
{ {
operators.add(new SimpleMapper(type.name()+"[VALUE_"+pattern+"]", "VALUE_"+pattern, valueType.getFileType()+replacement)); operators.add(new SimpleMapper("VALUE_"+pattern, "VALUE_"+pattern, valueType.getFileType()+replacement));
operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, type.getFileType()+replacement)); operators.add(new SimpleMapper(pattern, pattern, type.getFileType()+replacement));
} }
private void addBiClassMapper(String pattern, String replacement, String splitter) private void addBiClassMapper(String pattern, String replacement, String splitter)
{ {
operators.add(new SimpleMapper(type.name()+"[KEY_"+pattern+"]", "KEY_"+pattern, type.getFileType()+splitter+type.getFileType()+replacement)); operators.add(new SimpleMapper("KEY_"+pattern, "KEY_"+pattern, type.getFileType()+splitter+type.getFileType()+replacement));
operators.add(new SimpleMapper(type.name()+"[VALUE_"+pattern+"]", "VALUE_"+pattern, valueType.getFileType()+splitter+valueType.getFileType()+replacement)); operators.add(new SimpleMapper("VALUE_"+pattern, "VALUE_"+pattern, valueType.getFileType()+splitter+valueType.getFileType()+replacement));
operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, type.getFileType()+splitter+valueType.getFileType()+replacement)); operators.add(new SimpleMapper(pattern, pattern, type.getFileType()+splitter+valueType.getFileType()+replacement));
} }
private void addAbstractMapper(String pattern, String replacement) private void addAbstractMapper(String pattern, String replacement)
{ {
operators.add(new SimpleMapper(type.name()+"[VALUE_"+pattern+"]", "VALUE_"+pattern, String.format(replacement, valueType.getFileType()))); operators.add(new SimpleMapper("VALUE_"+pattern, "VALUE_"+pattern, String.format(replacement, valueType.getFileType())));
operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, String.format(replacement, type.getFileType()))); operators.add(new SimpleMapper(pattern, pattern, String.format(replacement, type.getFileType())));
} }
private void addAbstractBiMapper(String pattern, String replacement, String splitter) private void addAbstractBiMapper(String pattern, String replacement, String splitter)
{ {
operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, String.format(replacement, type.getFileType()+splitter+valueType.getFileType()))); operators.add(new SimpleMapper(pattern, pattern, String.format(replacement, type.getFileType()+splitter+valueType.getFileType())));
} }
private void addFunctionMapper(String pattern, String replacement) private void addFunctionMapper(String pattern, String replacement)
{ {
operators.add(new SimpleMapper(type.name()+"[VALUE_"+pattern+"]", "VALUE_"+pattern, replacement+valueType.getNonFileType())); operators.add(new SimpleMapper("VALUE_"+pattern, "VALUE_"+pattern, replacement+valueType.getNonFileType()));
operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, replacement+type.getNonFileType())); operators.add(new SimpleMapper(pattern, pattern, replacement+type.getNonFileType()));
} }
private void addFunctionValueMapper(String pattern, String replacement) private void addFunctionValueMapper(String pattern, String replacement)
{ {
operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, replacement+valueType.getNonFileType())); operators.add(new SimpleMapper(pattern, pattern, replacement+valueType.getNonFileType()));
} }
private void addFunctionMappers(String pattern, String replacement) private void addFunctionMappers(String pattern, String replacement)
{ {
operators.add(new SimpleMapper(type.name()+"[VALUE_"+pattern+"]", "VALUE_"+pattern, String.format(replacement, valueType.getNonFileType()))); operators.add(new SimpleMapper("VALUE_"+pattern, "VALUE_"+pattern, String.format(replacement, valueType.getNonFileType())));
operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, String.format(replacement, type.getNonFileType()))); operators.add(new SimpleMapper(pattern, pattern, String.format(replacement, type.getNonFileType())));
} }
private void addFunctionValueMappers(String pattern, String replacement) private void addFunctionValueMappers(String pattern, String replacement)
{ {
operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, String.format(replacement, valueType.getNonFileType()))); operators.add(new SimpleMapper(pattern, pattern, String.format(replacement, valueType.getNonFileType())));
} }
private void addSimpleMapper(String pattern, String replacement) private void addSimpleMapper(String pattern, String replacement)
{ {
operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, replacement)); operators.add(new SimpleMapper(pattern, pattern, replacement));
} }
private void addAnnontion(String pattern, String value) private void addAnnontion(String pattern, String value)
{ {
if(type == ClassType.OBJECT) operators.add(new LineMapper(type.name()+"["+pattern+"]", pattern)); if(type == ClassType.OBJECT) operators.add(new LineMapper(pattern, pattern));
else operators.add(new SimpleMapper(type.name()+"["+pattern+"]", pattern, value)); else operators.add(new SimpleMapper(pattern, pattern, value));
} }
private void addValueAnnontion(String pattern, String value) private void addValueAnnontion(String pattern, String value)
{ {
if(valueType == ClassType.OBJECT) operators.add(new LineMapper(valueType.name()+"["+pattern+"]", pattern)); if(valueType == ClassType.OBJECT) operators.add(new LineMapper(pattern, pattern));
else operators.add(new SimpleMapper(valueType.name()+"["+pattern+"]", pattern, value)); else operators.add(new SimpleMapper(pattern, pattern, value));
} }
private void addComment(String pattern, String value) private void addComment(String pattern, String value)
{ {
if(type == ClassType.OBJECT) operators.add(new InjectMapper(type.name()+"["+pattern+"]", pattern, value).removeBraces()); if(type == ClassType.OBJECT) operators.add(new InjectMapper(pattern, pattern, value).removeBraces());
else operators.add(new LineMapper(type.name()+"["+pattern+"]", pattern)); else operators.add(new LineMapper(pattern, pattern));
} }
private void addValueComment(String pattern, String value) private void addValueComment(String pattern, String value)
{ {
if(valueType == ClassType.OBJECT) operators.add(new InjectMapper(valueType.name()+"["+pattern+"]", pattern, value).removeBraces()); if(valueType == ClassType.OBJECT) operators.add(new InjectMapper(pattern, pattern, value).removeBraces());
else operators.add(new LineMapper(valueType.name()+"["+pattern+"]", pattern)); else operators.add(new LineMapper(pattern, pattern));
} }
private InjectMapper addInjectMapper(String pattern, String replacement) private InjectMapper addInjectMapper(String pattern, String replacement)
{ {
InjectMapper mapper = new InjectMapper(type.name()+"["+pattern+"]", pattern, replacement); InjectMapper mapper = new InjectMapper(pattern, pattern, replacement);
operators.add(mapper); operators.add(mapper);
return mapper; return mapper;
} }
@ -513,7 +530,7 @@ public class GlobalVariables
private ArgumentMapper addArgumentMapper(String pattern, String replacement, String splitter) private ArgumentMapper addArgumentMapper(String pattern, String replacement, String splitter)
{ {
ArgumentMapper mapper = new ArgumentMapper(type.name()+"["+pattern+"]", pattern, replacement, splitter); ArgumentMapper mapper = new ArgumentMapper(pattern, pattern, replacement, splitter);
operators.add(mapper); operators.add(mapper);
return mapper; return mapper;
} }

View File

@ -224,6 +224,18 @@ public class PrimitiveCollectionsBuilder extends TemplateProcessor
} }
} }
public void test() throws InterruptedException, IOException
{
init();
List<String> keys = new ArrayList<>();
List<String> values = new ArrayList<>();
for(int i = 0,m=variables.size();i<m;i++) {
variables.get(i).testComparason(keys, values);
}
System.out.println("Original: "+keys);
System.out.println("Copy: "+values);
}
@Override @Override
public void createProcesses(String name, Consumer<TemplateProcess> acceptor) public void createProcesses(String name, Consumer<TemplateProcess> acceptor)
{ {
@ -317,7 +329,7 @@ public class PrimitiveCollectionsBuilder extends TemplateProcessor
boolean force = flags.contains("force"); boolean force = flags.contains("force");
boolean tests = flags.contains("tests"); boolean tests = flags.contains("tests");
boolean forceTests = flags.contains("force-tests"); boolean forceTests = flags.contains("force-tests");
// new PrimitiveCollectionsBuilder(silent).test();
new PrimitiveCollectionsBuilder(silent).process(force); new PrimitiveCollectionsBuilder(silent).process(force);
if(tests) { if(tests) {
createTests(silent).process(force || forceTests); createTests(silent).process(force || forceTests);