package foundation.io.object; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import foundation.json.IJSONProvider; import foundation.json.IJSONWriter; import foundation.util.ContentBuilder; public class Titles implements Iterable, IJSONProvider { private List titleList; private Map titleIndexMap; public static Pattern PATTNER_NECESSARY = Pattern.compile("[^(|\\(必填\\)|)]+"); public Titles() { titleList = new ArrayList(); titleIndexMap = new HashMap(); } public void setSize(int columnCount) { // TODO Auto-generated method stub } public void setTitle(int i, String title) { // TODO Auto-generated method stub } public void setFieldName(int i, String value) { // TODO Auto-generated method stub } public void add(String title) { add(title, titleList.size()); } public void add(String title, Integer idx) { if (title == null) { return; } title = title.toLowerCase(); Matcher titleMatch = PATTNER_NECESSARY.matcher(title); if(titleMatch.find()) { title = titleMatch.group(); } titleList.add(title); titleIndexMap.put(title, idx); } public Integer getIndex(String title) { if (title == null) { return null; } title = title.toLowerCase(); return titleIndexMap.get(title); } public boolean contains(String title) { if (title == null) { return false; } title = title.toLowerCase(); return titleIndexMap.containsKey(title); } @Override public Iterator iterator() { return titleList.iterator(); } public int size() { return titleList.size(); } public boolean isEmpty() { return titleList.size() == 0; } public String get(int i) { return titleList.get(i); } public void clear() { titleList.clear(); titleIndexMap.clear(); } @Override public String toString() { ContentBuilder builder = new ContentBuilder(", "); for (String title: titleList) { builder.append(title); } return builder.toString(); } @Override public void writeJSON(IJSONWriter writer) { writer.beginArray(); writeJSONBody(writer); writer.endArray(); } public void writeJSONBody(IJSONWriter writer) { for (String title: titleList) { writer.write(title); } } }