Example usage for org.apache.commons.collections.map DefaultedMap DefaultedMap

List of usage examples for org.apache.commons.collections.map DefaultedMap DefaultedMap

Introduction

In this page you can find the example usage for org.apache.commons.collections.map DefaultedMap DefaultedMap.

Prototype

public DefaultedMap(Object defaultValue) 

Source Link

Document

Constructs a new empty DefaultedMap that decorates a HashMap.

Usage

From source file:jinex.JarMetadataLoader.java

public void load(Transaction tx) throws Exception {

    String jarRow = "jar:" + jarInfo.getHash();

    if (tx.get(jarRow, new Column("count", "classes")) == null) {
        // have never seen this jar before
        tx.set(jarRow, new Column("count", "classes"), jarInfo.getClasses().size() + "");

        Map<String, Integer> pkgRefCounts = new DefaultedMap(new Integer(0));

        for (ClassMetadata classInfo : jarInfo.getClasses()) {
            String classRow = "class:" + classInfo.getName();

            if (tx.get(classRow, new Column(classInfo.getHash(), "deps")) == null) {
                // have never seen this class before, so add its dependencies
                tx.set(classRow, new Column(classInfo.getHash(), "deps"),
                        classInfo.getClassDependencies().size() + "");

                Set<String> deps = new HashSet<String>(classInfo.getClassDependencies());

                //remove existing deps
                RowIterator depIter = tx
                        .get(new ScannerConfiguration().setRange(Range.exact(classRow, "deps")));
                if (depIter.hasNext()) {
                    ColumnIterator colIter = depIter.next().getValue();
                    while (colIter.hasNext()) {
                        String existingDep = colIter.next().getKey().getQualifier().toString();
                        deps.remove(existingDep);
                    }/*from  w w w  .j  a  va2s .com*/
                }

                String packageName = getParent(classInfo.getName());

                //new dependencies for this class
                for (String dep : deps) {
                    tx.set(classRow, new Column("deps", dep), "");
                    if (packageName != null) {
                        String pkgRefCountRow = "prc:" + packageName + ":" + dep;
                        int pkgRefCount = pkgRefCounts.get(pkgRefCountRow);
                        pkgRefCounts.put(pkgRefCountRow, pkgRefCount + 1);
                    }
                }

            }

        }

        for (Entry<String, Integer> entry : pkgRefCounts.entrySet()) {
            String pkgRefCountRow = entry.getKey();
            ByteSequence currCountBS = tx.get(pkgRefCountRow, new Column("prcount", "update"));
            int pkgRefCount = entry.getValue();
            if (currCountBS != null)
                pkgRefCount += Integer.parseInt(currCountBS.toString());
            tx.set(pkgRefCountRow, new Column("prcount", "update"), pkgRefCount + "");
        }
    }

    // is this jar name known?
    if (tx.get(jarRow, new Column("names", jarInfo.getName())) == null) {
        tx.set(jarRow, new Column("names", jarInfo.getName()), "");
    }

}