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

dev.ikm.elk.snomed.model.Definition Maven / Gradle / Ivy

package dev.ikm.elk.snomed.model;

/*-
 * #%L
 * ELK Integration with SNOMED
 * %%
 * Copyright (C) 2023 Integrated Knowledge Management
 * %%
 * 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.HashSet;
import java.util.Objects;
import java.util.Set;

public class Definition {

	private DefinitionType definitionType;

	private Set superConcepts = new HashSet<>();

	private RoleGroup ungroupedRoles = new RoleGroup();

	private Set roleGroups = new HashSet<>();

	public DefinitionType getDefinitionType() {
		return definitionType;
	}

	public void setDefinitionType(DefinitionType definitionType) {
		this.definitionType = definitionType;
	}

	public Set getSuperConcepts() {
		return superConcepts;
	}

	public void addSuperConcept(Concept superConcept) {
		this.superConcepts.add(superConcept);
	}

	public Set getUngroupedRoles() {
		return ungroupedRoles.getRoles();
	}

	public void addUngroupedRole(Role role) {
		this.ungroupedRoles.addRole(role);
	}

	public Set getUngroupedConcreteRoles() {
		return ungroupedRoles.getConcreteRoles();
	}

	public void addUngroupedConcreteRole(ConcreteRole concreteRole) {
		this.ungroupedRoles.addConcreteRole(concreteRole);
	}

	public Set getRoleGroups() {
		return roleGroups;
	}

	public void addRoleGroup(RoleGroup roleGroup) {
		this.roleGroups.add(roleGroup);
	}

	@Override
	public int hashCode() {
		return Objects.hash(definitionType, roleGroups, superConcepts, ungroupedRoles);
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Definition other = (Definition) obj;
		return definitionType == other.definitionType && Objects.equals(roleGroups, other.roleGroups)
				&& Objects.equals(superConcepts, other.superConcepts)
				&& Objects.equals(ungroupedRoles, other.ungroupedRoles);
	}

	public Definition copy() {
		Definition def = new Definition();
		def.definitionType = this.definitionType;
		def.roleGroups.addAll(this.roleGroups.stream().map(x -> x.copy()).toList());
		def.superConcepts.addAll(this.superConcepts);
		def.ungroupedRoles = this.ungroupedRoles.copy();
		return def;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy