/**
* <copyright>
* </copyright>
*
* $Id$
*/
package com.openMap1.mapper;
import java.util.Map;
import org.eclipse.emf.common.util.DiagnosticChain;
import org.eclipse.emf.common.util.EList;
import com.openMap1.mapper.MappingCondition;
import com.openMap1.mapper.core.MapperException;
import com.openMap1.mapper.core.Xpth;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Cross Condition</b></em>'.
*
* A cross condition relates the values on two different nodes of the structure.
* The right hand value is taken from a node related by an XPath to an object mapping,
* and the left hand mapping is takne from some other tpye of mapping (property, association,
* or association end)
* <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link com.openMap1.mapper.CrossCondition#getRightPath <em>Right Path</em>}</li>
* <li>{@link com.openMap1.mapper.CrossCondition#getRightFunction <em>Right Function</em>}</li>
* <li>{@link com.openMap1.mapper.CrossCondition#getRightPathConditions <em>Right Path Conditions</em>}</li>
* </ul>
* </p>
*
* @see com.openMap1.mapper.MapperPackage#getCrossCondition()
* @model
* @generated
*/
public interface CrossCondition extends MappingCondition {
/**
* Returns the value of the '<em><b>Right Path</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* XPath from an object mapping (of the same class and subset as the
* mapping which is subject to the condition) to some node
* which supplies the value for the right-hand side of the condition
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Right Path</em>' attribute.
* @see #setRightPath(String)
* @see com.openMap1.mapper.MapperPackage#getCrossCondition_RightPath()
* @model
* @generated
*/
String getRightPath();
/**
* Sets the value of the '{@link com.openMap1.mapper.CrossCondition#getRightPath <em>Right Path</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Right Path</em>' attribute.
* @see #getRightPath()
* @generated
*/
void setRightPath(String value);
/**
* Returns the value of the '<em><b>Right Function</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Right Function</em>' attribute isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Right Function</em>' attribute.
* @see #setRightFunction(String)
* @see com.openMap1.mapper.MapperPackage#getCrossCondition_RightFunction()
* @model
* @generated
*/
String getRightFunction();
/**
* Sets the value of the '{@link com.openMap1.mapper.CrossCondition#getRightFunction <em>Right Function</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Right Function</em>' attribute.
* @see #getRightFunction()
* @generated
*/
void setRightFunction(String value);
/**
* Returns the value of the '<em><b>Right Path Conditions</b></em>' containment reference list.
* The list contents are of type {@link com.openMap1.mapper.MappingCondition}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Right Path Conditions</em>' containment reference list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Right Path Conditions</em>' containment reference list.
* @see com.openMap1.mapper.MapperPackage#getCrossCondition_RightPathConditions()
* @model containment="true"
* @generated
*/
EList<MappingCondition> getRightPathConditions();
/**
* <!-- begin-user-doc -->
* Validation check that the XPath from the object mapping node to the node that defines
* the right-hand side of the condition test is a valid XPath
* <!-- end-user-doc -->
* @model diagnosticsDataType="com.openMap1.mapper.DiagnosticChain" contextDataType="com.openMap1.mapper.Map<?, ?>"
* @generated
*/
boolean rightPathIsValid(DiagnosticChain diagnostics, Map<?, ?> context);
/**
* <!-- begin-user-doc -->
* Validation check that the XPath from the object mapping node to the node that defines
* the right-hand side of the condition test can only lead to one node,
* giving a unique value to be tested.
* <!-- end-user-doc -->
* @model diagnosticsDataType="com.openMap1.mapper.DiagnosticChain" contextDataType="com.openMap1.mapper.Map<?, ?>"
* @generated
*/
boolean rightPathGivesUniqueNode(DiagnosticChain diagnostics, Map<?, ?> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model diagnosticsDataType="com.openMap1.mapper.DiagnosticChain" contextDataType="com.openMap1.mapper.Map<?, ?>"
* @generated
*/
boolean rightFunctionIsValid(DiagnosticChain diagnostics, Map<?, ?> context);
/**
* return the XPath from the mapped node to the node
* defining the LHS of the condition
*/
public Xpth getRHSPath() throws MapperException;
} // CrossCondition