package com.swtworkbench.community.xswt.dataparser; import java.util.ArrayList; import java.util.List; import com.swtworkbench.community.xswt.XSWTException; public class CompositeDataParser implements IDataParser { private List dataParsers; public CompositeDataParser() { } public CompositeDataParser(IDataParser dataParser) { addDataParser(dataParser); } public void addDataParser(IDataParser dataParser) { if (dataParsers == null) { dataParsers = new ArrayList(); } dataParsers.add(dataParser); } public void removeDataParser(IDataParser dataParser) { if (dataParsers != null) { dataParsers.remove(dataParser); } } public Object parse(String source, Class klass, IDataParserContext context) throws XSWTException { for (int i = 0; i < dataParsers.size(); i++) { IDataParser dataParser = (IDataParser)dataParsers.get(i); Object o = null; try { o = dataParser.parse(source, klass, context); } catch (XSWTException e) { } if (o != null) { return o; } } return null; } public boolean isResourceDisposeRequired() { for (int i = 0; i < dataParsers.size(); i++) { IDataParser dataParser = (IDataParser)dataParsers.get(i); if (dataParser.isResourceDisposeRequired()) { return true; } } return false; } }