You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by xa...@apache.org on 2008/03/02 11:10:59 UTC

svn commit: r632732 - /ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java

Author: xavier
Date: Sun Mar  2 02:10:40 2008
New Revision: 632732

URL: http://svn.apache.org/viewvc?rev=632732&view=rev
Log:
fix style: extract anonymous inner class to reduce method length

Modified:
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java?rev=632732&r1=632731&r2=632732&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java Sun Mar  2 02:10:40 2008
@@ -46,6 +46,184 @@
 
 public class XmlReportParser {
     private static class SaxXmlReportParser {
+        private final class XmlReportParserHandler extends DefaultHandler {
+            private String organisation;
+
+            private String module;
+
+            private String branch;
+
+            private String revision;
+
+            private int position;
+
+            private Date pubdate;
+
+            private boolean skip;
+
+            private ModuleRevisionId mrid;
+
+            private boolean isDefault;
+
+            private SortedMap revisionsMap = new TreeMap(); // Use a TreeMap to order by
+
+            private List revisionArtifacts = null;
+
+            public void startElement(String uri, String localName, String qName,
+                    Attributes attributes) throws SAXException {
+                if ("module".equals(qName)) {
+                    organisation = attributes.getValue("organisation");
+                    module = attributes.getValue("name");
+                } else if ("revision".equals(qName)) {
+                    revisionArtifacts = new ArrayList();
+                    branch = attributes.getValue("branch");
+                    revision = attributes.getValue("name");
+                    isDefault = Boolean.valueOf(attributes.getValue("default")).booleanValue();
+                    // retrieve position from file. If no position is found, it may be an old
+                    // report generated with a previous version,
+                    // in which case, we put it at the last position
+                    String pos = attributes.getValue("position");
+                    position = pos == null ? getMaxPos() + 1 : Integer.valueOf(pos).intValue();
+                    if (attributes.getValue("error") != null
+                            || attributes.getValue("evicted") != null) {
+                        skip = true;
+                    } else {
+                        revisionsMap.put(new Integer(position), revisionArtifacts);
+                        mrid = ModuleRevisionId.newInstance(organisation, module, branch,
+                            revision, ExtendableItemHelper.getExtraAttributes(attributes,
+                                "extra-"));
+                        mrids.add(mrid);
+                        if (isDefault) {
+                            defaultMrids.add(mrid);
+                        } else {
+                            Artifact metadataArtifact = 
+                                DefaultArtifact.newIvyArtifact(mrid, pubdate);
+                            MetadataArtifactDownloadReport madr = 
+                                new MetadataArtifactDownloadReport(metadataArtifact);
+                            metadataReports.put(mrid, madr);
+                            realMrids.add(mrid);
+                        }
+                        try {
+                            pubdate = Ivy.DATE_FORMAT.parse(attributes.getValue("pubdate"));
+                            skip = false;
+                        } catch (ParseException e) {
+                            throw new IllegalArgumentException("invalid publication date for "
+                                    + organisation + " " + module + " " + revision + ": "
+                                    + attributes.getValue("pubdate"));
+                        }
+                    }
+                } else if ("metadata-artifact".equals(qName)) {
+                    if (skip) {
+                        return;
+                    }
+                    MetadataArtifactDownloadReport madr = 
+                        (MetadataArtifactDownloadReport) metadataReports.get(mrid);
+                    if (madr != null) {
+                        madr.setDownloadStatus(
+                            DownloadStatus.fromString(attributes.getValue("status")));
+                        madr.setDownloadDetails(attributes.getValue("details"));
+                        madr.setSize(Long.parseLong(attributes.getValue("size")));
+                        madr.setDownloadTimeMillis(Long.parseLong(attributes.getValue("time")));
+                        madr.setSearched(parseBoolean(attributes.getValue("searched")));
+                        if (attributes.getValue("location") != null) {
+                            madr.setLocalFile(new File(attributes.getValue("location")));
+                        }
+                        if (attributes.getValue("original-local-location") != null) {
+                            madr.setOriginalLocalFile(
+                                new File(attributes.getValue("original-local-location")));
+                        }
+                        if (attributes.getValue("origin-location") != null) {
+                            if (ArtifactOrigin.UNKNOWN.getLocation().equals(
+                                    attributes.getValue("origin-location"))) {
+                                madr.setArtifactOrigin(ArtifactOrigin.UNKNOWN);
+                            } else {
+                                madr.setArtifactOrigin(
+                                    new ArtifactOrigin(
+                                        parseBoolean(attributes.getValue("origin-is-local")),
+                                        attributes.getValue("origin-location")));
+                            }
+                        }
+                    }
+                } else if ("artifact".equals(qName)) {
+                    if (skip) {
+                        return;
+                    }
+                    String status = attributes.getValue("status");
+                    String artifactName = attributes.getValue("name");
+                    String type = attributes.getValue("type");
+                    String ext = attributes.getValue("ext");
+                    Artifact artifact = new DefaultArtifact(mrid, pubdate, artifactName,
+                            type, ext, ExtendableItemHelper.getExtraAttributes(attributes,
+                                "extra-"));
+                    ArtifactDownloadReport aReport = new ArtifactDownloadReport(artifact);
+                    aReport.setDownloadStatus(DownloadStatus.fromString(status));
+                    aReport.setDownloadDetails(attributes.getValue("details"));
+                    aReport.setSize(Long.parseLong(attributes.getValue("size")));
+                    aReport.setDownloadTimeMillis(Long.parseLong(attributes.getValue("time")));
+                    if (attributes.getValue("location") != null) {
+                        aReport.setLocalFile(new File(attributes.getValue("location")));
+                    }
+                    revisionArtifacts.add(aReport);
+                } else if ("origin-location".equals(qName)) {
+                    if (skip) {
+                        return;
+                    }
+                    ArtifactDownloadReport aReport = (ArtifactDownloadReport) 
+                        revisionArtifacts.get(revisionArtifacts.size() - 1);
+                    
+                    if (ArtifactOrigin.UNKNOWN.getLocation().equals(
+                        attributes.getValue("location"))) {
+                        aReport.setArtifactOrigin(ArtifactOrigin.UNKNOWN);
+                    } else {
+                        aReport.setArtifactOrigin(
+                            new ArtifactOrigin(
+                                parseBoolean(attributes.getValue("is-local")),
+                                attributes.getValue("location")));
+                    }
+                } else if ("info".equals(qName)) {
+                    String organisation = attributes.getValue("organisation");
+                    String name = attributes.getValue("module");
+                    String branch = attributes.getValue("branch");
+                    String revision = attributes.getValue("revision");
+                    Map extraAttributes = new HashMap();
+                    for (int i = 0; i < attributes.getLength(); i++) {
+                        String attName = attributes.getQName(i);
+                        if (attName.startsWith("extra-")) {
+                            String extraAttrName = attName.substring("extra-".length());
+                            String extraAttrValue = attributes.getValue(i);
+                            extraAttributes.put(extraAttrName, extraAttrValue);
+                        }
+                    }
+                    mRevisionId = ModuleRevisionId.newInstance(organisation, name, branch,
+                        revision, extraAttributes);
+                }
+            }
+
+            public void endElement(String uri, String localName, String qname)
+                    throws SAXException {
+                if ("dependencies".equals(qname)) {
+                    // add the artifacts in the correct order
+                    for (Iterator it = revisionsMap.values().iterator(); it.hasNext();) {
+                        List artifactReports = (List) it.next();
+                        SaxXmlReportParser.this.artifactReports.addAll(artifactReports);
+                        for (Iterator iter = artifactReports.iterator(); iter.hasNext();) {
+                            ArtifactDownloadReport artifactReport 
+                                = (ArtifactDownloadReport) iter.next();
+                            if (artifactReport.getDownloadStatus() != DownloadStatus.FAILED) {
+                                artifacts.add(artifactReport.getArtifact());
+                            }
+                        }
+                        
+                    }
+                }
+            }
+
+            private int getMaxPos() {
+                return revisionsMap.isEmpty() ? -1 : ((Integer) revisionsMap.keySet()
+                        .toArray()[revisionsMap.size() - 1]).intValue();
+            }
+        }
+
         private List/*<ModuleRevisionId>*/ mrids;
 
         private List/*<ModuleRevisionId>*/ defaultMrids;
@@ -74,185 +252,7 @@
 
         public void parse() throws Exception {
             SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
-            saxParser.parse(report, new DefaultHandler() {
-                private String organisation;
-
-                private String module;
-
-                private String branch;
-
-                private String revision;
-
-                private int position;
-
-                private Date pubdate;
-
-                private boolean skip;
-
-                private ModuleRevisionId mrid;
-
-                private boolean isDefault;
-
-                private SortedMap revisionsMap = new TreeMap(); // Use a TreeMap to order by
-
-                // position (position = key)
-
-                private List revisionArtifacts = null;
-
-                public void startElement(String uri, String localName, String qName,
-                        Attributes attributes) throws SAXException {
-                    if ("module".equals(qName)) {
-                        organisation = attributes.getValue("organisation");
-                        module = attributes.getValue("name");
-                    } else if ("revision".equals(qName)) {
-                        revisionArtifacts = new ArrayList();
-                        branch = attributes.getValue("branch");
-                        revision = attributes.getValue("name");
-                        isDefault = Boolean.valueOf(attributes.getValue("default")).booleanValue();
-                        // retrieve position from file. If no position is found, it may be an old
-                        // report generated with a previous version,
-                        // in which case, we put it at the last position
-                        String pos = attributes.getValue("position");
-                        position = pos == null ? getMaxPos() + 1 : Integer.valueOf(pos).intValue();
-                        if (attributes.getValue("error") != null
-                                || attributes.getValue("evicted") != null) {
-                            skip = true;
-                        } else {
-                            revisionsMap.put(new Integer(position), revisionArtifacts);
-                            mrid = ModuleRevisionId.newInstance(organisation, module, branch,
-                                revision, ExtendableItemHelper.getExtraAttributes(attributes,
-                                    "extra-"));
-                            mrids.add(mrid);
-                            if (isDefault) {
-                                defaultMrids.add(mrid);
-                            } else {
-                                Artifact metadataArtifact = 
-                                    DefaultArtifact.newIvyArtifact(mrid, pubdate);
-                                MetadataArtifactDownloadReport madr = 
-                                    new MetadataArtifactDownloadReport(metadataArtifact);
-                                metadataReports.put(mrid, madr);
-                                realMrids.add(mrid);
-                            }
-                            try {
-                                pubdate = Ivy.DATE_FORMAT.parse(attributes.getValue("pubdate"));
-                                skip = false;
-                            } catch (ParseException e) {
-                                throw new IllegalArgumentException("invalid publication date for "
-                                        + organisation + " " + module + " " + revision + ": "
-                                        + attributes.getValue("pubdate"));
-                            }
-                        }
-                    } else if ("metadata-artifact".equals(qName)) {
-                        if (skip) {
-                            return;
-                        }
-                        MetadataArtifactDownloadReport madr = 
-                            (MetadataArtifactDownloadReport) metadataReports.get(mrid);
-                        if (madr != null) {
-                            madr.setDownloadStatus(
-                                DownloadStatus.fromString(attributes.getValue("status")));
-                            madr.setDownloadDetails(attributes.getValue("details"));
-                            madr.setSize(Long.parseLong(attributes.getValue("size")));
-                            madr.setDownloadTimeMillis(Long.parseLong(attributes.getValue("time")));
-                            madr.setSearched(parseBoolean(attributes.getValue("searched")));
-                            if (attributes.getValue("location") != null) {
-                                madr.setLocalFile(new File(attributes.getValue("location")));
-                            }
-                            if (attributes.getValue("original-local-location") != null) {
-                                madr.setOriginalLocalFile(
-                                    new File(attributes.getValue("original-local-location")));
-                            }
-                            if (attributes.getValue("origin-location") != null) {
-                                if (ArtifactOrigin.UNKNOWN.getLocation().equals(
-                                        attributes.getValue("origin-location"))) {
-                                    madr.setArtifactOrigin(ArtifactOrigin.UNKNOWN);
-                                } else {
-                                    madr.setArtifactOrigin(
-                                        new ArtifactOrigin(
-                                            parseBoolean(attributes.getValue("origin-is-local")),
-                                            attributes.getValue("origin-location")));
-                                }
-                            }
-                        }
-                    } else if ("artifact".equals(qName)) {
-                        if (skip) {
-                            return;
-                        }
-                        String status = attributes.getValue("status");
-                        String artifactName = attributes.getValue("name");
-                        String type = attributes.getValue("type");
-                        String ext = attributes.getValue("ext");
-                        Artifact artifact = new DefaultArtifact(mrid, pubdate, artifactName,
-                                type, ext, ExtendableItemHelper.getExtraAttributes(attributes,
-                                    "extra-"));
-                        ArtifactDownloadReport aReport = new ArtifactDownloadReport(artifact);
-                        aReport.setDownloadStatus(DownloadStatus.fromString(status));
-                        aReport.setDownloadDetails(attributes.getValue("details"));
-                        aReport.setSize(Long.parseLong(attributes.getValue("size")));
-                        aReport.setDownloadTimeMillis(Long.parseLong(attributes.getValue("time")));
-                        if (attributes.getValue("location") != null) {
-                            aReport.setLocalFile(new File(attributes.getValue("location")));
-                        }
-                        revisionArtifacts.add(aReport);
-                    } else if ("origin-location".equals(qName)) {
-                        if (skip) {
-                            return;
-                        }
-                        ArtifactDownloadReport aReport = (ArtifactDownloadReport) 
-                            revisionArtifacts.get(revisionArtifacts.size() - 1);
-                        
-                        if (ArtifactOrigin.UNKNOWN.getLocation().equals(
-                            attributes.getValue("location"))) {
-                            aReport.setArtifactOrigin(ArtifactOrigin.UNKNOWN);
-                        } else {
-                            aReport.setArtifactOrigin(
-                                new ArtifactOrigin(
-                                    parseBoolean(attributes.getValue("is-local")),
-                                    attributes.getValue("location")));
-                        }
-                    } else if ("info".equals(qName)) {
-                        String organisation = attributes.getValue("organisation");
-                        String name = attributes.getValue("module");
-                        String branch = attributes.getValue("branch");
-                        String revision = attributes.getValue("revision");
-                        Map extraAttributes = new HashMap();
-                        for (int i = 0; i < attributes.getLength(); i++) {
-                            String attName = attributes.getQName(i);
-                            if (attName.startsWith("extra-")) {
-                                String extraAttrName = attName.substring("extra-".length());
-                                String extraAttrValue = attributes.getValue(i);
-                                extraAttributes.put(extraAttrName, extraAttrValue);
-                            }
-                        }
-                        mRevisionId = ModuleRevisionId.newInstance(organisation, name, branch,
-                            revision, extraAttributes);
-                    }
-                }
-
-                public void endElement(String uri, String localName, String qname)
-                        throws SAXException {
-                    if ("dependencies".equals(qname)) {
-                        // add the artifacts in the correct order
-                        for (Iterator it = revisionsMap.values().iterator(); it.hasNext();) {
-                            List artifactReports = (List) it.next();
-                            SaxXmlReportParser.this.artifactReports.addAll(artifactReports);
-                            for (Iterator iter = artifactReports.iterator(); iter.hasNext();) {
-                                ArtifactDownloadReport artifactReport 
-                                    = (ArtifactDownloadReport) iter.next();
-                                if (artifactReport.getDownloadStatus() != DownloadStatus.FAILED) {
-                                    artifacts.add(artifactReport.getArtifact());
-                                }
-                            }
-                            
-                        }
-                    }
-                }
-
-                private int getMaxPos() {
-                    return revisionsMap.isEmpty() ? -1 : ((Integer) revisionsMap.keySet()
-                            .toArray()[revisionsMap.size() - 1]).intValue();
-                }
-            });
+            saxParser.parse(report, new XmlReportParserHandler());
         }
         
         private static boolean parseBoolean(String str) {