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

com.nedap.archie.rm.datavalues.TermMapping Maven / Gradle / Ivy

package com.nedap.archie.rm.datavalues;

import com.google.common.collect.Sets;
import com.nedap.archie.rm.RMObject;
import com.nedap.archie.rm.datatypes.CodePhrase;
import com.nedap.archie.rminfo.Invariant;
import com.nedap.archie.rmutil.InvariantUtil;
import com.nedap.archie.xml.adapters.TermMappingMatchAdapter;

import javax.annotation.Nullable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;

/**
 * Created by pieter.bos on 04/11/15.
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TERM_MAPPING", propOrder = {
        "match",
        "purpose",
        "target"
})
public class TermMapping extends RMObject {

    private static final Set VALID_MATCH_CODES = Sets.newHashSet('<', '=', '>', '?');
    /**
     * This is an interesting one, that could be implemented with an enum
     * //TODO: look at it
     * 
*
<
*
narrower term
*
=
equals term
*
>
broader term
*
?
the kind of mapping is unknown
*
*/ @XmlJavaTypeAdapter(TermMappingMatchAdapter.class) private Character match = '?'; @Nullable private DvCodedText purpose; private CodePhrase target; public TermMapping() { } public TermMapping(CodePhrase target, Character match, @Nullable DvCodedText purpose) { this.match = match; this.purpose = purpose; this.target = target; } public char getMatch() { return match; } public void setMatch(char match) { this.match = match; } @Nullable public DvCodedText getPurpose() { return purpose; } public void setPurpose(@Nullable DvCodedText purpose) { this.purpose = purpose; } public CodePhrase getTarget() { return target; } public void setTarget(CodePhrase target) { this.target = target; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; TermMapping that = (TermMapping) o; return Objects.equals(match, that.match) && Objects.equals(purpose, that.purpose) && Objects.equals(target, that.target); } @Override public int hashCode() { return Objects.hash(match, purpose, target); } @Invariant("Purpose_valid") public boolean purposeValid() { return InvariantUtil.belongsToTerminologyByGroupId(purpose, "term mapping purpose"); } @Invariant("Match_valid") public boolean matchValid() { return match == null || VALID_MATCH_CODES.contains(match); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy