MCPcopy Create free account
hub / github.com/PCGen/pcgen / BasicLoader

Class BasicLoader

code/src/java/pcgen/gui2/converter/loader/BasicLoader.java:38–136  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

36import pcgen.util.Logging;
37
38public class BasicLoader<T extends CDOMObject> implements Loader
39{
40
41 public static final String FIELD_SEPARATOR = "\t"; //$NON-NLS-1$
42 private final Class<T> cdomClass;
43 private final ListKey<CampaignSourceEntry> listkey;
44 private final EditorLoadContext context;
45 private final Writer changeLogWriter;
46
47 public BasicLoader(EditorLoadContext lc, Class<T> cl, ListKey<CampaignSourceEntry> lk, Writer changeLogWriter)
48 {
49 context = lc;
50 cdomClass = cl;
51 listkey = lk;
52 this.changeLogWriter = changeLogWriter;
53 }
54
55 @Override
56 public List<CDOMObject> process(StringBuilder sb, int line, String lineString, ConversionDecider decider)
57 throws PersistenceLayerException, InterruptedException
58 {
59 String[] tokens = lineString.split(FIELD_SEPARATOR);
60 if (tokens.length == 0)
61 {
62 return null;
63 }
64 String objectName = tokens[0];
65 sb.append(objectName);
66 List<CDOMObject> list = new ArrayList<>();
67 for (int tok = 1; tok < tokens.length; tok++)
68 {
69 String token = tokens[tok];
70 sb.append(FIELD_SEPARATOR);
71 if (token.isEmpty())
72 {
73 continue;
74 }
75
76 T obj = context.getReferenceContext().constructCDOMObject(cdomClass, line + "Test" + tok + " " + token);
77 obj.put(StringKey.CONVERT_NAME, tokens[0]);
78 List<CDOMObject> injected = processToken(sb, objectName, obj, token, decider, line);
79 if (injected != null)
80 {
81 list.addAll(injected);
82 }
83 context.purge(obj);
84 TokenConverter.clearConstants();
85 }
86 return list;
87 }
88
89 private List<CDOMObject> processToken(StringBuilder sb, String objectName, CDOMObject obj, String token,
90 ConversionDecider decider, int line)
91 {
92 final int colonLoc = token.indexOf(':');
93 if (colonLoc == -1)
94 {
95 Logging.errorPrint("Invalid Token - does not contain a colon: " + token);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected