package alien4cloud.tosca.model; import java.util.List; import java.util.Map; import org.apache.commons.collections4.MapUtils; import com.google.common.collect.Maps; import org.alien4cloud.tosca.model.Csar; import org.alien4cloud.tosca.model.types.ArtifactType; import org.alien4cloud.tosca.model.types.CapabilityType; import org.alien4cloud.tosca.model.types.DataType; import org.alien4cloud.tosca.model.types.NodeType; import org.alien4cloud.tosca.model.types.RelationshipType; import org.alien4cloud.tosca.model.definitions.RepositoryDefinition; import org.alien4cloud.tosca.model.templates.Topology; import lombok.Getter; import lombok.Setter; /** Root object to be de-serialized. */ @Getter @Setter public class ArchiveRoot { /** Contains meta-data related to the actual archive. */ private Csar archive = new Csar(); /** An archive can embed topology template (TOSCA meaning). */ private Topology topology; /** The description of the topology template is not a property of the topology. */ private String topologyTemplateDescription; private List<ArchiveRoot> localImports; private Map<String, RepositoryDefinition> repositories = Maps.newHashMap(); private Map<String, DataType> dataTypes = Maps.newHashMap(); private Map<String, ArtifactType> artifactTypes = Maps.newHashMap(); private Map<String, CapabilityType> capabilityTypes = Maps.newHashMap(); private Map<String, RelationshipType> relationshipTypes = Maps.newHashMap(); private Map<String, NodeType> nodeTypes = Maps.newHashMap(); /** * Indicates if this archive contains tosca types (node types, relationships, capabilities, artifacts). */ public boolean hasToscaTypes() { return MapUtils.isNotEmpty(nodeTypes) || MapUtils.isNotEmpty(relationshipTypes) || MapUtils.isNotEmpty(capabilityTypes) || MapUtils.isNotEmpty(artifactTypes); } /** * Indicates if this archive contains a topology template. */ public boolean hasToscaTopologyTemplate() { return topology != null; } }