ca.uhn.fhir.model.api.BaseResource.java Source code

Java tutorial

Introduction

Here is the source code for ca.uhn.fhir.model.api.BaseResource.java

Source

package ca.uhn.fhir.model.api;

/*
 * #%L
 * HAPI FHIR - Core Library
 * %%
 * Copyright (C) 2014 University Health Network
 * %%
 * Licensed under the Apache 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.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */

import java.util.HashMap;
import java.util.Map;

import ca.uhn.fhir.rest.gclient.StringClientParam;
import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.dstu.composite.ContainedDt;
import ca.uhn.fhir.model.dstu.composite.NarrativeDt;
import ca.uhn.fhir.model.primitive.CodeDt;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.util.ElementUtil;

public abstract class BaseResource extends BaseElement implements IResource {

    /**
     * Search parameter constant for <b>_language</b>
     */
    @SearchParamDefinition(name = "_language", path = "", description = "The language of the resource", type = "string")
    public static final String SP_RES_LANGUAGE = "_language";

    /**
     * Search parameter constant for <b>_id</b>
     */
    @SearchParamDefinition(name = "_id", path = "", description = "The ID of the resource", type = "string")
    public static final String SP_RES_ID = "_id";

    /**
     * <b>Fluent Client</b> search parameter constant for <b>_id</b>
     * <p>
     * Description: <b>the _id of a resource</b><br/>
     * Type: <b>string</b><br/>
     * Path: <b>Resource._id</b><br/>
     * </p>
     */
    public static final StringClientParam RES_ID = new StringClientParam(BaseResource.SP_RES_ID);

    @Child(name = "contained", order = 2, min = 0, max = 1)
    private ContainedDt myContained;

    private IdDt myId;

    @Child(name = "language", order = 0, min = 0, max = Child.MAX_UNLIMITED)
    private CodeDt myLanguage;

    private Map<ResourceMetadataKeyEnum<?>, Object> myResourceMetadata;

    @Child(name = "text", order = 1, min = 0, max = 1)
    private NarrativeDt myText;

    @Override
    public ContainedDt getContained() {
        if (myContained == null) {
            myContained = new ContainedDt();
        }
        return myContained;
    }

    public IdDt getId() {
        if (myId == null) {
            myId = new IdDt();
        }
        return myId;
    }

    @Override
    public CodeDt getLanguage() {
        if (myLanguage == null) {
            myLanguage = new CodeDt();
        }
        return myLanguage;
    }

    @Override
    public Map<ResourceMetadataKeyEnum<?>, Object> getResourceMetadata() {
        if (myResourceMetadata == null) {
            myResourceMetadata = new HashMap<ResourceMetadataKeyEnum<?>, Object>();
        }
        return myResourceMetadata;
    }

    @Override
    public NarrativeDt getText() {
        if (myText == null) {
            myText = new NarrativeDt();
        }
        return myText;
    }

    public void setContained(ContainedDt theContained) {
        myContained = theContained;
    }

    public void setId(IdDt theId) {
        myId = theId;
    }

    public void setId(String theId) {
        if (theId == null) {
            myId = null;
        } else {
            myId = new IdDt(theId);
        }
    }

    @Override
    public void setLanguage(CodeDt theLanguage) {
        myLanguage = theLanguage;
    }

    @Override
    public void setResourceMetadata(Map<ResourceMetadataKeyEnum<?>, Object> theMap) {
        Validate.notNull(theMap, "The Map must not be null");
        myResourceMetadata = theMap;
    }

    public void setText(NarrativeDt theText) {
        myText = theText;
    }

    @Override
    public String toString() {
        ToStringBuilder b = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE);
        b.append("id", getId().toUnqualified());
        return b.toString();
    }

    /**
     * Intended to be called by extending classes {@link #isEmpty()} implementations, returns <code>true</code> if all
     * content in this superclass instance is empty per the semantics of {@link #isEmpty()}.
     */
    @Override
    protected boolean isBaseEmpty() {
        return super.isBaseEmpty() && ElementUtil.isEmpty(myLanguage, myText, myId);
    }

}