package org.codehaus.sonar.cql.parser;
import static java.util.Locale.ENGLISH;
import static org.sonar.api.utils.ParsingUtils.parseNumber;
import static org.sonar.api.utils.ParsingUtils.scaleValue;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.StringUtils;
import org.codehaus.staxmate.in.SMHierarchicCursor;
import org.codehaus.staxmate.in.SMInputCursor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.batch.SensorContext;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.api.measures.Measure;
import org.sonar.api.measures.PersistenceMode;
import org.sonar.api.measures.PropertiesBuilder;
import org.sonar.api.resources.Resource;
import org.sonar.api.utils.StaxParser;
import org.sonar.api.utils.XmlParserException;
import java.io.File;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.stream.XMLStreamException;
/**
* @since 2.4
*/
public class CqlResultParser {
private static final Logger LOGGER = LoggerFactory.getLogger(CqlResultParser.class);
public void parseReport(File xmlFile, final SensorContext context) {
try {
LOGGER.info("xdepend parsing [{}]",xmlFile);
StaxParser parser = new StaxParser(new StaxParser.XmlStreamHandler() {
public void stream(SMHierarchicCursor rootCursor) throws XMLStreamException {
try {
rootCursor.advance();
parseCQlGroups(rootCursor.descendantElementCursor("Group"), context);
} catch (ParseException e) {
throw new XMLStreamException(e);
}
}
});
parser.parse(xmlFile);
} catch (XMLStreamException e) {
throw new XmlParserException(e);
}
}
private void parseCQlGroups(SMInputCursor cqlGroup, SensorContext context) throws ParseException, XMLStreamException {
while (cqlGroup.getNext() != null) {
LOGGER.info("parsing CQL Group [{}] with status [{}]",cqlGroup.getAttrValue("Name"),cqlGroup.getAttrValue("Status"));
parseCQlQueries(cqlGroup.descendantElementCursor("Query"), context);
}
}
private void parseCQlQueries(SMInputCursor cqlQuery, SensorContext context) throws ParseException, XMLStreamException {
while (cqlQuery.getNext() != null) {
LOGGER.info("parsing CQL Query [{}] with status [{}]",cqlQuery.getAttrValue("Name"),cqlQuery.getAttrValue("Status"));
}
}
}