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

se.cambio.cds.model.instance.ElementInstance Maven / Gradle / Ivy

package se.cambio.cds.model.instance;

import org.openehr.rm.datatypes.basic.DataValue;
import org.openehr.rm.datatypes.text.DvCodedText;

import java.io.Serializable;

public class ElementInstance implements Serializable, Cloneable {

    private static final long serialVersionUID = 2052012L;
    private String id = null;
    private DataValue dataValue = null;
    private DvCodedText nullFlavour = null;
    private ArchetypeReference archetypeReference = null;
    private ContainerInstance containerInstance = null;

    public ElementInstance(
            String id, DataValue dataValue,
            ArchetypeReference archetypeReference,
            ContainerInstance containerInstance,
            DvCodedText nullFlavour) {
        super();
        this.id = id;
        this.dataValue = dataValue;
        this.nullFlavour = nullFlavour;
        this.containerInstance = containerInstance;
        setArchetypeReference(archetypeReference);
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public ArchetypeReference getArchetypeReference() {
        return archetypeReference;
    }

    public void setArchetypeReference(ArchetypeReference archetypeReference) {
        if (this.archetypeReference != null) {
            this.archetypeReference.removeElementInstance(this);
        }
        this.archetypeReference = archetypeReference;
        if (archetypeReference != null) {
            archetypeReference.addElementInstance(this);
        }
    }

    public ContainerInstance getContainerInstance() {
        return containerInstance;
    }

    public void setContainerInstance(ContainerInstance containerInstance) {
        this.containerInstance = containerInstance;
    }

    public DataValue getDataValue() {
        return dataValue;
    }

    public void setDataValue(DataValue dataValue) {
        this.dataValue = dataValue;
    }

    public DvCodedText getNullFlavour() {
        return nullFlavour;
    }

    public void setNullFlavour(DvCodedText nullFlavour) {
        this.nullFlavour = nullFlavour;
    }

    public boolean hasValue() {
        return this.dataValue != null;
    }

    public boolean hasNoValue() {
        return this.dataValue == null;
    }

    public boolean hasNoValue(String gtCodeReference) {
        return hasNoValue(); //We don't care about the code reference (see GeneratedElementInstance)
    }

    @Override
    public ElementInstance clone() {
        try {
            ElementInstance clone = (ElementInstance) super.clone();
            clone.setId(id);
            clone.setDataValue(dataValue);
            clone.archetypeReference = archetypeReference.clone();
            clone.setContainerInstance(containerInstance);
            clone.setNullFlavour(nullFlavour);
            return clone;
        } catch (CloneNotSupportedException ex) {
            throw new RuntimeException(ex);
        }
    }

    public boolean isPredicate() {
        return false;
    }

    @Override
    public String toString() {
        return "id=" + id + "\n"
                + "dataValue=" + dataValue + "\n"
                + "containerInstance=" + containerInstance + "\n"
                + "nullFlavour=" + nullFlavour;
    }
}
/*
 *  ***** BEGIN LICENSE BLOCK *****
 *  Version: MPL 2.0/GPL 2.0/LGPL 2.1
 *
 *  The contents of this file are subject to the Mozilla Public License Version
 *  2.0 (the 'License'); you may not use this file except in compliance with
 *  the License. You may obtain a copy of the License at
 *  http://www.mozilla.org/MPL/
 *
 *  Software distributed under the License is distributed on an 'AS IS' basis,
 *  WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 *  for the specific language governing rights and limitations under the
 *  License.
 *
 *
 *  The Initial Developers of the Original Code are Iago Corbal and Rong Chen.
 *  Portions created by the Initial Developer are Copyright (C) 2012-2013
 *  the Initial Developer. All Rights Reserved.
 *
 *  Contributor(s):
 *
 * Software distributed under the License is distributed on an 'AS IS' basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 *  ***** END LICENSE BLOCK *****
 */




© 2015 - 2025 Weber Informatics LLC | Privacy Policy