/** * <copyright> *******************************************************************************/ package noreflectioncompany; import java.util.Map; import org.eclipse.emf.common.util.DiagnosticChain; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; /** * <!-- begin-user-doc --> * A representation of the model object '<em><b>Employee</b></em>'. * <!-- end-user-doc --> * * <p> * The following features are supported: * <ul> * <li>{@link noreflectioncompany.Employee#getName <em>Name</em>}</li> * <li>{@link noreflectioncompany.Employee#getManager <em>Manager</em>}</li> * <li>{@link noreflectioncompany.Employee#getCompany <em>Company</em>}</li> * <li>{@link noreflectioncompany.Employee#getDirectReports <em>Direct Reports</em>}</li> * <li>{@link noreflectioncompany.Employee#getAllReports <em>All Reports</em>}</li> * <li>{@link noreflectioncompany.Employee#getReportingChain <em>Reporting Chain</em>}</li> * <li>{@link noreflectioncompany.Employee#isHasNameAsAttribute <em>Has Name As Attribute</em>}</li> * </ul> * </p> * * @see noreflectioncompany.NoreflectioncompanyPackage#getEmployee() * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='mustHaveName'" * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL mustHaveName='not name.oclIsUndefined() and hasNameAsAttribute and hasNameAsOperation()'" * @generated */ public interface Employee extends EObject { /** * Returns the value of the '<em><b>Name</b></em>' attribute. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Name</em>' attribute isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>Name</em>' attribute. * @see #setName(String) * @see noreflectioncompany.NoreflectioncompanyPackage#getEmployee_Name() * @model * @generated */ String getName(); /** * Sets the value of the '{@link noreflectioncompany.Employee#getName <em>Name</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @param value the new value of the '<em>Name</em>' attribute. * @see #getName() * @generated */ void setName(String value); /** * Returns the value of the '<em><b>Manager</b></em>' reference. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Manager</em>' reference isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>Manager</em>' reference. * @see #setManager(Employee) * @see noreflectioncompany.NoreflectioncompanyPackage#getEmployee_Manager() * @model * @generated */ Employee getManager(); /** * Sets the value of the '{@link noreflectioncompany.Employee#getManager <em>Manager</em>}' reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @param value the new value of the '<em>Manager</em>' reference. * @see #getManager() * @generated */ void setManager(Employee value); /** * Returns the value of the '<em><b>Company</b></em>' container reference. * It is bidirectional and its opposite is '{@link noreflectioncompany.Company#getEmployees <em>Employees</em>}'. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Company</em>' container reference isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>Company</em>' container reference. * @see #setCompany(Company) * @see noreflectioncompany.NoreflectioncompanyPackage#getEmployee_Company() * @see noreflectioncompany.Company#getEmployees * @model opposite="employees" required="true" transient="false" * @generated */ Company getCompany(); /** * Sets the value of the '{@link noreflectioncompany.Employee#getCompany <em>Company</em>}' container reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @param value the new value of the '<em>Company</em>' container reference. * @see #getCompany() * @generated */ void setCompany(Company value); /** * Returns the value of the '<em><b>Direct Reports</b></em>' reference list. * The list contents are of type {@link noreflectioncompany.Employee}. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Direct Reports</em>' reference list isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>Direct Reports</em>' reference list. * @see noreflectioncompany.NoreflectioncompanyPackage#getEmployee_DirectReports() * @model transient="true" changeable="false" volatile="true" derived="true" * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL derivation='company.employees->select(manager = self)'" * @generated */ EList<Employee> getDirectReports(); /** * Returns the value of the '<em><b>All Reports</b></em>' reference list. * The list contents are of type {@link noreflectioncompany.Employee}. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>All Reports</em>' reference list isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>All Reports</em>' reference list. * @see noreflectioncompany.NoreflectioncompanyPackage#getEmployee_AllReports() * @model transient="true" changeable="false" volatile="true" derived="true" ordered="false" * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL derivation='Employee.allInstances()->select(reportsTo(self))'" * @generated */ EList<Employee> getAllReports(); /** * Returns the value of the '<em><b>Reporting Chain</b></em>' reference list. * The list contents are of type {@link noreflectioncompany.Employee}. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Reporting Chain</em>' reference list isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>Reporting Chain</em>' reference list. * @see noreflectioncompany.NoreflectioncompanyPackage#getEmployee_ReportingChain() * @model transient="true" changeable="false" volatile="true" derived="true" * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL derivation='if (manager.oclIsUndefined()) then\r OrderedSet{}\relse\r manager.reportingChain->prepend(manager)\rendif'" * @generated */ EList<Employee> getReportingChain(); /** * Returns the value of the '<em><b>Has Name As Attribute</b></em>' attribute. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Has Name As Attribute</em>' attribute isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>Has Name As Attribute</em>' attribute. * @see noreflectioncompany.NoreflectioncompanyPackage#getEmployee_HasNameAsAttribute() * @model transient="true" changeable="false" volatile="true" derived="true" * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL derivation='name <> null'" * @generated */ boolean isHasNameAsAttribute(); /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @model required="true" * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL body='self.reportingChain->includes(manager)'" * @generated */ boolean reportsTo(Employee manager); /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @model required="true" * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL body='manager.oclIsUndefined() implies directReports->size() > 0'" * @generated */ boolean noManagerImpliesDirectReports(DiagnosticChain diagnostics, Map<Object, Object> context); /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @model required="true" * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL body='name <> null'" * @generated */ boolean hasNameAsOperation(); } // Employee