package net.sourceforge.pmd.renderers; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.RuleViolation; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.text.MessageFormat; import java.util.Iterator; import java.util.Properties; public class PGReport extends AbstractRenderer implements Renderer { public String render(Report report) { try { Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://localhost/pmd"; Properties props = new Properties(); props.setProperty("user","tom"); Connection conn = DriverManager.getConnection(url, props); Statement st = conn.createStatement(); for (Iterator i = report.iterator(); i.hasNext(); ) { RuleViolation rv = (RuleViolation)i.next(); String clean_desc = rv.getDescription().replace('\'', '\"'); Object[] values = {rv.getFilename(), clean_desc, String.valueOf(rv.getNode().getBeginLine())}; String format = "INSERT INTO problems VALUES (''{0}'', ''{1}'', {2})"; String sql = MessageFormat.format(format, values); st.executeUpdate(sql); } st.close(); conn.close(); String result = "Report creation succeeded!"; if (showSuppressedViolations) { result = result + " Incidentally, there are some suppressed violations; those weren't inserted into the database."; } return result; } catch (Exception e){ return "Report created failed: " + e.getMessage(); } } }