edu.cornell.mannlib.vitro.webapp.beans.VClassGroup.java Source code

Java tutorial

Introduction

Here is the source code for edu.cornell.mannlib.vitro.webapp.beans.VClassGroup.java

Source

/* $This file is distributed under the terms of the license in /doc/license.txt$ */

package edu.cornell.mannlib.vitro.webapp.beans;

import java.text.Collator;
import java.util.AbstractCollection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class VClassGroup extends LinkedList<VClass> implements Comparable<VClassGroup> {

    private static final Log log = LogFactory.getLog(VClassGroup.class.getName());

    private String URI = null;
    private String namespace = null;
    private String localName = null;
    private String publicName = null;
    private int displayRank = -1;
    private int individualCount = -1;

    public boolean isIndividualCountSet() {
        return individualCount >= 0;
    }

    public int getIndividualCount() {
        return individualCount;
    }

    public void setIndividualCount(int individualCount) {
        this.individualCount = individualCount;
    }

    public int getDisplayRank() {
        return displayRank;
    }

    public void setDisplayRank(int displayRank) {
        this.displayRank = displayRank;
    }

    public VClassGroup() {
        super();
    }

    public VClassGroup(String uri, String name) {
        this(uri, name, 0);
    }

    public VClassGroup(String uri, String name, int rank) {
        super();
        this.URI = uri;
        BaseResourceBean theURI = new BaseResourceBean(uri);
        this.namespace = theURI.getNamespace();
        this.localName = theURI.getLocalName();
        this.displayRank = rank;
        this.publicName = name;
    }

    public VClassGroup(VClassGroup vcg) {
        this.URI = vcg.URI;
        this.namespace = vcg.namespace;
        this.localName = vcg.localName;
        this.publicName = vcg.publicName;
        this.displayRank = vcg.displayRank;
        this.individualCount = vcg.individualCount;
    }

    public String getURI() {
        return URI;
    }

    public void setURI(String URI) {
        this.URI = URI;
    }

    public String getNamespace() {
        return namespace;
    }

    public void setNamespace(String ns) {
        this.namespace = ns;
    }

    public String getLocalName() {
        return localName;
    }

    public void setLocalName(String ln) {
        this.localName = ln;
    }

    public String getPublicName() {
        return publicName;
    }

    public void setPublicName(String name) {
        this.publicName = name;
    }

    public void setVitroClassList(List<VClass> list) {
        this.clear();
        this.addAll(list);
    }

    public List<VClass> getVitroClassList() {
        return this;
    }

    public boolean equals(Object obj) {
        if (obj instanceof VClassGroup) {
            VClassGroup other = (VClassGroup) obj;
            return other.getURI().equals(this.getURI());
        } else {
            return super.equals(obj);
        }
    }

    public int hashCode() {
        return this.getURI().hashCode();
    }

    public String toString() {
        return getPublicName() + " URI(" + getURI() + ") with " + size();
    }

    public static void removeEmptyClassGroups(Map groups) {
        if (groups == null)
            return;

        List keysToRemove = new LinkedList();

        Iterator it = groups.keySet().iterator();
        while (it.hasNext()) {
            Object key = it.next();
            Object grp = groups.get(key);
            if (grp != null && grp instanceof AbstractCollection) {
                if (((AbstractCollection) grp).isEmpty())
                    keysToRemove.add(key);
            }
        }

        it = keysToRemove.iterator();
        while (it.hasNext()) {
            groups.remove(it.next());
        }
    }

    /**
     * Sorts VClassGroup objects by group rank, then alphanumeric.
     * @author bdc34 modified by jc55, bjl23
     * @return a negative integer, zero, or a positive integer as the
     *         first argument is less than, equal to, or greater than the
     *         second. 
     */
    public int compareTo(VClassGroup o2) {
        Collator collator = Collator.getInstance();
        if (o2 == null) {
            log.error("object NULL in DisplayComparator()");
            return 0;
        }
        int diff = (this.getDisplayRank() - o2.getDisplayRank());
        if (diff == 0) {

            //put null public name classgrups at end of list
            if (this.getPublicName() == null) {
                if (o2.getPublicName() == null)
                    return 0; //or maybe collator.compare(this.getURI(),o2.getURI()) ???
                else
                    return 1;
            } else if (o2.getPublicName() == null) {
                return -1;
            } else {
                return collator.compare(this.getPublicName(), o2.getPublicName());
            }
        }
        return diff;
    }

}