package foundation.data.mapping; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import foundation.util.ContentBuilder; public class MappingsRuntime { private List fieldMappingRuntimes; private Map fromMap; private Map toMap; public MappingsRuntime() { fieldMappingRuntimes = new ArrayList(); fromMap = new HashMap(); toMap = new HashMap(); } public void addItem(FieldMappingRuntime fieldMappingRuntime) { String fromName = fieldMappingRuntime.getFromName(); String toName = fieldMappingRuntime.getToName(); if (fromName == null || toName == null) { return; } fromName = fromName.toLowerCase(); toName = toName.toLowerCase(); fieldMappingRuntimes.add(fieldMappingRuntime); fromMap.put(fromName, fieldMappingRuntime); toMap.put(toName, fieldMappingRuntime); } public int[] getFromIndex() { int[] result = new int[fieldMappingRuntimes.size()]; for (int i = 0; i < result.length; i++) { FieldMappingRuntime fieldMappingRuntime = fieldMappingRuntimes.get(i); result[i] = fieldMappingRuntime.getFromIndex(); } return result; } public List getMappingRuntimeList() { return fieldMappingRuntimes; } public boolean containsFromField(String fieldName) { if (fieldName == null) { return false; } fieldName = fieldName.toLowerCase(); return fromMap.containsKey(fieldName); } public boolean containsToField(String fieldName) { if (fieldName == null) { return false; } fieldName = fieldName.toLowerCase(); return toMap.containsKey(fieldName); } public int size() { return fieldMappingRuntimes.size(); } public String getFromFieldNames(String division) { ContentBuilder result = new ContentBuilder(division); for (FieldMappingRuntime fieldMappingRuntime: fieldMappingRuntimes) { String fromName = fieldMappingRuntime.getFromName(); result.append(fromName); } return result.toString(); } public String getToFieldNames(String division, String... additional) { ContentBuilder result = new ContentBuilder(division); for (FieldMappingRuntime fieldMappingRuntime: fieldMappingRuntimes) { String toName = fieldMappingRuntime.getToName(); result.append(toName); } if (additional != null) { for (String fieldName: additional) { result.append(fieldName); } } return result.toString(); } }