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

org.nakedobjects.nos.remote.command.java.JavaCollectionData Maven / Gradle / Ivy

There is a newer version: 3.0.3
Show newest version
package org.nakedobjects.nos.remote.command.java;

import java.io.Serializable;

import org.nakedobjects.noa.adapter.Oid;
import org.nakedobjects.noa.adapter.Version;
import org.nakedobjects.noa.util.ByteDecoder;
import org.nakedobjects.noa.util.ByteEncoder;
import org.nakedobjects.noa.util.Encodable;
import org.nakedobjects.nof.core.util.ToString;
import org.nakedobjects.nof.reflect.remote.data.CollectionData;
import org.nakedobjects.nof.reflect.remote.data.ReferenceData;


public class JavaCollectionData implements CollectionData, Encodable, Serializable {
    private static final long serialVersionUID = 1L;
    private final ReferenceData elements[];
    private final Oid oid;
    private final String collectionType;
    private final Version version;
    private final boolean hasAllElements;
    private final String elementType;

    public JavaCollectionData(
            final Oid oid,
            final String collectionType,
            final String elementType,
            final ReferenceData[] elements,
            final boolean hasAllElements,
            final Version version) {
        this.oid = oid;
        this.collectionType = collectionType;
        this.elementType = elementType;
        this.elements = elements;
        this.hasAllElements = hasAllElements;
        this.version = version;
    }

    public JavaCollectionData(final ByteDecoder decoder) {
        collectionType = decoder.getString();
        elementType = decoder.getString();
        oid = (Oid) decoder.getObject();
        version = (Version) decoder.getObject();
        hasAllElements = decoder.getBoolean();
        elements = (ReferenceData[]) decoder.getObjects();
    }

    public void encode(final ByteEncoder encoder) {
        encoder.add(collectionType);
        encoder.add(elementType);
        encoder.add(oid);
        encoder.add(version);
        encoder.add(hasAllElements);
        encoder.add(elements);
    }

    public ReferenceData[] getElements() {
        return elements;
    }
    
    public String getElementype() {
        return elementType;
    }

    public Oid getOid() {
        return oid;
    }

    public String getType() {
        return collectionType;
    }

    public Version getVersion() {
        return version;
    }

    public boolean hasAllElements() {
        return hasAllElements;
    }

    public String toString() {
        ToString str = new ToString(this);
        str.append("collection type", collectionType);
        str.append("element type", elementType);
        str.append("oid", oid);
        str.append("version", version);
        str.append(",elements=");
        for (int i = 0; elements != null && i < elements.length; i++) {
            if (i > 0) {
                str.append(";");
            }
            if (elements[i] == null) {
                str.append("null");
            } else {
                String name = elements[i].getClass().getName();
                str.append(name.substring(name.lastIndexOf('.') + 1));
            }
        }
        return str.toString();
    }
}
// Copyright (c) Naked Objects Group Ltd.




© 2015 - 2025 Weber Informatics LLC | Privacy Policy