package com.aptana.rdt.internal.core.gems;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import com.aptana.rdt.core.gems.Gem;
public class GemManagerContentHandler implements ContentHandler {
private HashSet<Gem> gems;
private String name;
private String version;
private String description;
private StringBuffer data = new StringBuffer();
private String platform;
public void characters(char[] ch, int start, int length) throws SAXException {
for (int i = start; i < start + length; i++) {
data.append(ch[i]);
}
}
public void endDocument() throws SAXException {
// do nothing
}
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {
if (qName.equals("name")) {
name = data.toString();
} else if (qName.equals("version")) {
version = data.toString();
} else if (qName.equals("description")) {
description = data.toString();
} else if (qName.equals("platform")) {
platform = data.toString();
} else if (qName.equals("gem")) {
if (version.indexOf(",") != -1) {
String[] versions = version.split(", ");
for (int i = 0; i < versions.length; i++) {
gems.add(new Gem(name, versions[i], description, platform));
}
} else {
gems.add(new Gem(name, version, description, platform));
}
}
data.delete(0, data.length());
}
public void endPrefixMapping(String arg0) throws SAXException {
// do nothing
}
public void ignorableWhitespace(char[] arg0, int arg1, int arg2)
throws SAXException {
// do nothing
}
public void processingInstruction(String arg0, String arg1)
throws SAXException {
// do nothing
}
public void setDocumentLocator(Locator arg0) {
// do nothing
}
public void skippedEntity(String arg0) throws SAXException {
// do nothing
}
public void startDocument() throws SAXException {
gems = new HashSet<Gem>();
}
public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {
}
public void startPrefixMapping(String arg0, String arg1)
throws SAXException {
// do nothing
}
public Set<Gem> getGems() {
return Collections.unmodifiableSet(gems);
}
}