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<String>, IJSONProvider {
|
|
private List<String> titleList;
|
private Map<String, Integer> titleIndexMap;
|
public static Pattern PATTNER_NECESSARY = Pattern.compile("[^(|\\(必填\\)|)]+");
|
|
|
public Titles() {
|
titleList = new ArrayList<String>();
|
titleIndexMap = new HashMap<String, Integer>();
|
}
|
|
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<String> 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);
|
}
|
}
|
|
}
|