package foundation.data.meta.field;
|
|
import java.util.Iterator;
|
import java.util.List;
|
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
import foundation.translator.ITranslator;
|
import foundation.translator.ValueType;
|
import foundation.util.MapList;
|
|
|
public class FieldsRuntime implements Iterable<Field> {
|
|
protected static Logger logger;
|
|
protected MapList<String, Field> fieldList;
|
protected String[] names;
|
protected String[] lowerNames;
|
protected ITranslator[] valueTranslators;
|
|
static {
|
logger = LogManager.getLogger(FieldsRuntime.class);
|
}
|
|
public FieldsRuntime() {
|
fieldList = new MapList<String, Field>();
|
}
|
|
public int getFieldCount() {
|
return fieldList.size();
|
}
|
|
public Iterator<Field> iterator() {
|
return fieldList.iterator();
|
}
|
|
public List<Field> getFields() {
|
return fieldList.getItemList();
|
}
|
|
public Field get(String name) {
|
if (name == null)
|
return null;
|
|
return fieldList.get(name);
|
}
|
|
public Field get(int idx) {
|
return fieldList.get(idx);
|
}
|
|
public ValueType getValueType(int idx) {
|
Field field = fieldList.get(idx);
|
return field.getType();
|
}
|
|
public ValueType[] getValueTypes() {
|
int size = fieldList.size();
|
ValueType[] result = new ValueType[size];
|
|
for (int i = 0; i < size; i++) {
|
ValueType type = getValueType(i);
|
result[i] = type;
|
}
|
|
return result;
|
}
|
|
public FieldWriter getWriter(int idx) {
|
Field field = fieldList.get(idx);
|
return field.getWriter();
|
}
|
|
public FieldWriter[] getWriters() {
|
int size = fieldList.size();
|
FieldWriter[] result = new FieldWriter[size];
|
|
for (int i = 0; i < size; i++) {
|
FieldWriter writer = getWriter(i);
|
result[i] = writer;
|
}
|
|
return result;
|
}
|
|
public Integer getIndex(String fieldName) {
|
if (fieldName == null) {
|
return null;
|
}
|
|
Field field = fieldList.get(fieldName);
|
|
if (field == null) {
|
return null;
|
}
|
|
return field.getIndexNo();
|
}
|
|
public String[] getLowerNames() {
|
return lowerNames;
|
}
|
|
public String[] getFieldNames() {
|
return names;
|
}
|
|
public boolean contains(String name) {
|
if (name == null) {
|
return false;
|
}
|
|
return fieldList.contains(name);
|
}
|
|
public ITranslator getTranslator(int idx) {
|
return valueTranslators[idx];
|
}
|
|
public ITranslator getValueTranslator(String name) {
|
if (name == null) {
|
return null;
|
}
|
|
Field field = fieldList.get(name);
|
|
if (field == null) {
|
return null;
|
}
|
|
return valueTranslators[field.getIndexNo()];
|
}
|
|
public int size() {
|
return fieldList.size();
|
}
|
|
public MapList<String, Field> getFieldList() {
|
return fieldList;
|
}
|
|
public boolean isEmpty() {
|
return fieldList.isEmpty();
|
}
|
|
}
|