private void processEntries()

in archiva-jarinfo/archiva-jarinfo-lib/src/main/java/org/apache/archiva/jarinfo/analysis/JarAnalysis.java [166:214]


    private void processEntries( JarDetails details, JarFile jar )
        throws IOException
    {
        // Entry names
        List<String> entryNames = new ArrayList<String>();

        // Gather up entry names, and sort.
        Enumeration<JarEntry> en = jar.entries();
        while ( en.hasMoreElements() )
        {
            JarEntry entry = en.nextElement();
            entryNames.add( entry.getName() );
        }

        Collections.sort( entryNames, new NaturalLanguageComparator() );

        // Process entries.
        for ( JarEntryVisitor visitor : visitors )
        {
            visitor.visitStart( details, jar );
        }

        for ( String name : entryNames )
        {
            JarEntry jarEntry = jar.getJarEntry( name );
            EntryDetail entry = new EntryDetail();
            entry.setName( jarEntry.getName() );

            Calendar cal = Calendar.getInstance();
            cal.setTimeInMillis( jarEntry.getTime() );
            entry.setTimestamp( cal );
            entry.setDirectory( jarEntry.isDirectory() );

            for ( JarEntryVisitor visitor : visitors )
            {
                visitor.visitJarEntry( entry, jarEntry );
            }

            // Add entry.
            details.addEntry( entry );
        }

        Collections.sort( details.getEntries(), new EntryDetailComparator() );

        for ( JarEntryVisitor visitor : visitors )
        {
            visitor.visitFinished( details, jar );
        }
    }