/*
* Copyright (c) 2017 OBiBa. All rights reserved.
*
* This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.obiba.magma;
import javax.validation.constraints.NotNull;
/**
* Defines the contract for obtaining a particular {@link Value} from a {@code ValueSet}.
*/
public interface ValueSource {
@NotNull
ValueType getValueType();
/**
* This method should never return null.
*
* @param valueSet
* @return
* @throws IllegalArgumentException when the provided valueSet is for a entityType different than the variable's
* entityType
*/
@NotNull
Value getValue(ValueSet valueSet);
boolean supportVectorSource();
@NotNull
VectorSource asVectorSource() throws VectorSourceNotSupportedException;
}