/* * The contents of this file are subject to the OpenMRS 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://license.openmrs.org * * 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. * * Copyright (C) OpenHMIS. All Rights Reserved. */ package org.openmrs.module.webservices.rest.resource; import org.openmrs.OpenmrsMetadata; import org.openmrs.module.openhmis.commons.api.entity.model.IAttribute; import org.openmrs.module.openhmis.commons.api.entity.model.ICustomizable; import org.openmrs.module.webservices.rest.web.representation.RefRepresentation; import org.openmrs.module.webservices.rest.web.representation.Representation; import org.openmrs.module.webservices.rest.web.resource.impl.DelegatingResourceDescription; import java.util.HashSet; import java.util.List; // @formatter:off /** * REST resource for {@link org.openmrs.OpenmrsMetadata} * {@link org.openmrs.module.openhmis.commons.api.entity.model.ICustomizable}s. * @param <E> The customizable model class * @param <TAttribute> The model attribute class */ public abstract class BaseRestCustomizableMetadataResource< E extends ICustomizable<TAttribute> & OpenmrsMetadata, TAttribute extends IAttribute<E, ?>> extends BaseRestMetadataResource<E> { // @formatter:on @Override public DelegatingResourceDescription getRepresentationDescription(Representation rep) { DelegatingResourceDescription description = super.getRepresentationDescription(rep); if (!(rep instanceof RefRepresentation)) { description.addProperty("attributes"); } return description; } protected void baseSetAttributes(E instance, List<TAttribute> attributes) { if (instance.getAttributes() == null) { instance.setAttributes(new HashSet<TAttribute>()); } BaseRestDataResource.syncCollection(instance.getAttributes(), attributes); for (TAttribute attribute : instance.getAttributes()) { attribute.setOwner(instance); } } }