All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nakedobjects.metamodel.adapter.NakedObjectList Maven / Gradle / Ivy

There is a newer version: 4.0-beta-1
Show newest version
package org.nakedobjects.metamodel.adapter;

import java.util.AbstractList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;

import org.apache.commons.collections.iterators.IteratorEnumeration;
import org.nakedobjects.metamodel.commons.lang.ToString;
import org.nakedobjects.metamodel.spec.NakedObjectSpecification;


public class NakedObjectList extends AbstractList {
    
    private final List instances;
    private final NakedObjectSpecification instanceSpecification;

    public NakedObjectList(final NakedObjectSpecification instanceSpecification, final NakedObject[] instances) {
        this.instanceSpecification = instanceSpecification;
        this.instances = Collections.unmodifiableList(Arrays.asList(instances));
    }

    /**
     * Required implementation of {@link AbstractList}.
     */
    @Override
    public NakedObject get(int index) {
        return instances.get(index);
    }

    /**
     * Required implementation of {@link AbstractList}.
     */
    @Override
    public int size() {
        return instances.size();
    }


    /**
     * @deprecated - use {@link #iterator()}.
     */
    @SuppressWarnings("unchecked")
    @Deprecated
    public Enumeration elements() {
        return new IteratorEnumeration(iterator());
    }

    public NakedObjectSpecification getElementSpecification() {
        return instanceSpecification;
    }


    public String titleString() {
        return instanceSpecification.getPluralName() + ", " + size();
    }

    @Override
    public String toString() {
        final ToString s = new ToString(this);
        s.append("elements", instanceSpecification.getFullName());

        // title
        String title;
        try {
            title = "'" + this.titleString() + "'";
        } catch (final NullPointerException e) {
            title = "none";
        }
        s.append("title", title);

        s.append("vector", instances);

        return s.toString();
    }
    
}

// Copyright (c) Naked Objects Group Ltd.




© 2015 - 2024 Weber Informatics LLC | Privacy Policy