use of org.eclipse.ecf.internal.bulletinboard.commons.parsing.IPatternDescriptor in project ecf by eclipse.
the class AbstractParser method parseThreads.
public Map<ID, IThread> parseThreads(final CharSequence seq) {
IPatternDescriptor pattern = getThreadPattern();
IBBObjectFactory factory = getThreadFactory();
Matcher m = pattern.getPattern().matcher(seq);
Map<ID, IThread> threads = new LinkedHashMap<ID, IThread>();
while (m.find()) {
Map<String, Object> values = pattern.getValueMap(m);
ID id = null;
try {
id = factory.createBBObjectId(namespace, baseURL, (String) values.get(IPatternDescriptor.ID_PARAM));
} catch (IDCreateException e) {
// TODO autogen e
e.printStackTrace();
}
String name = StringUtil.stripHTMLTrim((String) values.get(IPatternDescriptor.NAME_PARAM));
String authorInfo = (String) values.get("authorInfo");
IBBObject member = genericParser.parseSingleIdName(getAuthorInfoMemberPattern(), authorInfo, getMemberFactory());
if (member != null) {
values.put("author", member);
} else {
IBBObjectFactory gf = getGuestFactory();
String guestName = StringUtil.stripHTMLTrim(authorInfo);
ID guestID = null;
try {
guestID = gf.createBBObjectId(namespace, baseURL, guestName);
} catch (IDCreateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
values.put("author", getGuestFactory().createBBObject(guestID, guestName, null));
}
IThread obj = (IThread) factory.createBBObject(id, new String(name), values);
threads.put(id, obj);
}
return threads;
}
Aggregations