(ResourceFolder.class, this, PepperPackage.ORGANIZATION__OWNED_RESOURCE_FOLDERS);
+ }
+ return ownedResourceFolders;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PepperPackage.ORGANIZATION__OWNED_PROJECTS:
+ return ((InternalEList>) getOwnedProjects()).basicRemove(otherEnd, msgs);
+ case PepperPackage.ORGANIZATION__OWNED_RESOURCE_FOLDERS:
+ return ((InternalEList>) getOwnedResourceFolders()).basicRemove(otherEnd, msgs);
+ default:
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.ORGANIZATION__NAME:
+ return getName();
+ case PepperPackage.ORGANIZATION__OWNED_PROJECTS:
+ return getOwnedProjects();
+ case PepperPackage.ORGANIZATION__OWNED_RESOURCE_FOLDERS:
+ return getOwnedResourceFolders();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.ORGANIZATION__NAME:
+ setName((String) newValue);
+ return;
+ case PepperPackage.ORGANIZATION__OWNED_PROJECTS:
+ getOwnedProjects().clear();
+ getOwnedProjects().addAll((Collection extends Project>) newValue);
+ return;
+ case PepperPackage.ORGANIZATION__OWNED_RESOURCE_FOLDERS:
+ getOwnedResourceFolders().clear();
+ getOwnedResourceFolders().addAll((Collection extends ResourceFolder>) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.ORGANIZATION__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PepperPackage.ORGANIZATION__OWNED_PROJECTS:
+ getOwnedProjects().clear();
+ return;
+ case PepperPackage.ORGANIZATION__OWNED_RESOURCE_FOLDERS:
+ getOwnedResourceFolders().clear();
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.ORGANIZATION__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PepperPackage.ORGANIZATION__OWNED_PROJECTS:
+ return ownedProjects != null && !ownedProjects.isEmpty();
+ case PepperPackage.ORGANIZATION__OWNED_RESOURCE_FOLDERS:
+ return ownedResourceFolders != null && !ownedResourceFolders.isEmpty();
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} // OrganizationImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/PepperFactoryImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/PepperFactoryImpl.java
new file mode 100644
index 0000000..3192a22
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/PepperFactoryImpl.java
@@ -0,0 +1,540 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import pepper.peppermm.*;
+
+/**
+ * An implementation of the model Factory.
+ *
+ * @generated
+ */
+public class PepperFactoryImpl extends EFactoryImpl implements PepperFactory {
+ /**
+ * Creates the default factory implementation.
+ *
+ * @generated
+ */
+ public static PepperFactory init() {
+ try {
+ PepperFactory thePepperFactory = (PepperFactory) EPackage.Registry.INSTANCE.getEFactory(PepperPackage.eNS_URI);
+ if (thePepperFactory != null) {
+ return thePepperFactory;
+ }
+ } catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new PepperFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ *
+ * @generated
+ */
+ public PepperFactoryImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case PepperPackage.ORGANIZATION:
+ return createOrganization();
+ case PepperPackage.RESOURCE_FOLDER:
+ return createResourceFolder();
+ case PepperPackage.TEAM:
+ return createTeam();
+ case PepperPackage.INTERNAL_STAKEHOLDER:
+ return createInternalStakeholder();
+ case PepperPackage.EXTERNAL_STAKEHOLDER:
+ return createExternalStakeholder();
+ case PepperPackage.PERSON:
+ return createPerson();
+ case PepperPackage.TAG_FOLDER:
+ return createTagFolder();
+ case PepperPackage.TASK_TAG:
+ return createTaskTag();
+ case PepperPackage.TASK:
+ return createTask();
+ case PepperPackage.OBJECTIVE:
+ return createObjective();
+ case PepperPackage.KEY_RESULT:
+ return createKeyResult();
+ case PepperPackage.PROJECT:
+ return createProject();
+ case PepperPackage.WORKPACKAGE:
+ return createWorkpackage();
+ case PepperPackage.WORKPACKAGE_ARTEFACT:
+ return createWorkpackageArtefact();
+ case PepperPackage.RISK:
+ return createRisk();
+ case PepperPackage.DEPENDENCY_LINK:
+ return createDependencyLink();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case PepperPackage.PROJECT_STATE:
+ return createProjectStateFromString(eDataType, initialValue);
+ case PepperPackage.RISK_KIND:
+ return createRiskKindFromString(eDataType, initialValue);
+ case PepperPackage.RISK_STATE:
+ return createRiskStateFromString(eDataType, initialValue);
+ case PepperPackage.WORKPACKAGE_ARTEFACT_NATURE:
+ return createWorkpackageArtefactNatureFromString(eDataType, initialValue);
+ case PepperPackage.START_OR_END:
+ return createStartOrEndFromString(eDataType, initialValue);
+ case PepperPackage.TASK_TIME_BOUNDARIES_CONSTRAINT:
+ return createTaskTimeBoundariesConstraintFromString(eDataType, initialValue);
+ case PepperPackage.DATE:
+ return createDateFromString(eDataType, initialValue);
+ case PepperPackage.INSTANT:
+ return createInstantFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case PepperPackage.PROJECT_STATE:
+ return convertProjectStateToString(eDataType, instanceValue);
+ case PepperPackage.RISK_KIND:
+ return convertRiskKindToString(eDataType, instanceValue);
+ case PepperPackage.RISK_STATE:
+ return convertRiskStateToString(eDataType, instanceValue);
+ case PepperPackage.WORKPACKAGE_ARTEFACT_NATURE:
+ return convertWorkpackageArtefactNatureToString(eDataType, instanceValue);
+ case PepperPackage.START_OR_END:
+ return convertStartOrEndToString(eDataType, instanceValue);
+ case PepperPackage.TASK_TIME_BOUNDARIES_CONSTRAINT:
+ return convertTaskTimeBoundariesConstraintToString(eDataType, instanceValue);
+ case PepperPackage.DATE:
+ return convertDateToString(eDataType, instanceValue);
+ case PepperPackage.INSTANT:
+ return convertInstantToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Organization createOrganization() {
+ OrganizationImpl organization = new OrganizationImpl();
+ return organization;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public ResourceFolder createResourceFolder() {
+ ResourceFolderImpl resourceFolder = new ResourceFolderImpl();
+ return resourceFolder;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Team createTeam() {
+ TeamImpl team = new TeamImpl();
+ return team;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public InternalStakeholder createInternalStakeholder() {
+ InternalStakeholderImpl internalStakeholder = new InternalStakeholderImpl();
+ return internalStakeholder;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public ExternalStakeholder createExternalStakeholder() {
+ ExternalStakeholderImpl externalStakeholder = new ExternalStakeholderImpl();
+ return externalStakeholder;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Person createPerson() {
+ PersonImpl person = new PersonImpl();
+ return person;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public TagFolder createTagFolder() {
+ TagFolderImpl tagFolder = new TagFolderImpl();
+ return tagFolder;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public TaskTag createTaskTag() {
+ TaskTagImpl taskTag = new TaskTagImpl();
+ return taskTag;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Task createTask() {
+ TaskImpl task = new TaskImpl();
+ return task;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Objective createObjective() {
+ ObjectiveImpl objective = new ObjectiveImpl();
+ return objective;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public KeyResult createKeyResult() {
+ KeyResultImpl keyResult = new KeyResultImpl();
+ return keyResult;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Project createProject() {
+ ProjectImpl project = new ProjectImpl();
+ return project;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Workpackage createWorkpackage() {
+ WorkpackageImpl workpackage = new WorkpackageImpl();
+ return workpackage;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public WorkpackageArtefact createWorkpackageArtefact() {
+ WorkpackageArtefactImpl workpackageArtefact = new WorkpackageArtefactImpl();
+ return workpackageArtefact;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Risk createRisk() {
+ RiskImpl risk = new RiskImpl();
+ return risk;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public DependencyLink createDependencyLink() {
+ DependencyLinkImpl dependencyLink = new DependencyLinkImpl();
+ return dependencyLink;
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ public WorkpackageArtefactNature createWorkpackageArtefactNatureFromString(EDataType eDataType, String initialValue) {
+ WorkpackageArtefactNature result = WorkpackageArtefactNature.get(initialValue);
+ // if (result == null)
+ // throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" +
+ // eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public String convertWorkpackageArtefactNatureToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public StartOrEnd createStartOrEndFromString(EDataType eDataType, String initialValue) {
+ StartOrEnd result = StartOrEnd.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public String convertStartOrEndToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public TaskTimeBoundariesConstraint createTaskTimeBoundariesConstraintFromString(EDataType eDataType, String initialValue) {
+ TaskTimeBoundariesConstraint result = TaskTimeBoundariesConstraint.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public String convertTaskTimeBoundariesConstraintToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ public RiskKind createRiskKindFromString(EDataType eDataType, String initialValue) {
+ RiskKind result = RiskKind.get(initialValue);
+ // if (result == null)
+ // throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" +
+ // eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public String convertRiskKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ public RiskState createRiskStateFromString(EDataType eDataType, String initialValue) {
+ RiskState result = RiskState.get(initialValue);
+ // if (result == null)
+ // throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" +
+ // eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public String convertRiskStateToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ public ProjectState createProjectStateFromString(EDataType eDataType, String initialValue) {
+ ProjectState result = ProjectState.get(initialValue);
+ // if (result == null)
+ // throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" +
+ // eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public String convertProjectStateToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ public Instant createInstantFromString(EDataType eDataType, String initialValue) {
+ if (initialValue != null) {
+ return Instant.parse(initialValue);
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ public String convertInstantToString(EDataType eDataType, Object instanceValue) {
+ if (instanceValue instanceof Instant instant) {
+ return DateTimeFormatter.ISO_INSTANT.format(instant);
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ public LocalDate createDateFromString(EDataType eDataType, String initialValue) {
+ if (initialValue != null) {
+ return LocalDate.parse(initialValue);
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ public String convertDateToString(EDataType eDataType, Object instanceValue) {
+ if (instanceValue instanceof LocalDate localDate) {
+ return DateTimeFormatter.ISO_LOCAL_DATE.format(localDate);
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public PepperPackage getPepperPackage() {
+ return (PepperPackage) getEPackage();
+ }
+
+ /**
+ *
+ *
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static PepperPackage getPackage() {
+ return PepperPackage.eINSTANCE;
+ }
+
+} // PepperFactoryImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/PepperPackageImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/PepperPackageImpl.java
new file mode 100644
index 0000000..dcfe52c
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/PepperPackageImpl.java
@@ -0,0 +1,2060 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import java.time.Instant;
+import java.time.LocalDate;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import pepper.peppermm.AbstractTask;
+import pepper.peppermm.DependencyLink;
+import pepper.peppermm.DependencyRelatedObject;
+import pepper.peppermm.ExternalStakeholder;
+import pepper.peppermm.InternalStakeholder;
+import pepper.peppermm.KeyResult;
+import pepper.peppermm.Objective;
+import pepper.peppermm.Organization;
+import pepper.peppermm.PepperFactory;
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Person;
+import pepper.peppermm.Project;
+import pepper.peppermm.ProjectState;
+import pepper.peppermm.Resource;
+import pepper.peppermm.ResourceFolder;
+import pepper.peppermm.Risk;
+import pepper.peppermm.RiskKind;
+import pepper.peppermm.RiskState;
+import pepper.peppermm.StartOrEnd;
+import pepper.peppermm.TagFolder;
+import pepper.peppermm.Task;
+import pepper.peppermm.TaskTag;
+import pepper.peppermm.TaskTimeBoundariesConstraint;
+import pepper.peppermm.Team;
+import pepper.peppermm.Workpackage;
+import pepper.peppermm.WorkpackageArtefact;
+import pepper.peppermm.WorkpackageArtefactNature;
+
+/**
+ * An implementation of the model Package.
+ *
+ * @generated
+ */
+public class PepperPackageImpl extends EPackageImpl implements PepperPackage {
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass organizationEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass resourceEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass resourceFolderEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass teamEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass internalStakeholderEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass externalStakeholderEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass personEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass abstractTaskEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass tagFolderEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass taskTagEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass taskEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass objectiveEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass keyResultEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass projectEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass workpackageEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass workpackageArtefactEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass riskEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass dependencyLinkEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass dependencyRelatedObjectEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EEnum workpackageArtefactNatureEEnum = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EEnum startOrEndEEnum = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EEnum taskTimeBoundariesConstraintEEnum = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EEnum riskKindEEnum = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EEnum riskStateEEnum = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EEnum projectStateEEnum = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EDataType instantEDataType = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EDataType dateEDataType = null;
+
+ /**
+ * Creates an instance of the model Package, registered with {@link Registry
+ * EPackage.Registry} by the package package URI value.
+ *
+ * Note: the correct way to create the package is via the static factory method {@link #init init()}, which also
+ * performs initialization of the package, or returns the registered package, if one already exists.
+ *
+ * @see Registry
+ * @see PepperPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private PepperPackageImpl() {
+ super(eNS_URI, PepperFactory.eINSTANCE);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the Package for this model, and for any others upon which it depends.
+ *
+ *
+ * This method is used to initialize {@link PepperPackage#eINSTANCE} when that field is accessed. Clients should not
+ * invoke it directly. Instead, they should simply access that field to obtain the package.
+ *
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static PepperPackage init() {
+ if (isInited)
+ return (PepperPackage) Registry.INSTANCE.getEPackage(PepperPackage.eNS_URI);
+
+ // Obtain or create and register package
+ Object registeredPepperPackage = Registry.INSTANCE.get(eNS_URI);
+ PepperPackageImpl thePepperPackage = registeredPepperPackage instanceof PepperPackageImpl ? (PepperPackageImpl) registeredPepperPackage : new PepperPackageImpl();
+
+ isInited = true;
+
+ // Create package meta-data objects
+ thePepperPackage.createPackageContents();
+
+ // Initialize created meta-data
+ thePepperPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ thePepperPackage.freeze();
+
+ // Update the registry and return the package
+ Registry.INSTANCE.put(PepperPackage.eNS_URI, thePepperPackage);
+ return thePepperPackage;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getOrganization() {
+ return organizationEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getOrganization_Name() {
+ return (EAttribute) organizationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getOrganization_OwnedProjects() {
+ return (EReference) organizationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getOrganization_OwnedResourceFolders() {
+ return (EReference) organizationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getResource() {
+ return resourceEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getResource_Name() {
+ return (EAttribute) resourceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getResourceFolder() {
+ return resourceFolderEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getResourceFolder_Name() {
+ return (EAttribute) resourceFolderEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getResourceFolder_OwnedResources() {
+ return (EReference) resourceFolderEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getResourceFolder_SubFolders() {
+ return (EReference) resourceFolderEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getTeam() {
+ return teamEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getTeam_Members() {
+ return (EReference) teamEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getInternalStakeholder() {
+ return internalStakeholderEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getExternalStakeholder() {
+ return externalStakeholderEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getExternalStakeholder_Goals() {
+ return (EAttribute) externalStakeholderEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getPerson() {
+ return personEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getPerson_Alias() {
+ return (EAttribute) personEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getPerson_Biography() {
+ return (EAttribute) personEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getPerson_ImageUrl() {
+ return (EAttribute) personEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getAbstractTask() {
+ return abstractTaskEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getAbstractTask_Name() {
+ return (EAttribute) abstractTaskEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getAbstractTask_Description() {
+ return (EAttribute) abstractTaskEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getAbstractTask_StartTime() {
+ return (EAttribute) abstractTaskEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getAbstractTask_EndTime() {
+ return (EAttribute) abstractTaskEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getAbstractTask_Progress() {
+ return (EAttribute) abstractTaskEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getAbstractTask_ComputeStartEndDynamically() {
+ return (EAttribute) abstractTaskEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getAbstractTask_Tags() {
+ return (EReference) abstractTaskEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getAbstractTask_AssignedPersons() {
+ return (EReference) abstractTaskEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getAbstractTask_AssignedTeams() {
+ return (EReference) abstractTaskEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getAbstractTask_SubTasks() {
+ return (EReference) abstractTaskEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getAbstractTask_CalculationOption() {
+ return (EAttribute) abstractTaskEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getAbstractTask_Duration() {
+ return (EAttribute) abstractTaskEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getTagFolder() {
+ return tagFolderEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getTagFolder_Name() {
+ return (EAttribute) tagFolderEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getTagFolder_OwnedTags() {
+ return (EReference) tagFolderEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getTagFolder_SubFolders() {
+ return (EReference) tagFolderEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getTaskTag() {
+ return taskTagEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getTaskTag_Prefix() {
+ return (EAttribute) taskTagEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getTaskTag_Suffix() {
+ return (EAttribute) taskTagEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getTask() {
+ return taskEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getObjective() {
+ return objectiveEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getObjective_OwnedKeyResults() {
+ return (EReference) objectiveEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getKeyResult() {
+ return keyResultEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getProject() {
+ return projectEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_Name() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getProject_OwnedWorkpackages() {
+ return (EReference) projectEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getProject_OwnedObjectives() {
+ return (EReference) projectEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getProject_OwnedTagFolders() {
+ return (EReference) projectEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getProject_OwnedRisks() {
+ return (EReference) projectEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_Reference() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_Description() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getProject_LeadingUnit() {
+ return (EReference) projectEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getProject_ParticipantUnits() {
+ return (EReference) projectEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_PlannifiedClientCopilMeetings() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_MainProgramBrick() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_State() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getProject_Clients() {
+ return (EReference) projectEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getProject_Partners() {
+ return (EReference) projectEClass.getEStructuralFeatures().get(13);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_IsTransverse() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(14);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getProject_Leader() {
+ return (EReference) projectEClass.getEStructuralFeatures().get(15);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getProject_Members() {
+ return (EReference) projectEClass.getEStructuralFeatures().get(16);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_IsSensitive() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(17);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_ContractualStartDate() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(18);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_Duration() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(19);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_ContractualEndDate() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(20);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_EffectiveStartDate() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(21);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_EffectiveEndDate() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(22);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_ContractTermExtension() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(23);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_GlobalCost() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(24);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_FundingRate() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(25);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_Funding() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(26);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_Manpower() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(27);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_EOTP() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(28);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_StatisticOrder() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(29);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_InternalNeed() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(30);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getProject_ClientNeed() {
+ return (EAttribute) projectEClass.getEStructuralFeatures().get(31);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getWorkpackage() {
+ return workpackageEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackage_Name() {
+ return (EAttribute) workpackageEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackage_Description() {
+ return (EAttribute) workpackageEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackage_StartDate() {
+ return (EAttribute) workpackageEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackage_EndDate() {
+ return (EAttribute) workpackageEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getWorkpackage_Leader() {
+ return (EReference) workpackageEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getWorkpackage_Participants() {
+ return (EReference) workpackageEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackage_Effort() {
+ return (EAttribute) workpackageEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getWorkpackage_Outputs() {
+ return (EReference) workpackageEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getWorkpackage_OwnedTasks() {
+ return (EReference) workpackageEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getWorkpackage_OwnedObjectives() {
+ return (EReference) workpackageEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackage_Progress() {
+ return (EAttribute) workpackageEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackage_CalculationOption() {
+ return (EAttribute) workpackageEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackage_Duration() {
+ return (EAttribute) workpackageEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getWorkpackageArtefact() {
+ return workpackageArtefactEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackageArtefact_Name() {
+ return (EAttribute) workpackageArtefactEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackageArtefact_Description() {
+ return (EAttribute) workpackageArtefactEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackageArtefact_Nature() {
+ return (EAttribute) workpackageArtefactEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackageArtefact_PlannedDeadline() {
+ return (EAttribute) workpackageArtefactEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackageArtefact_EffectiveDeadLine() {
+ return (EAttribute) workpackageArtefactEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackageArtefact_IsInvoiceTrigger() {
+ return (EAttribute) workpackageArtefactEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackageArtefact_InvoiceAmount() {
+ return (EAttribute) workpackageArtefactEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getWorkpackageArtefact_Responsible() {
+ return (EReference) workpackageArtefactEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackageArtefact_Version() {
+ return (EAttribute) workpackageArtefactEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getWorkpackageArtefact_IsObsolete() {
+ return (EAttribute) workpackageArtefactEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getRisk() {
+ return riskEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getRisk_Kind() {
+ return (EAttribute) riskEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getRisk_Description() {
+ return (EAttribute) riskEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getRisk_Criticity() {
+ return (EAttribute) riskEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getRisk_Action() {
+ return (EAttribute) riskEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getRisk_Responsible() {
+ return (EReference) riskEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getRisk_OperationDate() {
+ return (EAttribute) riskEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getRisk_State() {
+ return (EAttribute) riskEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getRisk_Workpackages() {
+ return (EReference) riskEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getDependencyLink() {
+ return dependencyLinkEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getDependencyLink_TargetKind() {
+ return (EAttribute) dependencyLinkEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getDependencyLink_SourceKind() {
+ return (EAttribute) dependencyLinkEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getDependencyLink_Source() {
+ return (EReference) dependencyLinkEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getDependencyLink_Duration() {
+ return (EAttribute) dependencyLinkEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EClass getDependencyRelatedObject() {
+ return dependencyRelatedObjectEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EReference getDependencyRelatedObject_Dependencies() {
+ return (EReference) dependencyRelatedObjectEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EEnum getWorkpackageArtefactNature() {
+ return workpackageArtefactNatureEEnum;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EEnum getStartOrEnd() {
+ return startOrEndEEnum;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EEnum getTaskTimeBoundariesConstraint() {
+ return taskTimeBoundariesConstraintEEnum;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EEnum getRiskKind() {
+ return riskKindEEnum;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EEnum getRiskState() {
+ return riskStateEEnum;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EEnum getProjectState() {
+ return projectStateEEnum;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EDataType getInstant() {
+ return instantEDataType;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EDataType getDate() {
+ return dateEDataType;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public PepperFactory getPepperFactory() {
+ return (PepperFactory) getEFactoryInstance();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is guarded to have no affect on any invocation but
+ * its first.
+ *
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated)
+ return;
+ isCreated = true;
+
+ // Create classes and their features
+ organizationEClass = createEClass(ORGANIZATION);
+ createEAttribute(organizationEClass, ORGANIZATION__NAME);
+ createEReference(organizationEClass, ORGANIZATION__OWNED_PROJECTS);
+ createEReference(organizationEClass, ORGANIZATION__OWNED_RESOURCE_FOLDERS);
+
+ resourceEClass = createEClass(RESOURCE);
+ createEAttribute(resourceEClass, RESOURCE__NAME);
+
+ resourceFolderEClass = createEClass(RESOURCE_FOLDER);
+ createEAttribute(resourceFolderEClass, RESOURCE_FOLDER__NAME);
+ createEReference(resourceFolderEClass, RESOURCE_FOLDER__OWNED_RESOURCES);
+ createEReference(resourceFolderEClass, RESOURCE_FOLDER__SUB_FOLDERS);
+
+ teamEClass = createEClass(TEAM);
+ createEReference(teamEClass, TEAM__MEMBERS);
+
+ internalStakeholderEClass = createEClass(INTERNAL_STAKEHOLDER);
+
+ externalStakeholderEClass = createEClass(EXTERNAL_STAKEHOLDER);
+ createEAttribute(externalStakeholderEClass, EXTERNAL_STAKEHOLDER__GOALS);
+
+ personEClass = createEClass(PERSON);
+ createEAttribute(personEClass, PERSON__ALIAS);
+ createEAttribute(personEClass, PERSON__BIOGRAPHY);
+ createEAttribute(personEClass, PERSON__IMAGE_URL);
+
+ abstractTaskEClass = createEClass(ABSTRACT_TASK);
+ createEAttribute(abstractTaskEClass, ABSTRACT_TASK__NAME);
+ createEAttribute(abstractTaskEClass, ABSTRACT_TASK__DESCRIPTION);
+ createEAttribute(abstractTaskEClass, ABSTRACT_TASK__START_TIME);
+ createEAttribute(abstractTaskEClass, ABSTRACT_TASK__END_TIME);
+ createEAttribute(abstractTaskEClass, ABSTRACT_TASK__PROGRESS);
+ createEAttribute(abstractTaskEClass, ABSTRACT_TASK__COMPUTE_START_END_DYNAMICALLY);
+ createEReference(abstractTaskEClass, ABSTRACT_TASK__TAGS);
+ createEReference(abstractTaskEClass, ABSTRACT_TASK__ASSIGNED_PERSONS);
+ createEReference(abstractTaskEClass, ABSTRACT_TASK__ASSIGNED_TEAMS);
+ createEReference(abstractTaskEClass, ABSTRACT_TASK__SUB_TASKS);
+ createEAttribute(abstractTaskEClass, ABSTRACT_TASK__CALCULATION_OPTION);
+ createEAttribute(abstractTaskEClass, ABSTRACT_TASK__DURATION);
+
+ tagFolderEClass = createEClass(TAG_FOLDER);
+ createEAttribute(tagFolderEClass, TAG_FOLDER__NAME);
+ createEReference(tagFolderEClass, TAG_FOLDER__OWNED_TAGS);
+ createEReference(tagFolderEClass, TAG_FOLDER__SUB_FOLDERS);
+
+ taskTagEClass = createEClass(TASK_TAG);
+ createEAttribute(taskTagEClass, TASK_TAG__PREFIX);
+ createEAttribute(taskTagEClass, TASK_TAG__SUFFIX);
+
+ taskEClass = createEClass(TASK);
+
+ objectiveEClass = createEClass(OBJECTIVE);
+ createEReference(objectiveEClass, OBJECTIVE__OWNED_KEY_RESULTS);
+
+ keyResultEClass = createEClass(KEY_RESULT);
+
+ projectEClass = createEClass(PROJECT);
+ createEAttribute(projectEClass, PROJECT__NAME);
+ createEReference(projectEClass, PROJECT__OWNED_WORKPACKAGES);
+ createEReference(projectEClass, PROJECT__OWNED_OBJECTIVES);
+ createEReference(projectEClass, PROJECT__OWNED_TAG_FOLDERS);
+ createEReference(projectEClass, PROJECT__OWNED_RISKS);
+ createEAttribute(projectEClass, PROJECT__REFERENCE);
+ createEAttribute(projectEClass, PROJECT__DESCRIPTION);
+ createEReference(projectEClass, PROJECT__LEADING_UNIT);
+ createEReference(projectEClass, PROJECT__PARTICIPANT_UNITS);
+ createEAttribute(projectEClass, PROJECT__PLANNIFIED_CLIENT_COPIL_MEETINGS);
+ createEAttribute(projectEClass, PROJECT__MAIN_PROGRAM_BRICK);
+ createEAttribute(projectEClass, PROJECT__STATE);
+ createEReference(projectEClass, PROJECT__CLIENTS);
+ createEReference(projectEClass, PROJECT__PARTNERS);
+ createEAttribute(projectEClass, PROJECT__IS_TRANSVERSE);
+ createEReference(projectEClass, PROJECT__LEADER);
+ createEReference(projectEClass, PROJECT__MEMBERS);
+ createEAttribute(projectEClass, PROJECT__IS_SENSITIVE);
+ createEAttribute(projectEClass, PROJECT__CONTRACTUAL_START_DATE);
+ createEAttribute(projectEClass, PROJECT__DURATION);
+ createEAttribute(projectEClass, PROJECT__CONTRACTUAL_END_DATE);
+ createEAttribute(projectEClass, PROJECT__EFFECTIVE_START_DATE);
+ createEAttribute(projectEClass, PROJECT__EFFECTIVE_END_DATE);
+ createEAttribute(projectEClass, PROJECT__CONTRACT_TERM_EXTENSION);
+ createEAttribute(projectEClass, PROJECT__GLOBAL_COST);
+ createEAttribute(projectEClass, PROJECT__FUNDING_RATE);
+ createEAttribute(projectEClass, PROJECT__FUNDING);
+ createEAttribute(projectEClass, PROJECT__MANPOWER);
+ createEAttribute(projectEClass, PROJECT__EOTP);
+ createEAttribute(projectEClass, PROJECT__STATISTIC_ORDER);
+ createEAttribute(projectEClass, PROJECT__INTERNAL_NEED);
+ createEAttribute(projectEClass, PROJECT__CLIENT_NEED);
+
+ workpackageEClass = createEClass(WORKPACKAGE);
+ createEAttribute(workpackageEClass, WORKPACKAGE__NAME);
+ createEAttribute(workpackageEClass, WORKPACKAGE__DESCRIPTION);
+ createEAttribute(workpackageEClass, WORKPACKAGE__START_DATE);
+ createEAttribute(workpackageEClass, WORKPACKAGE__END_DATE);
+ createEReference(workpackageEClass, WORKPACKAGE__LEADER);
+ createEReference(workpackageEClass, WORKPACKAGE__PARTICIPANTS);
+ createEAttribute(workpackageEClass, WORKPACKAGE__EFFORT);
+ createEReference(workpackageEClass, WORKPACKAGE__OUTPUTS);
+ createEReference(workpackageEClass, WORKPACKAGE__OWNED_TASKS);
+ createEReference(workpackageEClass, WORKPACKAGE__OWNED_OBJECTIVES);
+ createEAttribute(workpackageEClass, WORKPACKAGE__PROGRESS);
+ createEAttribute(workpackageEClass, WORKPACKAGE__CALCULATION_OPTION);
+ createEAttribute(workpackageEClass, WORKPACKAGE__DURATION);
+
+ workpackageArtefactEClass = createEClass(WORKPACKAGE_ARTEFACT);
+ createEAttribute(workpackageArtefactEClass, WORKPACKAGE_ARTEFACT__NAME);
+ createEAttribute(workpackageArtefactEClass, WORKPACKAGE_ARTEFACT__DESCRIPTION);
+ createEAttribute(workpackageArtefactEClass, WORKPACKAGE_ARTEFACT__NATURE);
+ createEAttribute(workpackageArtefactEClass, WORKPACKAGE_ARTEFACT__PLANNED_DEADLINE);
+ createEAttribute(workpackageArtefactEClass, WORKPACKAGE_ARTEFACT__EFFECTIVE_DEAD_LINE);
+ createEAttribute(workpackageArtefactEClass, WORKPACKAGE_ARTEFACT__IS_INVOICE_TRIGGER);
+ createEAttribute(workpackageArtefactEClass, WORKPACKAGE_ARTEFACT__INVOICE_AMOUNT);
+ createEReference(workpackageArtefactEClass, WORKPACKAGE_ARTEFACT__RESPONSIBLE);
+ createEAttribute(workpackageArtefactEClass, WORKPACKAGE_ARTEFACT__VERSION);
+ createEAttribute(workpackageArtefactEClass, WORKPACKAGE_ARTEFACT__IS_OBSOLETE);
+
+ riskEClass = createEClass(RISK);
+ createEAttribute(riskEClass, RISK__KIND);
+ createEAttribute(riskEClass, RISK__DESCRIPTION);
+ createEAttribute(riskEClass, RISK__CRITICITY);
+ createEAttribute(riskEClass, RISK__ACTION);
+ createEReference(riskEClass, RISK__RESPONSIBLE);
+ createEAttribute(riskEClass, RISK__OPERATION_DATE);
+ createEAttribute(riskEClass, RISK__STATE);
+ createEReference(riskEClass, RISK__WORKPACKAGES);
+
+ dependencyLinkEClass = createEClass(DEPENDENCY_LINK);
+ createEAttribute(dependencyLinkEClass, DEPENDENCY_LINK__TARGET_KIND);
+ createEAttribute(dependencyLinkEClass, DEPENDENCY_LINK__SOURCE_KIND);
+ createEReference(dependencyLinkEClass, DEPENDENCY_LINK__SOURCE);
+ createEAttribute(dependencyLinkEClass, DEPENDENCY_LINK__DURATION);
+
+ dependencyRelatedObjectEClass = createEClass(DEPENDENCY_RELATED_OBJECT);
+ createEReference(dependencyRelatedObjectEClass, DEPENDENCY_RELATED_OBJECT__DEPENDENCIES);
+
+ // Create enums
+ projectStateEEnum = createEEnum(PROJECT_STATE);
+ riskKindEEnum = createEEnum(RISK_KIND);
+ riskStateEEnum = createEEnum(RISK_STATE);
+ workpackageArtefactNatureEEnum = createEEnum(WORKPACKAGE_ARTEFACT_NATURE);
+ startOrEndEEnum = createEEnum(START_OR_END);
+ taskTimeBoundariesConstraintEEnum = createEEnum(TASK_TIME_BOUNDARIES_CONSTRAINT);
+
+ // Create data types
+ dateEDataType = createEDataType(DATE);
+ instantEDataType = createEDataType(INSTANT);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This method is guarded to have no affect on any
+ * invocation but its first.
+ *
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized)
+ return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ teamEClass.getESuperTypes().add(this.getResource());
+ internalStakeholderEClass.getESuperTypes().add(this.getResource());
+ externalStakeholderEClass.getESuperTypes().add(this.getResource());
+ personEClass.getESuperTypes().add(this.getResource());
+ taskEClass.getESuperTypes().add(this.getAbstractTask());
+ taskEClass.getESuperTypes().add(this.getDependencyRelatedObject());
+ objectiveEClass.getESuperTypes().add(this.getAbstractTask());
+ keyResultEClass.getESuperTypes().add(this.getAbstractTask());
+ workpackageEClass.getESuperTypes().add(this.getDependencyRelatedObject());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(organizationEClass, Organization.class, "Organization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getOrganization_Name(), ecorePackage.getEString(), "name", null, 0, 1, Organization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEReference(getOrganization_OwnedProjects(), this.getProject(), null, "ownedProjects", null, 0, -1, Organization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getOrganization_OwnedResourceFolders(), this.getResourceFolder(), null, "ownedResourceFolders", null, 0, -1, Organization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(resourceEClass, Resource.class, "Resource", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getResource_Name(), ecorePackage.getEString(), "name", null, 0, 1, Resource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(resourceFolderEClass, ResourceFolder.class, "ResourceFolder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getResourceFolder_Name(), ecorePackage.getEString(), "name", null, 0, 1, ResourceFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEReference(getResourceFolder_OwnedResources(), this.getResource(), null, "ownedResources", null, 0, -1, ResourceFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getResourceFolder_SubFolders(), this.getResourceFolder(), null, "subFolders", null, 0, -1, ResourceFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(teamEClass, Team.class, "Team", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTeam_Members(), this.getPerson(), null, "members", null, 0, -1, Team.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(internalStakeholderEClass, InternalStakeholder.class, "InternalStakeholder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(externalStakeholderEClass, ExternalStakeholder.class, "ExternalStakeholder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getExternalStakeholder_Goals(), ecorePackage.getEString(), "goals", null, 0, -1, ExternalStakeholder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(personEClass, Person.class, "Person", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPerson_Alias(), ecorePackage.getEString(), "alias", null, 0, 1, Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(getPerson_Biography(), ecorePackage.getEString(), "biography", null, 0, 1, Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPerson_ImageUrl(), ecorePackage.getEString(), "imageUrl", null, 0, 1, Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+
+ initEClass(abstractTaskEClass, AbstractTask.class, "AbstractTask", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getAbstractTask_Name(), ecorePackage.getEString(), "name", null, 0, 1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractTask_Description(), ecorePackage.getEString(), "description", null, 0, 1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractTask_StartTime(), this.getInstant(), "startTime", null, 0, 1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractTask_EndTime(), this.getInstant(), "endTime", null, 0, 1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractTask_Progress(), ecorePackage.getEInt(), "progress", null, 0, 1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractTask_ComputeStartEndDynamically(), ecorePackage.getEBoolean(), "computeStartEndDynamically", "false", 0, 1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractTask_Tags(), this.getTaskTag(), null, "tags", null, 0, -1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractTask_AssignedPersons(), this.getPerson(), null, "assignedPersons", null, 0, -1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractTask_AssignedTeams(), this.getTeam(), null, "assignedTeams", null, 0, -1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractTask_SubTasks(), this.getTask(), null, "subTasks", null, 0, -1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractTask_CalculationOption(), this.getTaskTimeBoundariesConstraint(), "calculationOption", "START_END", 0, 1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractTask_Duration(), ecorePackage.getEInt(), "duration", null, 0, 1, AbstractTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+
+ initEClass(tagFolderEClass, TagFolder.class, "TagFolder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getTagFolder_Name(), ecorePackage.getEString(), "name", null, 0, 1, TagFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEReference(getTagFolder_OwnedTags(), this.getTaskTag(), null, "ownedTags", null, 0, -1, TagFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTagFolder_SubFolders(), this.getTagFolder(), null, "subFolders", null, 0, -1, TagFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(taskTagEClass, TaskTag.class, "TaskTag", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getTaskTag_Prefix(), ecorePackage.getEString(), "prefix", null, 0, 1, TaskTag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(getTaskTag_Suffix(), ecorePackage.getEString(), "suffix", null, 0, 1, TaskTag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(taskEClass, Task.class, "Task", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(objectiveEClass, Objective.class, "Objective", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getObjective_OwnedKeyResults(), this.getKeyResult(), null, "ownedKeyResults", null, 0, -1, Objective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(keyResultEClass, KeyResult.class, "KeyResult", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(projectEClass, Project.class, "Project", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getProject_Name(), ecorePackage.getEString(), "name", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEReference(getProject_OwnedWorkpackages(), this.getWorkpackage(), null, "ownedWorkpackages", null, 0, -1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProject_OwnedObjectives(), this.getObjective(), null, "ownedObjectives", null, 0, -1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProject_OwnedTagFolders(), this.getTagFolder(), null, "ownedTagFolders", null, 0, -1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProject_OwnedRisks(), this.getRisk(), null, "ownedRisks", null, 0, -1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_Reference(), ecorePackage.getEString(), "reference", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_Description(), ecorePackage.getEString(), "description", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEReference(getProject_LeadingUnit(), this.getInternalStakeholder(), null, "leadingUnit", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProject_ParticipantUnits(), this.getInternalStakeholder(), null, "participantUnits", null, 0, -1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_PlannifiedClientCopilMeetings(), ecorePackage.getEBooleanObject(), "plannifiedClientCopilMeetings", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_MainProgramBrick(), ecorePackage.getEString(), "mainProgramBrick", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_State(), this.getProjectState(), "state", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEReference(getProject_Clients(), this.getExternalStakeholder(), null, "clients", null, 0, -1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProject_Partners(), this.getExternalStakeholder(), null, "partners", null, 0, -1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_IsTransverse(), ecorePackage.getEBooleanObject(), "isTransverse", null, 0, 1, Project.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getProject_Leader(), this.getPerson(), null, "leader", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProject_Members(), this.getPerson(), null, "members", null, 0, -1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_IsSensitive(), ecorePackage.getEBooleanObject(), "isSensitive", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_ContractualStartDate(), this.getDate(), "contractualStartDate", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_Duration(), ecorePackage.getEIntegerObject(), "duration", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_ContractualEndDate(), this.getDate(), "contractualEndDate", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_EffectiveStartDate(), this.getDate(), "effectiveStartDate", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_EffectiveEndDate(), this.getDate(), "effectiveEndDate", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_ContractTermExtension(), ecorePackage.getEIntegerObject(), "contractTermExtension", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_GlobalCost(), ecorePackage.getEDoubleObject(), "globalCost", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_FundingRate(), ecorePackage.getEDoubleObject(), "fundingRate", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_Funding(), ecorePackage.getEDoubleObject(), "funding", null, 0, 1, Project.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_Manpower(), ecorePackage.getEIntegerObject(), "manpower", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_EOTP(), ecorePackage.getEString(), "eOTP", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(getProject_StatisticOrder(), ecorePackage.getEString(), "statisticOrder", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_InternalNeed(), ecorePackage.getEString(), "internalNeed", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProject_ClientNeed(), ecorePackage.getEString(), "clientNeed", null, 0, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+
+ initEClass(workpackageEClass, Workpackage.class, "Workpackage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getWorkpackage_Name(), ecorePackage.getEString(), "name", null, 0, 1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackage_Description(), ecorePackage.getEString(), "description", null, 0, 1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackage_StartDate(), this.getDate(), "startDate", null, 0, 1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackage_EndDate(), this.getDate(), "endDate", null, 0, 1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEReference(getWorkpackage_Leader(), this.getPerson(), null, "leader", null, 0, 1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getWorkpackage_Participants(), this.getPerson(), null, "participants", null, 0, -1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackage_Effort(), ecorePackage.getEIntegerObject(), "effort", null, 0, 1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getWorkpackage_Outputs(), this.getWorkpackageArtefact(), null, "outputs", null, 0, -1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getWorkpackage_OwnedTasks(), this.getTask(), null, "ownedTasks", null, 0, -1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getWorkpackage_OwnedObjectives(), this.getObjective(), null, "ownedObjectives", null, 0, -1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackage_Progress(), ecorePackage.getEInt(), "progress", null, 0, 1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackage_CalculationOption(), this.getTaskTimeBoundariesConstraint(), "calculationOption", "START_END", 0, 1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackage_Duration(), ecorePackage.getEInt(), "duration", null, 0, 1, Workpackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+
+ initEClass(workpackageArtefactEClass, WorkpackageArtefact.class, "WorkpackageArtefact", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getWorkpackageArtefact_Name(), ecorePackage.getEString(), "name", null, 0, 1, WorkpackageArtefact.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackageArtefact_Description(), ecorePackage.getEString(), "description", null, 0, 1, WorkpackageArtefact.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackageArtefact_Nature(), this.getWorkpackageArtefactNature(), "nature", null, 0, 1, WorkpackageArtefact.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackageArtefact_PlannedDeadline(), this.getDate(), "plannedDeadline", null, 0, 1, WorkpackageArtefact.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+ !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackageArtefact_EffectiveDeadLine(), this.getDate(), "effectiveDeadLine", null, 0, 1, WorkpackageArtefact.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackageArtefact_IsInvoiceTrigger(), ecorePackage.getEBooleanObject(), "isInvoiceTrigger", null, 0, 1, WorkpackageArtefact.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackageArtefact_InvoiceAmount(), ecorePackage.getEIntegerObject(), "invoiceAmount", null, 0, 1, WorkpackageArtefact.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getWorkpackageArtefact_Responsible(), this.getPerson(), null, "responsible", null, 0, 1, WorkpackageArtefact.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackageArtefact_Version(), ecorePackage.getEString(), "version", null, 0, 1, WorkpackageArtefact.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+ !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getWorkpackageArtefact_IsObsolete(), ecorePackage.getEBooleanObject(), "isObsolete", null, 0, 1, WorkpackageArtefact.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(riskEClass, Risk.class, "Risk", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getRisk_Kind(), this.getRiskKind(), "kind", null, 0, 1, Risk.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRisk_Description(), ecorePackage.getEString(), "description", null, 0, 1, Risk.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRisk_Criticity(), ecorePackage.getEIntegerObject(), "criticity", null, 0, 1, Risk.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRisk_Action(), ecorePackage.getEString(), "action", null, 0, 1, Risk.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEReference(getRisk_Responsible(), this.getPerson(), null, "responsible", null, 0, 1, Risk.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRisk_OperationDate(), this.getDate(), "operationDate", null, 0, 1, Risk.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(getRisk_State(), this.getRiskState(), "state", null, 0, 1, Risk.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getRisk_Workpackages(), this.getWorkpackage(), null, "workpackages", null, 0, -1, Risk.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(dependencyLinkEClass, DependencyLink.class, "DependencyLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDependencyLink_TargetKind(), this.getStartOrEnd(), "targetKind", "START", 0, 1, DependencyLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDependencyLink_SourceKind(), this.getStartOrEnd(), "sourceKind", "END", 0, 1, DependencyLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDependencyLink_Source(), this.getDependencyRelatedObject(), null, "source", null, 1, 1, DependencyLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDependencyLink_Duration(), ecorePackage.getEInt(), "duration", null, 0, 1, DependencyLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+ IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(dependencyRelatedObjectEClass, DependencyRelatedObject.class, "DependencyRelatedObject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDependencyRelatedObject_Dependencies(), this.getDependencyLink(), null, "dependencies", null, 0, -1, DependencyRelatedObject.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Initialize enums and add enum literals
+ initEEnum(projectStateEEnum, ProjectState.class, "ProjectState");
+ addEEnumLiteral(projectStateEEnum, ProjectState.ON_GOING);
+ addEEnumLiteral(projectStateEEnum, ProjectState.UNDER_INSTRUCTION);
+ addEEnumLiteral(projectStateEEnum, ProjectState.STOP_BEFORE_TERM);
+ addEEnumLiteral(projectStateEEnum, ProjectState.COMPLETED);
+
+ initEEnum(riskKindEEnum, RiskKind.class, "RiskKind");
+ addEEnumLiteral(riskKindEEnum, RiskKind.MANPOWER);
+ addEEnumLiteral(riskKindEEnum, RiskKind.MACHINE);
+ addEEnumLiteral(riskKindEEnum, RiskKind.MATERIAL);
+ addEEnumLiteral(riskKindEEnum, RiskKind.MEASUREMENT);
+ addEEnumLiteral(riskKindEEnum, RiskKind.METHOD);
+ addEEnumLiteral(riskKindEEnum, RiskKind.MISSION);
+ addEEnumLiteral(riskKindEEnum, RiskKind.MANAGEMENT);
+ addEEnumLiteral(riskKindEEnum, RiskKind.MAINTENANCE);
+
+ initEEnum(riskStateEEnum, RiskState.class, "RiskState");
+ addEEnumLiteral(riskStateEEnum, RiskState.ON_GOING);
+ addEEnumLiteral(riskStateEEnum, RiskState.UNDER_INSTRUCTION);
+ addEEnumLiteral(riskStateEEnum, RiskState.STOP_BEFORE_TERM);
+ addEEnumLiteral(riskStateEEnum, RiskState.COMPLETED);
+
+ initEEnum(workpackageArtefactNatureEEnum, WorkpackageArtefactNature.class, "WorkpackageArtefactNature");
+ addEEnumLiteral(workpackageArtefactNatureEEnum, WorkpackageArtefactNature.DELIVRABLE);
+ addEEnumLiteral(workpackageArtefactNatureEEnum, WorkpackageArtefactNature.DECISIONAL);
+ addEEnumLiteral(workpackageArtefactNatureEEnum, WorkpackageArtefactNature.PROJECT_REVIEW);
+ addEEnumLiteral(workpackageArtefactNatureEEnum, WorkpackageArtefactNature.ACTION);
+ addEEnumLiteral(workpackageArtefactNatureEEnum, WorkpackageArtefactNature.INVOICING);
+ addEEnumLiteral(workpackageArtefactNatureEEnum, WorkpackageArtefactNature.EXPENSE_STATEMENT);
+ addEEnumLiteral(workpackageArtefactNatureEEnum, WorkpackageArtefactNature.CLIENT_SATISFACTION);
+ addEEnumLiteral(workpackageArtefactNatureEEnum, WorkpackageArtefactNature.OTHER);
+
+ initEEnum(startOrEndEEnum, StartOrEnd.class, "StartOrEnd");
+ addEEnumLiteral(startOrEndEEnum, StartOrEnd.START);
+ addEEnumLiteral(startOrEndEEnum, StartOrEnd.END);
+
+ initEEnum(taskTimeBoundariesConstraintEEnum, TaskTimeBoundariesConstraint.class, "TaskTimeBoundariesConstraint");
+ addEEnumLiteral(taskTimeBoundariesConstraintEEnum, TaskTimeBoundariesConstraint.START_END);
+ addEEnumLiteral(taskTimeBoundariesConstraintEEnum, TaskTimeBoundariesConstraint.END_DURATION);
+ addEEnumLiteral(taskTimeBoundariesConstraintEEnum, TaskTimeBoundariesConstraint.START_DURATION);
+
+ // Initialize data types
+ initEDataType(dateEDataType, LocalDate.class, "Date", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(instantEDataType, Instant.class, "Instant", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} // PepperPackageImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/PersonImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/PersonImpl.java
new file mode 100644
index 0000000..323ba54
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/PersonImpl.java
@@ -0,0 +1,291 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Person;
+
+/**
+ * An implementation of the model object 'Person'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link PersonImpl#getAlias Alias}
+ * - {@link PersonImpl#getBiography Biography}
+ * - {@link PersonImpl#getImageUrl Image Url}
+ *
+ *
+ * @generated
+ */
+public class PersonImpl extends ResourceImpl implements Person {
+ /**
+ * The default value of the '{@link #getAlias() Alias}' attribute.
+ *
+ * @see #getAlias()
+ * @generated
+ * @ordered
+ */
+ protected static final String ALIAS_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getAlias() Alias}' attribute.
+ *
+ * @see #getAlias()
+ * @generated
+ * @ordered
+ */
+ protected String alias = ALIAS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getBiography() Biography}' attribute.
+ *
+ * @see #getBiography()
+ * @generated
+ * @ordered
+ */
+ protected static final String BIOGRAPHY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getBiography() Biography}' attribute.
+ *
+ * @see #getBiography()
+ * @generated
+ * @ordered
+ */
+ protected String biography = BIOGRAPHY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getImageUrl() Image Url}' attribute.
+ *
+ * @see #getImageUrl()
+ * @generated
+ * @ordered
+ */
+ protected static final String IMAGE_URL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getImageUrl() Image Url}' attribute.
+ *
+ * @see #getImageUrl()
+ * @generated
+ * @ordered
+ */
+ protected String imageUrl = IMAGE_URL_EDEFAULT;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected PersonImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.PERSON;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getAlias() {
+ return alias;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setAlias(String newAlias) {
+ String oldAlias = alias;
+ alias = newAlias;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PERSON__ALIAS, oldAlias, alias));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getBiography() {
+ return biography;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setBiography(String newBiography) {
+ String oldBiography = biography;
+ biography = newBiography;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PERSON__BIOGRAPHY, oldBiography, biography));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getImageUrl() {
+ return imageUrl;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setImageUrl(String newImageUrl) {
+ String oldImageUrl = imageUrl;
+ imageUrl = newImageUrl;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PERSON__IMAGE_URL, oldImageUrl, imageUrl));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.PERSON__ALIAS:
+ return getAlias();
+ case PepperPackage.PERSON__BIOGRAPHY:
+ return getBiography();
+ case PepperPackage.PERSON__IMAGE_URL:
+ return getImageUrl();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.PERSON__ALIAS:
+ setAlias((String) newValue);
+ return;
+ case PepperPackage.PERSON__BIOGRAPHY:
+ setBiography((String) newValue);
+ return;
+ case PepperPackage.PERSON__IMAGE_URL:
+ setImageUrl((String) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.PERSON__ALIAS:
+ setAlias(ALIAS_EDEFAULT);
+ return;
+ case PepperPackage.PERSON__BIOGRAPHY:
+ setBiography(BIOGRAPHY_EDEFAULT);
+ return;
+ case PepperPackage.PERSON__IMAGE_URL:
+ setImageUrl(IMAGE_URL_EDEFAULT);
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.PERSON__ALIAS:
+ return ALIAS_EDEFAULT == null ? alias != null : !ALIAS_EDEFAULT.equals(alias);
+ case PepperPackage.PERSON__BIOGRAPHY:
+ return BIOGRAPHY_EDEFAULT == null ? biography != null : !BIOGRAPHY_EDEFAULT.equals(biography);
+ case PepperPackage.PERSON__IMAGE_URL:
+ return IMAGE_URL_EDEFAULT == null ? imageUrl != null : !IMAGE_URL_EDEFAULT.equals(imageUrl);
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (alias: ");
+ result.append(alias);
+ result.append(", biography: ");
+ result.append(biography);
+ result.append(", imageUrl: ");
+ result.append(imageUrl);
+ result.append(')');
+ return result.toString();
+ }
+
+} // PersonImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/ProjectImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/ProjectImpl.java
new file mode 100644
index 0000000..1b512d8
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/ProjectImpl.java
@@ -0,0 +1,1757 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import pepper.peppermm.ExternalStakeholder;
+import pepper.peppermm.InternalStakeholder;
+import pepper.peppermm.Objective;
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Person;
+import pepper.peppermm.Project;
+import pepper.peppermm.ProjectState;
+import pepper.peppermm.Risk;
+import pepper.peppermm.TagFolder;
+import pepper.peppermm.Workpackage;
+
+/**
+ * An implementation of the model object 'Project'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link ProjectImpl#getName Name}
+ * - {@link ProjectImpl#getOwnedWorkpackages Owned Workpackages}
+ * - {@link ProjectImpl#getOwnedObjectives Owned Objectives}
+ * - {@link ProjectImpl#getOwnedTagFolders Owned Tag Folders}
+ * - {@link ProjectImpl#getOwnedRisks Owned Risks}
+ * - {@link ProjectImpl#getReference Reference}
+ * - {@link ProjectImpl#getDescription Description}
+ * - {@link ProjectImpl#getLeadingUnit Leading Unit}
+ * - {@link ProjectImpl#getParticipantUnits Participant Units}
+ * - {@link ProjectImpl#getPlannifiedClientCopilMeetings Plannified Client Copil
+ * Meetings}
+ * - {@link ProjectImpl#getMainProgramBrick Main Program Brick}
+ * - {@link ProjectImpl#getState State}
+ * - {@link ProjectImpl#getClients Clients}
+ * - {@link ProjectImpl#getPartners Partners}
+ * - {@link ProjectImpl#getIsTransverse Is Transverse}
+ * - {@link ProjectImpl#getLeader Leader}
+ * - {@link ProjectImpl#getMembers Members}
+ * - {@link ProjectImpl#getIsSensitive Is Sensitive}
+ * - {@link ProjectImpl#getContractualStartDate Contractual Start Date}
+ * - {@link ProjectImpl#getDuration Duration}
+ * - {@link ProjectImpl#getContractualEndDate Contractual End Date}
+ * - {@link ProjectImpl#getEffectiveStartDate Effective Start Date}
+ * - {@link ProjectImpl#getEffectiveEndDate Effective End Date}
+ * - {@link ProjectImpl#getContractTermExtension Contract Term Extension}
+ * - {@link ProjectImpl#getGlobalCost Global Cost}
+ * - {@link ProjectImpl#getFundingRate Funding Rate}
+ * - {@link ProjectImpl#getFunding Funding}
+ * - {@link ProjectImpl#getManpower Manpower}
+ * - {@link ProjectImpl#getEOTP EOTP}
+ * - {@link ProjectImpl#getStatisticOrder Statistic Order}
+ * - {@link ProjectImpl#getInternalNeed Internal Need}
+ * - {@link ProjectImpl#getClientNeed Client Need}
+ *
+ *
+ * @generated
+ */
+public class ProjectImpl extends MinimalEObjectImpl.Container implements Project {
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getOwnedWorkpackages() Owned Workpackages}' containment reference list.
+ *
+ *
+ * @see #getOwnedWorkpackages()
+ * @generated
+ * @ordered
+ */
+ protected EList ownedWorkpackages;
+
+ /**
+ * The cached value of the '{@link #getOwnedObjectives() Owned Objectives}' containment reference list.
+ *
+ *
+ * @see #getOwnedObjectives()
+ * @generated
+ * @ordered
+ */
+ protected EList ownedObjectives;
+
+ /**
+ * The cached value of the '{@link #getOwnedTagFolders() Owned Tag Folders}' containment reference list.
+ *
+ *
+ * @see #getOwnedTagFolders()
+ * @generated
+ * @ordered
+ */
+ protected EList ownedTagFolders;
+
+ /**
+ * The cached value of the '{@link #getOwnedRisks() Owned Risks}' containment reference list.
+ *
+ * @see #getOwnedRisks()
+ * @generated
+ * @ordered
+ */
+ protected EList ownedRisks;
+
+ /**
+ * The default value of the '{@link #getReference() Reference}' attribute.
+ *
+ * @see #getReference()
+ * @generated
+ * @ordered
+ */
+ protected static final String REFERENCE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getReference() Reference}' attribute.
+ *
+ * @see #getReference()
+ * @generated
+ * @ordered
+ */
+ protected String reference = REFERENCE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDescription() Description}' attribute.
+ *
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDescription() Description}' attribute.
+ *
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getLeadingUnit() Leading Unit}' reference.
+ *
+ * @see #getLeadingUnit()
+ * @generated
+ * @ordered
+ */
+ protected InternalStakeholder leadingUnit;
+
+ /**
+ * The cached value of the '{@link #getParticipantUnits() Participant Units}' reference list.
+ *
+ * @see #getParticipantUnits()
+ * @generated
+ * @ordered
+ */
+ protected EList participantUnits;
+
+ /**
+ * The default value of the '{@link #getPlannifiedClientCopilMeetings() Plannified Client Copil Meetings}'
+ * attribute.
+ *
+ * @see #getPlannifiedClientCopilMeetings()
+ * @generated
+ * @ordered
+ */
+ protected static final Boolean PLANNIFIED_CLIENT_COPIL_MEETINGS_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPlannifiedClientCopilMeetings() Plannified Client Copil Meetings}'
+ * attribute.
+ *
+ * @see #getPlannifiedClientCopilMeetings()
+ * @generated
+ * @ordered
+ */
+ protected Boolean plannifiedClientCopilMeetings = PLANNIFIED_CLIENT_COPIL_MEETINGS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getMainProgramBrick() Main Program Brick}' attribute.
+ *
+ * @see #getMainProgramBrick()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAIN_PROGRAM_BRICK_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMainProgramBrick() Main Program Brick}' attribute.
+ *
+ * @see #getMainProgramBrick()
+ * @generated
+ * @ordered
+ */
+ protected String mainProgramBrick = MAIN_PROGRAM_BRICK_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getState() State}' attribute.
+ *
+ * @see #getState()
+ * @generated NOT
+ * @ordered
+ */
+ protected static final ProjectState STATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getState() State}' attribute.
+ *
+ * @see #getState()
+ * @generated
+ * @ordered
+ */
+ protected ProjectState state = STATE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getClients() Clients}' reference list.
+ *
+ * @see #getClients()
+ * @generated
+ * @ordered
+ */
+ protected EList clients;
+
+ /**
+ * The cached value of the '{@link #getPartners() Partners}' reference list.
+ *
+ * @see #getPartners()
+ * @generated
+ * @ordered
+ */
+ protected EList partners;
+
+ /**
+ * The default value of the '{@link #getIsTransverse() Is Transverse}' attribute.
+ *
+ *
+ * @see #getIsTransverse()
+ * @generated
+ * @ordered
+ */
+ protected static final Boolean IS_TRANSVERSE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLeader() Leader}' reference.
+ *
+ * @see #getLeader()
+ * @generated
+ * @ordered
+ */
+ protected Person leader;
+
+ /**
+ * The cached value of the '{@link #getMembers() Members}' reference list.
+ *
+ * @see #getMembers()
+ * @generated
+ * @ordered
+ */
+ protected EList members;
+
+ /**
+ * The default value of the '{@link #getIsSensitive() Is Sensitive}' attribute.
+ *
+ *
+ * @see #getIsSensitive()
+ * @generated
+ * @ordered
+ */
+ protected static final Boolean IS_SENSITIVE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getIsSensitive() Is Sensitive}' attribute.
+ *
+ * @see #getIsSensitive()
+ * @generated
+ * @ordered
+ */
+ protected Boolean isSensitive = IS_SENSITIVE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getContractualStartDate() Contractual Start Date}' attribute.
+ *
+ * @see #getContractualStartDate()
+ * @generated
+ * @ordered
+ */
+ protected static final LocalDate CONTRACTUAL_START_DATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContractualStartDate() Contractual Start Date}' attribute.
+ *
+ * @see #getContractualStartDate()
+ * @generated
+ * @ordered
+ */
+ protected LocalDate contractualStartDate = CONTRACTUAL_START_DATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDuration() Duration}' attribute.
+ *
+ * @see #getDuration()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer DURATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDuration() Duration}' attribute.
+ *
+ * @see #getDuration()
+ * @generated
+ * @ordered
+ */
+ protected Integer duration = DURATION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getContractualEndDate() Contractual End Date}' attribute.
+ *
+ * @see #getContractualEndDate()
+ * @generated
+ * @ordered
+ */
+ protected static final LocalDate CONTRACTUAL_END_DATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContractualEndDate() Contractual End Date}' attribute.
+ *
+ * @see #getContractualEndDate()
+ * @generated
+ * @ordered
+ */
+ protected LocalDate contractualEndDate = CONTRACTUAL_END_DATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEffectiveStartDate() Effective Start Date}' attribute.
+ *
+ * @see #getEffectiveStartDate()
+ * @generated
+ * @ordered
+ */
+ protected static final LocalDate EFFECTIVE_START_DATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEffectiveStartDate() Effective Start Date}' attribute.
+ *
+ * @see #getEffectiveStartDate()
+ * @generated
+ * @ordered
+ */
+ protected LocalDate effectiveStartDate = EFFECTIVE_START_DATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEffectiveEndDate() Effective End Date}' attribute.
+ *
+ * @see #getEffectiveEndDate()
+ * @generated
+ * @ordered
+ */
+ protected static final LocalDate EFFECTIVE_END_DATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEffectiveEndDate() Effective End Date}' attribute.
+ *
+ * @see #getEffectiveEndDate()
+ * @generated
+ * @ordered
+ */
+ protected LocalDate effectiveEndDate = EFFECTIVE_END_DATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getContractTermExtension() Contract Term Extension}' attribute.
+ *
+ * @see #getContractTermExtension()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer CONTRACT_TERM_EXTENSION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContractTermExtension() Contract Term Extension}' attribute.
+ *
+ * @see #getContractTermExtension()
+ * @generated
+ * @ordered
+ */
+ protected Integer contractTermExtension = CONTRACT_TERM_EXTENSION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getGlobalCost() Global Cost}' attribute.
+ *
+ * @see #getGlobalCost()
+ * @generated
+ * @ordered
+ */
+ protected static final Double GLOBAL_COST_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getGlobalCost() Global Cost}' attribute.
+ *
+ * @see #getGlobalCost()
+ * @generated
+ * @ordered
+ */
+ protected Double globalCost = GLOBAL_COST_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getFundingRate() Funding Rate}' attribute.
+ *
+ *
+ * @see #getFundingRate()
+ * @generated
+ * @ordered
+ */
+ protected static final Double FUNDING_RATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getFundingRate() Funding Rate}' attribute.
+ *
+ * @see #getFundingRate()
+ * @generated
+ * @ordered
+ */
+ protected Double fundingRate = FUNDING_RATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getFunding() Funding}' attribute.
+ *
+ * @see #getFunding()
+ * @generated
+ * @ordered
+ */
+ protected static final Double FUNDING_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getManpower() Manpower}' attribute.
+ *
+ * @see #getManpower()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer MANPOWER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getManpower() Manpower}' attribute.
+ *
+ * @see #getManpower()
+ * @generated
+ * @ordered
+ */
+ protected Integer manpower = MANPOWER_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEOTP() EOTP}' attribute.
+ *
+ * @see #getEOTP()
+ * @generated
+ * @ordered
+ */
+ protected static final String EOTP_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEOTP() EOTP}' attribute.
+ *
+ * @see #getEOTP()
+ * @generated
+ * @ordered
+ */
+ protected String eOTP = EOTP_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getStatisticOrder() Statistic Order}' attribute.
+ *
+ * @see #getStatisticOrder()
+ * @generated
+ * @ordered
+ */
+ protected static final String STATISTIC_ORDER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getStatisticOrder() Statistic Order}' attribute.
+ *
+ * @see #getStatisticOrder()
+ * @generated
+ * @ordered
+ */
+ protected String statisticOrder = STATISTIC_ORDER_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getInternalNeed() Internal Need}' attribute.
+ *
+ *
+ * @see #getInternalNeed()
+ * @generated
+ * @ordered
+ */
+ protected static final String INTERNAL_NEED_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getInternalNeed() Internal Need}' attribute.
+ *
+ *
+ * @see #getInternalNeed()
+ * @generated
+ * @ordered
+ */
+ protected String internalNeed = INTERNAL_NEED_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getClientNeed() Client Need}' attribute.
+ *
+ * @see #getClientNeed()
+ * @generated
+ * @ordered
+ */
+ protected static final String CLIENT_NEED_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getClientNeed() Client Need}' attribute.
+ *
+ * @see #getClientNeed()
+ * @generated
+ * @ordered
+ */
+ protected String clientNeed = CLIENT_NEED_EDEFAULT;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected ProjectImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.PROJECT;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getOwnedWorkpackages() {
+ if (ownedWorkpackages == null) {
+ ownedWorkpackages = new EObjectContainmentEList(Workpackage.class, this, PepperPackage.PROJECT__OWNED_WORKPACKAGES);
+ }
+ return ownedWorkpackages;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getOwnedObjectives() {
+ if (ownedObjectives == null) {
+ ownedObjectives = new EObjectContainmentEList(Objective.class, this, PepperPackage.PROJECT__OWNED_OBJECTIVES);
+ }
+ return ownedObjectives;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getOwnedTagFolders() {
+ if (ownedTagFolders == null) {
+ ownedTagFolders = new EObjectContainmentEList(TagFolder.class, this, PepperPackage.PROJECT__OWNED_TAG_FOLDERS);
+ }
+ return ownedTagFolders;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getOwnedRisks() {
+ if (ownedRisks == null) {
+ ownedRisks = new EObjectContainmentEList(Risk.class, this, PepperPackage.PROJECT__OWNED_RISKS);
+ }
+ return ownedRisks;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getReference() {
+ return reference;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setReference(String newReference) {
+ String oldReference = reference;
+ reference = newReference;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__REFERENCE, oldReference, reference));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public InternalStakeholder getLeadingUnit() {
+ if (leadingUnit != null && leadingUnit.eIsProxy()) {
+ InternalEObject oldLeadingUnit = (InternalEObject) leadingUnit;
+ leadingUnit = (InternalStakeholder) eResolveProxy(oldLeadingUnit);
+ if (leadingUnit != oldLeadingUnit) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, PepperPackage.PROJECT__LEADING_UNIT, oldLeadingUnit, leadingUnit));
+ }
+ }
+ return leadingUnit;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public InternalStakeholder basicGetLeadingUnit() {
+ return leadingUnit;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setLeadingUnit(InternalStakeholder newLeadingUnit) {
+ InternalStakeholder oldLeadingUnit = leadingUnit;
+ leadingUnit = newLeadingUnit;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__LEADING_UNIT, oldLeadingUnit, leadingUnit));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getParticipantUnits() {
+ if (participantUnits == null) {
+ participantUnits = new EObjectResolvingEList(InternalStakeholder.class, this, PepperPackage.PROJECT__PARTICIPANT_UNITS);
+ }
+ return participantUnits;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Boolean getPlannifiedClientCopilMeetings() {
+ return plannifiedClientCopilMeetings;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setPlannifiedClientCopilMeetings(Boolean newPlannifiedClientCopilMeetings) {
+ Boolean oldPlannifiedClientCopilMeetings = plannifiedClientCopilMeetings;
+ plannifiedClientCopilMeetings = newPlannifiedClientCopilMeetings;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__PLANNIFIED_CLIENT_COPIL_MEETINGS, oldPlannifiedClientCopilMeetings, plannifiedClientCopilMeetings));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getMainProgramBrick() {
+ return mainProgramBrick;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setMainProgramBrick(String newMainProgramBrick) {
+ String oldMainProgramBrick = mainProgramBrick;
+ mainProgramBrick = newMainProgramBrick;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__MAIN_PROGRAM_BRICK, oldMainProgramBrick, mainProgramBrick));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public ProjectState getState() {
+ return state;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setState(ProjectState newState) {
+ ProjectState oldState = state;
+ state = newState == null ? STATE_EDEFAULT : newState;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__STATE, oldState, state));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getClients() {
+ if (clients == null) {
+ clients = new EObjectResolvingEList(ExternalStakeholder.class, this, PepperPackage.PROJECT__CLIENTS);
+ }
+ return clients;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getPartners() {
+ if (partners == null) {
+ partners = new EObjectResolvingEList(ExternalStakeholder.class, this, PepperPackage.PROJECT__PARTNERS);
+ }
+ return partners;
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ @Override
+ public Boolean getIsTransverse() {
+ return getParticipantUnits().size() > 1;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Person getLeader() {
+ if (leader != null && leader.eIsProxy()) {
+ InternalEObject oldLeader = (InternalEObject) leader;
+ leader = (Person) eResolveProxy(oldLeader);
+ if (leader != oldLeader) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, PepperPackage.PROJECT__LEADER, oldLeader, leader));
+ }
+ }
+ return leader;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Person basicGetLeader() {
+ return leader;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setLeader(Person newLeader) {
+ Person oldLeader = leader;
+ leader = newLeader;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__LEADER, oldLeader, leader));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getMembers() {
+ if (members == null) {
+ members = new EObjectResolvingEList(Person.class, this, PepperPackage.PROJECT__MEMBERS);
+ }
+ return members;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Boolean getIsSensitive() {
+ return isSensitive;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setIsSensitive(Boolean newIsSensitive) {
+ Boolean oldIsSensitive = isSensitive;
+ isSensitive = newIsSensitive;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__IS_SENSITIVE, oldIsSensitive, isSensitive));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public LocalDate getContractualStartDate() {
+ return contractualStartDate;
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ @Override
+ public void setContractualStartDate(LocalDate newContractualStartDate) {
+ LocalDate oldContractualStartDate = contractualStartDate;
+ contractualStartDate = newContractualStartDate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__CONTRACTUAL_START_DATE, oldContractualStartDate, contractualStartDate));
+
+ if (contractualStartDate == null) {
+ setContractualEndDate(null);
+ } else if (duration != null) {
+ setDuration(duration);
+ } else if (contractualEndDate != null) {
+ setContractualEndDate(contractualEndDate);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Integer getDuration() {
+ return duration;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setDuration(Integer newDuration) {
+ Integer oldDuration = duration;
+ duration = newDuration;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__DURATION, oldDuration, duration));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public LocalDate getContractualEndDate() {
+ return contractualEndDate;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setContractualEndDate(LocalDate newContractualEndDate) {
+ LocalDate oldContractualEndDate = contractualEndDate;
+ contractualEndDate = newContractualEndDate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__CONTRACTUAL_END_DATE, oldContractualEndDate, contractualEndDate));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public LocalDate getEffectiveStartDate() {
+ return effectiveStartDate;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setEffectiveStartDate(LocalDate newEffectiveStartDate) {
+ LocalDate oldEffectiveStartDate = effectiveStartDate;
+ effectiveStartDate = newEffectiveStartDate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__EFFECTIVE_START_DATE, oldEffectiveStartDate, effectiveStartDate));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public LocalDate getEffectiveEndDate() {
+ return effectiveEndDate;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setEffectiveEndDate(LocalDate newEffectiveEndDate) {
+ LocalDate oldEffectiveEndDate = effectiveEndDate;
+ effectiveEndDate = newEffectiveEndDate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__EFFECTIVE_END_DATE, oldEffectiveEndDate, effectiveEndDate));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Integer getContractTermExtension() {
+ return contractTermExtension;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setContractTermExtension(Integer newContractTermExtension) {
+ Integer oldContractTermExtension = contractTermExtension;
+ contractTermExtension = newContractTermExtension;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__CONTRACT_TERM_EXTENSION, oldContractTermExtension, contractTermExtension));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Double getGlobalCost() {
+ return globalCost;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setGlobalCost(Double newGlobalCost) {
+ Double oldGlobalCost = globalCost;
+ globalCost = newGlobalCost;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__GLOBAL_COST, oldGlobalCost, globalCost));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Double getFundingRate() {
+ return fundingRate;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setFundingRate(Double newFundingRate) {
+ Double oldFundingRate = fundingRate;
+ fundingRate = newFundingRate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__FUNDING_RATE, oldFundingRate, fundingRate));
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ @Override
+ public Double getFunding() {
+ if (globalCost != null && fundingRate != null && fundingRate > 0) {
+ Double value = globalCost * fundingRate / 100;
+ return new BigDecimal(value).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Integer getManpower() {
+ return manpower;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setManpower(Integer newManpower) {
+ Integer oldManpower = manpower;
+ manpower = newManpower;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__MANPOWER, oldManpower, manpower));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getEOTP() {
+ return eOTP;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setEOTP(String newEOTP) {
+ String oldEOTP = eOTP;
+ eOTP = newEOTP;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__EOTP, oldEOTP, eOTP));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getStatisticOrder() {
+ return statisticOrder;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setStatisticOrder(String newStatisticOrder) {
+ String oldStatisticOrder = statisticOrder;
+ statisticOrder = newStatisticOrder;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__STATISTIC_ORDER, oldStatisticOrder, statisticOrder));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getInternalNeed() {
+ return internalNeed;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setInternalNeed(String newInternalNeed) {
+ String oldInternalNeed = internalNeed;
+ internalNeed = newInternalNeed;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__INTERNAL_NEED, oldInternalNeed, internalNeed));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getClientNeed() {
+ return clientNeed;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setClientNeed(String newClientNeed) {
+ String oldClientNeed = clientNeed;
+ clientNeed = newClientNeed;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.PROJECT__CLIENT_NEED, oldClientNeed, clientNeed));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PepperPackage.PROJECT__OWNED_WORKPACKAGES:
+ return ((InternalEList>) getOwnedWorkpackages()).basicRemove(otherEnd, msgs);
+ case PepperPackage.PROJECT__OWNED_OBJECTIVES:
+ return ((InternalEList>) getOwnedObjectives()).basicRemove(otherEnd, msgs);
+ case PepperPackage.PROJECT__OWNED_TAG_FOLDERS:
+ return ((InternalEList>) getOwnedTagFolders()).basicRemove(otherEnd, msgs);
+ case PepperPackage.PROJECT__OWNED_RISKS:
+ return ((InternalEList>) getOwnedRisks()).basicRemove(otherEnd, msgs);
+ default:
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.PROJECT__NAME:
+ return getName();
+ case PepperPackage.PROJECT__OWNED_WORKPACKAGES:
+ return getOwnedWorkpackages();
+ case PepperPackage.PROJECT__OWNED_OBJECTIVES:
+ return getOwnedObjectives();
+ case PepperPackage.PROJECT__OWNED_TAG_FOLDERS:
+ return getOwnedTagFolders();
+ case PepperPackage.PROJECT__OWNED_RISKS:
+ return getOwnedRisks();
+ case PepperPackage.PROJECT__REFERENCE:
+ return getReference();
+ case PepperPackage.PROJECT__DESCRIPTION:
+ return getDescription();
+ case PepperPackage.PROJECT__LEADING_UNIT:
+ if (resolve)
+ return getLeadingUnit();
+ return basicGetLeadingUnit();
+ case PepperPackage.PROJECT__PARTICIPANT_UNITS:
+ return getParticipantUnits();
+ case PepperPackage.PROJECT__PLANNIFIED_CLIENT_COPIL_MEETINGS:
+ return getPlannifiedClientCopilMeetings();
+ case PepperPackage.PROJECT__MAIN_PROGRAM_BRICK:
+ return getMainProgramBrick();
+ case PepperPackage.PROJECT__STATE:
+ return getState();
+ case PepperPackage.PROJECT__CLIENTS:
+ return getClients();
+ case PepperPackage.PROJECT__PARTNERS:
+ return getPartners();
+ case PepperPackage.PROJECT__IS_TRANSVERSE:
+ return getIsTransverse();
+ case PepperPackage.PROJECT__LEADER:
+ if (resolve)
+ return getLeader();
+ return basicGetLeader();
+ case PepperPackage.PROJECT__MEMBERS:
+ return getMembers();
+ case PepperPackage.PROJECT__IS_SENSITIVE:
+ return getIsSensitive();
+ case PepperPackage.PROJECT__CONTRACTUAL_START_DATE:
+ return getContractualStartDate();
+ case PepperPackage.PROJECT__DURATION:
+ return getDuration();
+ case PepperPackage.PROJECT__CONTRACTUAL_END_DATE:
+ return getContractualEndDate();
+ case PepperPackage.PROJECT__EFFECTIVE_START_DATE:
+ return getEffectiveStartDate();
+ case PepperPackage.PROJECT__EFFECTIVE_END_DATE:
+ return getEffectiveEndDate();
+ case PepperPackage.PROJECT__CONTRACT_TERM_EXTENSION:
+ return getContractTermExtension();
+ case PepperPackage.PROJECT__GLOBAL_COST:
+ return getGlobalCost();
+ case PepperPackage.PROJECT__FUNDING_RATE:
+ return getFundingRate();
+ case PepperPackage.PROJECT__FUNDING:
+ return getFunding();
+ case PepperPackage.PROJECT__MANPOWER:
+ return getManpower();
+ case PepperPackage.PROJECT__EOTP:
+ return getEOTP();
+ case PepperPackage.PROJECT__STATISTIC_ORDER:
+ return getStatisticOrder();
+ case PepperPackage.PROJECT__INTERNAL_NEED:
+ return getInternalNeed();
+ case PepperPackage.PROJECT__CLIENT_NEED:
+ return getClientNeed();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.PROJECT__NAME:
+ setName((String) newValue);
+ return;
+ case PepperPackage.PROJECT__OWNED_WORKPACKAGES:
+ getOwnedWorkpackages().clear();
+ getOwnedWorkpackages().addAll((Collection extends Workpackage>) newValue);
+ return;
+ case PepperPackage.PROJECT__OWNED_OBJECTIVES:
+ getOwnedObjectives().clear();
+ getOwnedObjectives().addAll((Collection extends Objective>) newValue);
+ return;
+ case PepperPackage.PROJECT__OWNED_TAG_FOLDERS:
+ getOwnedTagFolders().clear();
+ getOwnedTagFolders().addAll((Collection extends TagFolder>) newValue);
+ return;
+ case PepperPackage.PROJECT__OWNED_RISKS:
+ getOwnedRisks().clear();
+ getOwnedRisks().addAll((Collection extends Risk>) newValue);
+ return;
+ case PepperPackage.PROJECT__REFERENCE:
+ setReference((String) newValue);
+ return;
+ case PepperPackage.PROJECT__DESCRIPTION:
+ setDescription((String) newValue);
+ return;
+ case PepperPackage.PROJECT__LEADING_UNIT:
+ setLeadingUnit((InternalStakeholder) newValue);
+ return;
+ case PepperPackage.PROJECT__PARTICIPANT_UNITS:
+ getParticipantUnits().clear();
+ getParticipantUnits().addAll((Collection extends InternalStakeholder>) newValue);
+ return;
+ case PepperPackage.PROJECT__PLANNIFIED_CLIENT_COPIL_MEETINGS:
+ setPlannifiedClientCopilMeetings((Boolean) newValue);
+ return;
+ case PepperPackage.PROJECT__MAIN_PROGRAM_BRICK:
+ setMainProgramBrick((String) newValue);
+ return;
+ case PepperPackage.PROJECT__STATE:
+ setState((ProjectState) newValue);
+ return;
+ case PepperPackage.PROJECT__CLIENTS:
+ getClients().clear();
+ getClients().addAll((Collection extends ExternalStakeholder>) newValue);
+ return;
+ case PepperPackage.PROJECT__PARTNERS:
+ getPartners().clear();
+ getPartners().addAll((Collection extends ExternalStakeholder>) newValue);
+ return;
+ case PepperPackage.PROJECT__LEADER:
+ setLeader((Person) newValue);
+ return;
+ case PepperPackage.PROJECT__MEMBERS:
+ getMembers().clear();
+ getMembers().addAll((Collection extends Person>) newValue);
+ return;
+ case PepperPackage.PROJECT__IS_SENSITIVE:
+ setIsSensitive((Boolean) newValue);
+ return;
+ case PepperPackage.PROJECT__CONTRACTUAL_START_DATE:
+ setContractualStartDate((LocalDate) newValue);
+ return;
+ case PepperPackage.PROJECT__DURATION:
+ setDuration((Integer) newValue);
+ return;
+ case PepperPackage.PROJECT__CONTRACTUAL_END_DATE:
+ setContractualEndDate((LocalDate) newValue);
+ return;
+ case PepperPackage.PROJECT__EFFECTIVE_START_DATE:
+ setEffectiveStartDate((LocalDate) newValue);
+ return;
+ case PepperPackage.PROJECT__EFFECTIVE_END_DATE:
+ setEffectiveEndDate((LocalDate) newValue);
+ return;
+ case PepperPackage.PROJECT__CONTRACT_TERM_EXTENSION:
+ setContractTermExtension((Integer) newValue);
+ return;
+ case PepperPackage.PROJECT__GLOBAL_COST:
+ setGlobalCost((Double) newValue);
+ return;
+ case PepperPackage.PROJECT__FUNDING_RATE:
+ setFundingRate((Double) newValue);
+ return;
+ case PepperPackage.PROJECT__MANPOWER:
+ setManpower((Integer) newValue);
+ return;
+ case PepperPackage.PROJECT__EOTP:
+ setEOTP((String) newValue);
+ return;
+ case PepperPackage.PROJECT__STATISTIC_ORDER:
+ setStatisticOrder((String) newValue);
+ return;
+ case PepperPackage.PROJECT__INTERNAL_NEED:
+ setInternalNeed((String) newValue);
+ return;
+ case PepperPackage.PROJECT__CLIENT_NEED:
+ setClientNeed((String) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.PROJECT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__OWNED_WORKPACKAGES:
+ getOwnedWorkpackages().clear();
+ return;
+ case PepperPackage.PROJECT__OWNED_OBJECTIVES:
+ getOwnedObjectives().clear();
+ return;
+ case PepperPackage.PROJECT__OWNED_TAG_FOLDERS:
+ getOwnedTagFolders().clear();
+ return;
+ case PepperPackage.PROJECT__OWNED_RISKS:
+ getOwnedRisks().clear();
+ return;
+ case PepperPackage.PROJECT__REFERENCE:
+ setReference(REFERENCE_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__LEADING_UNIT:
+ setLeadingUnit((InternalStakeholder) null);
+ return;
+ case PepperPackage.PROJECT__PARTICIPANT_UNITS:
+ getParticipantUnits().clear();
+ return;
+ case PepperPackage.PROJECT__PLANNIFIED_CLIENT_COPIL_MEETINGS:
+ setPlannifiedClientCopilMeetings(PLANNIFIED_CLIENT_COPIL_MEETINGS_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__MAIN_PROGRAM_BRICK:
+ setMainProgramBrick(MAIN_PROGRAM_BRICK_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__STATE:
+ setState(STATE_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__CLIENTS:
+ getClients().clear();
+ return;
+ case PepperPackage.PROJECT__PARTNERS:
+ getPartners().clear();
+ return;
+ case PepperPackage.PROJECT__LEADER:
+ setLeader((Person) null);
+ return;
+ case PepperPackage.PROJECT__MEMBERS:
+ getMembers().clear();
+ return;
+ case PepperPackage.PROJECT__IS_SENSITIVE:
+ setIsSensitive(IS_SENSITIVE_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__CONTRACTUAL_START_DATE:
+ setContractualStartDate(CONTRACTUAL_START_DATE_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__DURATION:
+ setDuration(DURATION_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__CONTRACTUAL_END_DATE:
+ setContractualEndDate(CONTRACTUAL_END_DATE_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__EFFECTIVE_START_DATE:
+ setEffectiveStartDate(EFFECTIVE_START_DATE_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__EFFECTIVE_END_DATE:
+ setEffectiveEndDate(EFFECTIVE_END_DATE_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__CONTRACT_TERM_EXTENSION:
+ setContractTermExtension(CONTRACT_TERM_EXTENSION_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__GLOBAL_COST:
+ setGlobalCost(GLOBAL_COST_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__FUNDING_RATE:
+ setFundingRate(FUNDING_RATE_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__MANPOWER:
+ setManpower(MANPOWER_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__EOTP:
+ setEOTP(EOTP_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__STATISTIC_ORDER:
+ setStatisticOrder(STATISTIC_ORDER_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__INTERNAL_NEED:
+ setInternalNeed(INTERNAL_NEED_EDEFAULT);
+ return;
+ case PepperPackage.PROJECT__CLIENT_NEED:
+ setClientNeed(CLIENT_NEED_EDEFAULT);
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.PROJECT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PepperPackage.PROJECT__OWNED_WORKPACKAGES:
+ return ownedWorkpackages != null && !ownedWorkpackages.isEmpty();
+ case PepperPackage.PROJECT__OWNED_OBJECTIVES:
+ return ownedObjectives != null && !ownedObjectives.isEmpty();
+ case PepperPackage.PROJECT__OWNED_TAG_FOLDERS:
+ return ownedTagFolders != null && !ownedTagFolders.isEmpty();
+ case PepperPackage.PROJECT__OWNED_RISKS:
+ return ownedRisks != null && !ownedRisks.isEmpty();
+ case PepperPackage.PROJECT__REFERENCE:
+ return REFERENCE_EDEFAULT == null ? reference != null : !REFERENCE_EDEFAULT.equals(reference);
+ case PepperPackage.PROJECT__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case PepperPackage.PROJECT__LEADING_UNIT:
+ return leadingUnit != null;
+ case PepperPackage.PROJECT__PARTICIPANT_UNITS:
+ return participantUnits != null && !participantUnits.isEmpty();
+ case PepperPackage.PROJECT__PLANNIFIED_CLIENT_COPIL_MEETINGS:
+ return PLANNIFIED_CLIENT_COPIL_MEETINGS_EDEFAULT == null ? plannifiedClientCopilMeetings != null : !PLANNIFIED_CLIENT_COPIL_MEETINGS_EDEFAULT.equals(plannifiedClientCopilMeetings);
+ case PepperPackage.PROJECT__MAIN_PROGRAM_BRICK:
+ return MAIN_PROGRAM_BRICK_EDEFAULT == null ? mainProgramBrick != null : !MAIN_PROGRAM_BRICK_EDEFAULT.equals(mainProgramBrick);
+ case PepperPackage.PROJECT__STATE:
+ return state != STATE_EDEFAULT;
+ case PepperPackage.PROJECT__CLIENTS:
+ return clients != null && !clients.isEmpty();
+ case PepperPackage.PROJECT__PARTNERS:
+ return partners != null && !partners.isEmpty();
+ case PepperPackage.PROJECT__IS_TRANSVERSE:
+ return IS_TRANSVERSE_EDEFAULT == null ? getIsTransverse() != null : !IS_TRANSVERSE_EDEFAULT.equals(getIsTransverse());
+ case PepperPackage.PROJECT__LEADER:
+ return leader != null;
+ case PepperPackage.PROJECT__MEMBERS:
+ return members != null && !members.isEmpty();
+ case PepperPackage.PROJECT__IS_SENSITIVE:
+ return IS_SENSITIVE_EDEFAULT == null ? isSensitive != null : !IS_SENSITIVE_EDEFAULT.equals(isSensitive);
+ case PepperPackage.PROJECT__CONTRACTUAL_START_DATE:
+ return CONTRACTUAL_START_DATE_EDEFAULT == null ? contractualStartDate != null : !CONTRACTUAL_START_DATE_EDEFAULT.equals(contractualStartDate);
+ case PepperPackage.PROJECT__DURATION:
+ return DURATION_EDEFAULT == null ? duration != null : !DURATION_EDEFAULT.equals(duration);
+ case PepperPackage.PROJECT__CONTRACTUAL_END_DATE:
+ return CONTRACTUAL_END_DATE_EDEFAULT == null ? contractualEndDate != null : !CONTRACTUAL_END_DATE_EDEFAULT.equals(contractualEndDate);
+ case PepperPackage.PROJECT__EFFECTIVE_START_DATE:
+ return EFFECTIVE_START_DATE_EDEFAULT == null ? effectiveStartDate != null : !EFFECTIVE_START_DATE_EDEFAULT.equals(effectiveStartDate);
+ case PepperPackage.PROJECT__EFFECTIVE_END_DATE:
+ return EFFECTIVE_END_DATE_EDEFAULT == null ? effectiveEndDate != null : !EFFECTIVE_END_DATE_EDEFAULT.equals(effectiveEndDate);
+ case PepperPackage.PROJECT__CONTRACT_TERM_EXTENSION:
+ return CONTRACT_TERM_EXTENSION_EDEFAULT == null ? contractTermExtension != null : !CONTRACT_TERM_EXTENSION_EDEFAULT.equals(contractTermExtension);
+ case PepperPackage.PROJECT__GLOBAL_COST:
+ return GLOBAL_COST_EDEFAULT == null ? globalCost != null : !GLOBAL_COST_EDEFAULT.equals(globalCost);
+ case PepperPackage.PROJECT__FUNDING_RATE:
+ return FUNDING_RATE_EDEFAULT == null ? fundingRate != null : !FUNDING_RATE_EDEFAULT.equals(fundingRate);
+ case PepperPackage.PROJECT__FUNDING:
+ return FUNDING_EDEFAULT == null ? getFunding() != null : !FUNDING_EDEFAULT.equals(getFunding());
+ case PepperPackage.PROJECT__MANPOWER:
+ return MANPOWER_EDEFAULT == null ? manpower != null : !MANPOWER_EDEFAULT.equals(manpower);
+ case PepperPackage.PROJECT__EOTP:
+ return EOTP_EDEFAULT == null ? eOTP != null : !EOTP_EDEFAULT.equals(eOTP);
+ case PepperPackage.PROJECT__STATISTIC_ORDER:
+ return STATISTIC_ORDER_EDEFAULT == null ? statisticOrder != null : !STATISTIC_ORDER_EDEFAULT.equals(statisticOrder);
+ case PepperPackage.PROJECT__INTERNAL_NEED:
+ return INTERNAL_NEED_EDEFAULT == null ? internalNeed != null : !INTERNAL_NEED_EDEFAULT.equals(internalNeed);
+ case PepperPackage.PROJECT__CLIENT_NEED:
+ return CLIENT_NEED_EDEFAULT == null ? clientNeed != null : !CLIENT_NEED_EDEFAULT.equals(clientNeed);
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", reference: ");
+ result.append(reference);
+ result.append(", description: ");
+ result.append(description);
+ result.append(", plannifiedClientCopilMeetings: ");
+ result.append(plannifiedClientCopilMeetings);
+ result.append(", mainProgramBrick: ");
+ result.append(mainProgramBrick);
+ result.append(", state: ");
+ result.append(state);
+ result.append(", isSensitive: ");
+ result.append(isSensitive);
+ result.append(", contractualStartDate: ");
+ result.append(contractualStartDate);
+ result.append(", duration: ");
+ result.append(duration);
+ result.append(", contractualEndDate: ");
+ result.append(contractualEndDate);
+ result.append(", effectiveStartDate: ");
+ result.append(effectiveStartDate);
+ result.append(", effectiveEndDate: ");
+ result.append(effectiveEndDate);
+ result.append(", contractTermExtension: ");
+ result.append(contractTermExtension);
+ result.append(", globalCost: ");
+ result.append(globalCost);
+ result.append(", fundingRate: ");
+ result.append(fundingRate);
+ result.append(", manpower: ");
+ result.append(manpower);
+ result.append(", eOTP: ");
+ result.append(eOTP);
+ result.append(", statisticOrder: ");
+ result.append(statisticOrder);
+ result.append(", internalNeed: ");
+ result.append(internalNeed);
+ result.append(", clientNeed: ");
+ result.append(clientNeed);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ProjectImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/ResourceFolderImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/ResourceFolderImpl.java
new file mode 100644
index 0000000..5eb8ebe
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/ResourceFolderImpl.java
@@ -0,0 +1,279 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Resource;
+import pepper.peppermm.ResourceFolder;
+
+/**
+ * An implementation of the model object 'Resource Folder'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link ResourceFolderImpl#getName Name}
+ * - {@link ResourceFolderImpl#getOwnedResources Owned Resources}
+ * - {@link ResourceFolderImpl#getSubFolders Sub Folders}
+ *
+ *
+ * @generated
+ */
+public class ResourceFolderImpl extends MinimalEObjectImpl.Container implements ResourceFolder {
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getOwnedResources() Owned Resources}' containment reference list.
+ *
+ * @see #getOwnedResources()
+ * @generated
+ * @ordered
+ */
+ protected EList ownedResources;
+
+ /**
+ * The cached value of the '{@link #getSubFolders() Sub Folders}' containment reference list.
+ *
+ * @see #getSubFolders()
+ * @generated
+ * @ordered
+ */
+ protected EList subFolders;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected ResourceFolderImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.RESOURCE_FOLDER;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.RESOURCE_FOLDER__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getOwnedResources() {
+ if (ownedResources == null) {
+ ownedResources = new EObjectContainmentEList(Resource.class, this, PepperPackage.RESOURCE_FOLDER__OWNED_RESOURCES);
+ }
+ return ownedResources;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getSubFolders() {
+ if (subFolders == null) {
+ subFolders = new EObjectContainmentEList(ResourceFolder.class, this, PepperPackage.RESOURCE_FOLDER__SUB_FOLDERS);
+ }
+ return subFolders;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PepperPackage.RESOURCE_FOLDER__OWNED_RESOURCES:
+ return ((InternalEList>) getOwnedResources()).basicRemove(otherEnd, msgs);
+ case PepperPackage.RESOURCE_FOLDER__SUB_FOLDERS:
+ return ((InternalEList>) getSubFolders()).basicRemove(otherEnd, msgs);
+ default:
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.RESOURCE_FOLDER__NAME:
+ return getName();
+ case PepperPackage.RESOURCE_FOLDER__OWNED_RESOURCES:
+ return getOwnedResources();
+ case PepperPackage.RESOURCE_FOLDER__SUB_FOLDERS:
+ return getSubFolders();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.RESOURCE_FOLDER__NAME:
+ setName((String) newValue);
+ return;
+ case PepperPackage.RESOURCE_FOLDER__OWNED_RESOURCES:
+ getOwnedResources().clear();
+ getOwnedResources().addAll((Collection extends Resource>) newValue);
+ return;
+ case PepperPackage.RESOURCE_FOLDER__SUB_FOLDERS:
+ getSubFolders().clear();
+ getSubFolders().addAll((Collection extends ResourceFolder>) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.RESOURCE_FOLDER__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PepperPackage.RESOURCE_FOLDER__OWNED_RESOURCES:
+ getOwnedResources().clear();
+ return;
+ case PepperPackage.RESOURCE_FOLDER__SUB_FOLDERS:
+ getSubFolders().clear();
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.RESOURCE_FOLDER__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PepperPackage.RESOURCE_FOLDER__OWNED_RESOURCES:
+ return ownedResources != null && !ownedResources.isEmpty();
+ case PepperPackage.RESOURCE_FOLDER__SUB_FOLDERS:
+ return subFolders != null && !subFolders.isEmpty();
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ResourceFolderImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/ResourceImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/ResourceImpl.java
new file mode 100644
index 0000000..c77233e
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/ResourceImpl.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Resource;
+
+/**
+ * An implementation of the model object 'Resource'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link ResourceImpl#getName Name}
+ *
+ *
+ * @generated
+ */
+public abstract class ResourceImpl extends MinimalEObjectImpl.Container implements Resource {
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected ResourceImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.RESOURCE;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.RESOURCE__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.RESOURCE__NAME:
+ return getName();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.RESOURCE__NAME:
+ setName((String) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.RESOURCE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.RESOURCE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ResourceImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/RiskImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/RiskImpl.java
new file mode 100644
index 0000000..b408d70
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/RiskImpl.java
@@ -0,0 +1,572 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import java.time.LocalDate;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Person;
+import pepper.peppermm.Risk;
+import pepper.peppermm.RiskKind;
+import pepper.peppermm.RiskState;
+import pepper.peppermm.Workpackage;
+
+/**
+ * An implementation of the model object 'Risk'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link RiskImpl#getKind Kind}
+ * - {@link RiskImpl#getDescription Description}
+ * - {@link RiskImpl#getCriticity Criticity}
+ * - {@link RiskImpl#getAction Action}
+ * - {@link RiskImpl#getResponsible Responsible}
+ * - {@link RiskImpl#getOperationDate Operation Date}
+ * - {@link RiskImpl#getState State}
+ * - {@link RiskImpl#getWorkpackages Workpackages}
+ *
+ *
+ * @generated
+ */
+public class RiskImpl extends MinimalEObjectImpl.Container implements Risk {
+ /**
+ * The default value of the '{@link #getKind() Kind}' attribute.
+ *
+ * @see #getKind()
+ * @generated NOT
+ * @ordered
+ */
+ protected static final RiskKind KIND_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getKind() Kind}' attribute.
+ *
+ * @see #getKind()
+ * @generated
+ * @ordered
+ */
+ protected RiskKind kind = KIND_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDescription() Description}' attribute.
+ *
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDescription() Description}' attribute.
+ *
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCriticity() Criticity}' attribute.
+ *
+ * @see #getCriticity()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer CRITICITY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCriticity() Criticity}' attribute.
+ *
+ * @see #getCriticity()
+ * @generated
+ * @ordered
+ */
+ protected Integer criticity = CRITICITY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAction() Action}' attribute.
+ *
+ * @see #getAction()
+ * @generated
+ * @ordered
+ */
+ protected static final String ACTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getAction() Action}' attribute.
+ *
+ * @see #getAction()
+ * @generated
+ * @ordered
+ */
+ protected String action = ACTION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getResponsible() Responsible}' reference.
+ *
+ * @see #getResponsible()
+ * @generated
+ * @ordered
+ */
+ protected Person responsible;
+
+ /**
+ * The default value of the '{@link #getOperationDate() Operation Date}' attribute.
+ *
+ *
+ * @see #getOperationDate()
+ * @generated
+ * @ordered
+ */
+ protected static final LocalDate OPERATION_DATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getOperationDate() Operation Date}' attribute.
+ *
+ *
+ * @see #getOperationDate()
+ * @generated
+ * @ordered
+ */
+ protected LocalDate operationDate = OPERATION_DATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getState() State}' attribute.
+ *
+ * @see #getState()
+ * @generated
+ * @ordered
+ */
+ protected static final RiskState STATE_EDEFAULT = RiskState.ON_GOING;
+
+ /**
+ * The cached value of the '{@link #getState() State}' attribute.
+ *
+ * @see #getState()
+ * @generated
+ * @ordered
+ */
+ protected RiskState state = STATE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getWorkpackages() Workpackages}' reference list.
+ *
+ * @see #getWorkpackages()
+ * @generated
+ * @ordered
+ */
+ protected EList workpackages;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected RiskImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.RISK;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public RiskKind getKind() {
+ return kind;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setKind(RiskKind newKind) {
+ RiskKind oldKind = kind;
+ kind = newKind == null ? KIND_EDEFAULT : newKind;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.RISK__KIND, oldKind, kind));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.RISK__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Integer getCriticity() {
+ return criticity;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setCriticity(Integer newCriticity) {
+ Integer oldCriticity = criticity;
+ criticity = newCriticity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.RISK__CRITICITY, oldCriticity, criticity));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getAction() {
+ return action;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setAction(String newAction) {
+ String oldAction = action;
+ action = newAction;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.RISK__ACTION, oldAction, action));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Person getResponsible() {
+ if (responsible != null && responsible.eIsProxy()) {
+ InternalEObject oldResponsible = (InternalEObject) responsible;
+ responsible = (Person) eResolveProxy(oldResponsible);
+ if (responsible != oldResponsible) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, PepperPackage.RISK__RESPONSIBLE, oldResponsible, responsible));
+ }
+ }
+ return responsible;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Person basicGetResponsible() {
+ return responsible;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setResponsible(Person newResponsible) {
+ Person oldResponsible = responsible;
+ responsible = newResponsible;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.RISK__RESPONSIBLE, oldResponsible, responsible));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public LocalDate getOperationDate() {
+ return operationDate;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setOperationDate(LocalDate newOperationDate) {
+ LocalDate oldOperationDate = operationDate;
+ operationDate = newOperationDate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.RISK__OPERATION_DATE, oldOperationDate, operationDate));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public RiskState getState() {
+ return state;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setState(RiskState newState) {
+ RiskState oldState = state;
+ state = newState == null ? STATE_EDEFAULT : newState;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.RISK__STATE, oldState, state));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getWorkpackages() {
+ if (workpackages == null) {
+ workpackages = new EObjectResolvingEList(Workpackage.class, this, PepperPackage.RISK__WORKPACKAGES);
+ }
+ return workpackages;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.RISK__KIND:
+ return getKind();
+ case PepperPackage.RISK__DESCRIPTION:
+ return getDescription();
+ case PepperPackage.RISK__CRITICITY:
+ return getCriticity();
+ case PepperPackage.RISK__ACTION:
+ return getAction();
+ case PepperPackage.RISK__RESPONSIBLE:
+ if (resolve)
+ return getResponsible();
+ return basicGetResponsible();
+ case PepperPackage.RISK__OPERATION_DATE:
+ return getOperationDate();
+ case PepperPackage.RISK__STATE:
+ return getState();
+ case PepperPackage.RISK__WORKPACKAGES:
+ return getWorkpackages();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.RISK__KIND:
+ setKind((RiskKind) newValue);
+ return;
+ case PepperPackage.RISK__DESCRIPTION:
+ setDescription((String) newValue);
+ return;
+ case PepperPackage.RISK__CRITICITY:
+ setCriticity((Integer) newValue);
+ return;
+ case PepperPackage.RISK__ACTION:
+ setAction((String) newValue);
+ return;
+ case PepperPackage.RISK__RESPONSIBLE:
+ setResponsible((Person) newValue);
+ return;
+ case PepperPackage.RISK__OPERATION_DATE:
+ setOperationDate((LocalDate) newValue);
+ return;
+ case PepperPackage.RISK__STATE:
+ setState((RiskState) newValue);
+ return;
+ case PepperPackage.RISK__WORKPACKAGES:
+ getWorkpackages().clear();
+ getWorkpackages().addAll((Collection extends Workpackage>) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.RISK__KIND:
+ setKind(KIND_EDEFAULT);
+ return;
+ case PepperPackage.RISK__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case PepperPackage.RISK__CRITICITY:
+ setCriticity(CRITICITY_EDEFAULT);
+ return;
+ case PepperPackage.RISK__ACTION:
+ setAction(ACTION_EDEFAULT);
+ return;
+ case PepperPackage.RISK__RESPONSIBLE:
+ setResponsible((Person) null);
+ return;
+ case PepperPackage.RISK__OPERATION_DATE:
+ setOperationDate(OPERATION_DATE_EDEFAULT);
+ return;
+ case PepperPackage.RISK__STATE:
+ setState(STATE_EDEFAULT);
+ return;
+ case PepperPackage.RISK__WORKPACKAGES:
+ getWorkpackages().clear();
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.RISK__KIND:
+ return kind != KIND_EDEFAULT;
+ case PepperPackage.RISK__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case PepperPackage.RISK__CRITICITY:
+ return CRITICITY_EDEFAULT == null ? criticity != null : !CRITICITY_EDEFAULT.equals(criticity);
+ case PepperPackage.RISK__ACTION:
+ return ACTION_EDEFAULT == null ? action != null : !ACTION_EDEFAULT.equals(action);
+ case PepperPackage.RISK__RESPONSIBLE:
+ return responsible != null;
+ case PepperPackage.RISK__OPERATION_DATE:
+ return OPERATION_DATE_EDEFAULT == null ? operationDate != null : !OPERATION_DATE_EDEFAULT.equals(operationDate);
+ case PepperPackage.RISK__STATE:
+ return state != STATE_EDEFAULT;
+ case PepperPackage.RISK__WORKPACKAGES:
+ return workpackages != null && !workpackages.isEmpty();
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (kind: ");
+ result.append(kind);
+ result.append(", description: ");
+ result.append(description);
+ result.append(", criticity: ");
+ result.append(criticity);
+ result.append(", action: ");
+ result.append(action);
+ result.append(", operationDate: ");
+ result.append(operationDate);
+ result.append(", state: ");
+ result.append(state);
+ result.append(')');
+ return result.toString();
+ }
+
+} // RiskImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TagFolderImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TagFolderImpl.java
new file mode 100644
index 0000000..8b4a0b9
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TagFolderImpl.java
@@ -0,0 +1,278 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.TagFolder;
+import pepper.peppermm.TaskTag;
+
+/**
+ * An implementation of the model object 'Tag Folder'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link TagFolderImpl#getName Name}
+ * - {@link TagFolderImpl#getOwnedTags Owned Tags}
+ * - {@link TagFolderImpl#getSubFolders Sub Folders}
+ *
+ *
+ * @generated
+ */
+public class TagFolderImpl extends MinimalEObjectImpl.Container implements TagFolder {
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getOwnedTags() Owned Tags}' containment reference list.
+ *
+ * @see #getOwnedTags()
+ * @generated
+ * @ordered
+ */
+ protected EList ownedTags;
+
+ /**
+ * The cached value of the '{@link #getSubFolders() Sub Folders}' containment reference list.
+ *
+ * @see #getSubFolders()
+ * @generated
+ * @ordered
+ */
+ protected EList subFolders;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected TagFolderImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.TAG_FOLDER;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.TAG_FOLDER__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getOwnedTags() {
+ if (ownedTags == null) {
+ ownedTags = new EObjectContainmentEList(TaskTag.class, this, PepperPackage.TAG_FOLDER__OWNED_TAGS);
+ }
+ return ownedTags;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getSubFolders() {
+ if (subFolders == null) {
+ subFolders = new EObjectContainmentEList(TagFolder.class, this, PepperPackage.TAG_FOLDER__SUB_FOLDERS);
+ }
+ return subFolders;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PepperPackage.TAG_FOLDER__OWNED_TAGS:
+ return ((InternalEList>) getOwnedTags()).basicRemove(otherEnd, msgs);
+ case PepperPackage.TAG_FOLDER__SUB_FOLDERS:
+ return ((InternalEList>) getSubFolders()).basicRemove(otherEnd, msgs);
+ default:
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.TAG_FOLDER__NAME:
+ return getName();
+ case PepperPackage.TAG_FOLDER__OWNED_TAGS:
+ return getOwnedTags();
+ case PepperPackage.TAG_FOLDER__SUB_FOLDERS:
+ return getSubFolders();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.TAG_FOLDER__NAME:
+ setName((String) newValue);
+ return;
+ case PepperPackage.TAG_FOLDER__OWNED_TAGS:
+ getOwnedTags().clear();
+ getOwnedTags().addAll((Collection extends TaskTag>) newValue);
+ return;
+ case PepperPackage.TAG_FOLDER__SUB_FOLDERS:
+ getSubFolders().clear();
+ getSubFolders().addAll((Collection extends TagFolder>) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.TAG_FOLDER__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PepperPackage.TAG_FOLDER__OWNED_TAGS:
+ getOwnedTags().clear();
+ return;
+ case PepperPackage.TAG_FOLDER__SUB_FOLDERS:
+ getSubFolders().clear();
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.TAG_FOLDER__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PepperPackage.TAG_FOLDER__OWNED_TAGS:
+ return ownedTags != null && !ownedTags.isEmpty();
+ case PepperPackage.TAG_FOLDER__SUB_FOLDERS:
+ return subFolders != null && !subFolders.isEmpty();
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} // TagFolderImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TaskImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TaskImpl.java
new file mode 100644
index 0000000..6248564
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TaskImpl.java
@@ -0,0 +1,201 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import pepper.peppermm.DependencyLink;
+import pepper.peppermm.DependencyRelatedObject;
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Task;
+
+/**
+ * An implementation of the model object 'Task'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link TaskImpl#getDependencies Dependencies}
+ *
+ *
+ * @generated
+ */
+public class TaskImpl extends AbstractTaskImpl implements Task {
+ /**
+ * The cached value of the '{@link #getDependencies() Dependencies}' containment reference list.
+ *
+ * @see #getDependencies()
+ * @generated
+ * @ordered
+ */
+ protected EList dependencies;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected TaskImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.TASK;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getDependencies() {
+ if (dependencies == null) {
+ dependencies = new EObjectContainmentEList(DependencyLink.class, this, PepperPackage.TASK__DEPENDENCIES);
+ }
+ return dependencies;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PepperPackage.TASK__DEPENDENCIES:
+ return ((InternalEList>) getDependencies()).basicRemove(otherEnd, msgs);
+ default:
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.TASK__DEPENDENCIES:
+ return getDependencies();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.TASK__DEPENDENCIES:
+ getDependencies().clear();
+ getDependencies().addAll((Collection extends DependencyLink>) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.TASK__DEPENDENCIES:
+ getDependencies().clear();
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.TASK__DEPENDENCIES:
+ return dependencies != null && !dependencies.isEmpty();
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class> baseClass) {
+ if (baseClass == DependencyRelatedObject.class) {
+ switch (derivedFeatureID) {
+ case PepperPackage.TASK__DEPENDENCIES:
+ return PepperPackage.DEPENDENCY_RELATED_OBJECT__DEPENDENCIES;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class> baseClass) {
+ if (baseClass == DependencyRelatedObject.class) {
+ switch (baseFeatureID) {
+ case PepperPackage.DEPENDENCY_RELATED_OBJECT__DEPENDENCIES:
+ return PepperPackage.TASK__DEPENDENCIES;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+} // TaskImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TaskTagImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TaskTagImpl.java
new file mode 100644
index 0000000..8fe05ac
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TaskTagImpl.java
@@ -0,0 +1,236 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.TaskTag;
+
+/**
+ * An implementation of the model object 'Task Tag'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link TaskTagImpl#getPrefix Prefix}
+ * - {@link TaskTagImpl#getSuffix Suffix}
+ *
+ *
+ * @generated
+ */
+public class TaskTagImpl extends MinimalEObjectImpl.Container implements TaskTag {
+ /**
+ * The default value of the '{@link #getPrefix() Prefix}' attribute.
+ *
+ * @see #getPrefix()
+ * @generated
+ * @ordered
+ */
+ protected static final String PREFIX_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPrefix() Prefix}' attribute.
+ *
+ * @see #getPrefix()
+ * @generated
+ * @ordered
+ */
+ protected String prefix = PREFIX_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSuffix() Suffix}' attribute.
+ *
+ * @see #getSuffix()
+ * @generated
+ * @ordered
+ */
+ protected static final String SUFFIX_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSuffix() Suffix}' attribute.
+ *
+ * @see #getSuffix()
+ * @generated
+ * @ordered
+ */
+ protected String suffix = SUFFIX_EDEFAULT;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected TaskTagImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.TASK_TAG;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getPrefix() {
+ return prefix;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setPrefix(String newPrefix) {
+ String oldPrefix = prefix;
+ prefix = newPrefix;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.TASK_TAG__PREFIX, oldPrefix, prefix));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getSuffix() {
+ return suffix;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setSuffix(String newSuffix) {
+ String oldSuffix = suffix;
+ suffix = newSuffix;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.TASK_TAG__SUFFIX, oldSuffix, suffix));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.TASK_TAG__PREFIX:
+ return getPrefix();
+ case PepperPackage.TASK_TAG__SUFFIX:
+ return getSuffix();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.TASK_TAG__PREFIX:
+ setPrefix((String) newValue);
+ return;
+ case PepperPackage.TASK_TAG__SUFFIX:
+ setSuffix((String) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.TASK_TAG__PREFIX:
+ setPrefix(PREFIX_EDEFAULT);
+ return;
+ case PepperPackage.TASK_TAG__SUFFIX:
+ setSuffix(SUFFIX_EDEFAULT);
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.TASK_TAG__PREFIX:
+ return PREFIX_EDEFAULT == null ? prefix != null : !PREFIX_EDEFAULT.equals(prefix);
+ case PepperPackage.TASK_TAG__SUFFIX:
+ return SUFFIX_EDEFAULT == null ? suffix != null : !SUFFIX_EDEFAULT.equals(suffix);
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (prefix: ");
+ result.append(prefix);
+ result.append(", suffix: ");
+ result.append(suffix);
+ result.append(')');
+ return result.toString();
+ }
+
+} // TaskTagImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TeamImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TeamImpl.java
new file mode 100644
index 0000000..c4f930a
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/TeamImpl.java
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Person;
+import pepper.peppermm.Team;
+
+/**
+ * An implementation of the model object 'Team'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link TeamImpl#getMembers Members}
+ *
+ *
+ * @generated
+ */
+public class TeamImpl extends ResourceImpl implements Team {
+ /**
+ * The cached value of the '{@link #getMembers() Members}' reference list.
+ *
+ * @see #getMembers()
+ * @generated
+ * @ordered
+ */
+ protected EList members;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected TeamImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.TEAM;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getMembers() {
+ if (members == null) {
+ members = new EObjectResolvingEList(Person.class, this, PepperPackage.TEAM__MEMBERS);
+ }
+ return members;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.TEAM__MEMBERS:
+ return getMembers();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.TEAM__MEMBERS:
+ getMembers().clear();
+ getMembers().addAll((Collection extends Person>) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.TEAM__MEMBERS:
+ getMembers().clear();
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.TEAM__MEMBERS:
+ return members != null && !members.isEmpty();
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+} // TeamImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/WorkpackageArtefactImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/WorkpackageArtefactImpl.java
new file mode 100644
index 0000000..d01b231
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/WorkpackageArtefactImpl.java
@@ -0,0 +1,697 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import java.time.LocalDate;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Person;
+import pepper.peppermm.WorkpackageArtefact;
+import pepper.peppermm.WorkpackageArtefactNature;
+
+/**
+ * An implementation of the model object 'Workpackage Artefact'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link WorkpackageArtefactImpl#getName Name}
+ * - {@link WorkpackageArtefactImpl#getDescription Description}
+ * - {@link WorkpackageArtefactImpl#getNature Nature}
+ * - {@link WorkpackageArtefactImpl#getPlannedDeadline Planned Deadline}
+ * - {@link WorkpackageArtefactImpl#getEffectiveDeadLine Effective Dead Line}
+ * - {@link WorkpackageArtefactImpl#getIsInvoiceTrigger Is Invoice Trigger}
+ * - {@link WorkpackageArtefactImpl#getInvoiceAmount Invoice Amount}
+ * - {@link WorkpackageArtefactImpl#getResponsible Responsible}
+ * - {@link WorkpackageArtefactImpl#getVersion Version}
+ * - {@link WorkpackageArtefactImpl#getIsObsolete Is Obsolete}
+ *
+ *
+ * @generated
+ */
+public class WorkpackageArtefactImpl extends MinimalEObjectImpl.Container implements WorkpackageArtefact {
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDescription() Description}' attribute.
+ *
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDescription() Description}' attribute.
+ *
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNature() Nature}' attribute.
+ *
+ * @see #getNature()
+ * @generated NOT
+ * @ordered
+ */
+ protected static final WorkpackageArtefactNature NATURE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getNature() Nature}' attribute.
+ *
+ * @see #getNature()
+ * @generated
+ * @ordered
+ */
+ protected WorkpackageArtefactNature nature = NATURE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPlannedDeadline() Planned Deadline}' attribute.
+ *
+ * @see #getPlannedDeadline()
+ * @generated
+ * @ordered
+ */
+ protected static final LocalDate PLANNED_DEADLINE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPlannedDeadline() Planned Deadline}' attribute.
+ *
+ * @see #getPlannedDeadline()
+ * @generated
+ * @ordered
+ */
+ protected LocalDate plannedDeadline = PLANNED_DEADLINE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEffectiveDeadLine() Effective Dead Line}' attribute.
+ *
+ * @see #getEffectiveDeadLine()
+ * @generated
+ * @ordered
+ */
+ protected static final LocalDate EFFECTIVE_DEAD_LINE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEffectiveDeadLine() Effective Dead Line}' attribute.
+ *
+ * @see #getEffectiveDeadLine()
+ * @generated
+ * @ordered
+ */
+ protected LocalDate effectiveDeadLine = EFFECTIVE_DEAD_LINE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getIsInvoiceTrigger() Is Invoice Trigger}' attribute.
+ *
+ * @see #getIsInvoiceTrigger()
+ * @generated
+ * @ordered
+ */
+ protected static final Boolean IS_INVOICE_TRIGGER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getIsInvoiceTrigger() Is Invoice Trigger}' attribute.
+ *
+ * @see #getIsInvoiceTrigger()
+ * @generated
+ * @ordered
+ */
+ protected Boolean isInvoiceTrigger = IS_INVOICE_TRIGGER_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getInvoiceAmount() Invoice Amount}' attribute.
+ *
+ *
+ * @see #getInvoiceAmount()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer INVOICE_AMOUNT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getInvoiceAmount() Invoice Amount}' attribute.
+ *
+ *
+ * @see #getInvoiceAmount()
+ * @generated
+ * @ordered
+ */
+ protected Integer invoiceAmount = INVOICE_AMOUNT_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getResponsible() Responsible}' reference.
+ *
+ * @see #getResponsible()
+ * @generated
+ * @ordered
+ */
+ protected Person responsible;
+
+ /**
+ * The default value of the '{@link #getVersion() Version}' attribute.
+ *
+ * @see #getVersion()
+ * @generated
+ * @ordered
+ */
+ protected static final String VERSION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getVersion() Version}' attribute.
+ *
+ * @see #getVersion()
+ * @generated
+ * @ordered
+ */
+ protected String version = VERSION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getIsObsolete() Is Obsolete}' attribute.
+ *
+ * @see #getIsObsolete()
+ * @generated
+ * @ordered
+ */
+ protected static final Boolean IS_OBSOLETE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getIsObsolete() Is Obsolete}' attribute.
+ *
+ * @see #getIsObsolete()
+ * @generated
+ * @ordered
+ */
+ protected Boolean isObsolete = IS_OBSOLETE_EDEFAULT;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected WorkpackageArtefactImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.WORKPACKAGE_ARTEFACT;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE_ARTEFACT__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE_ARTEFACT__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public WorkpackageArtefactNature getNature() {
+ return nature;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setNature(WorkpackageArtefactNature newNature) {
+ WorkpackageArtefactNature oldNature = nature;
+ nature = newNature == null ? NATURE_EDEFAULT : newNature;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE_ARTEFACT__NATURE, oldNature, nature));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public LocalDate getPlannedDeadline() {
+ return plannedDeadline;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setPlannedDeadline(LocalDate newPlannedDeadline) {
+ LocalDate oldPlannedDeadline = plannedDeadline;
+ plannedDeadline = newPlannedDeadline;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE_ARTEFACT__PLANNED_DEADLINE, oldPlannedDeadline, plannedDeadline));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public LocalDate getEffectiveDeadLine() {
+ return effectiveDeadLine;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setEffectiveDeadLine(LocalDate newEffectiveDeadLine) {
+ LocalDate oldEffectiveDeadLine = effectiveDeadLine;
+ effectiveDeadLine = newEffectiveDeadLine;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE_ARTEFACT__EFFECTIVE_DEAD_LINE, oldEffectiveDeadLine, effectiveDeadLine));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Boolean getIsInvoiceTrigger() {
+ return isInvoiceTrigger;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setIsInvoiceTrigger(Boolean newIsInvoiceTrigger) {
+ Boolean oldIsInvoiceTrigger = isInvoiceTrigger;
+ isInvoiceTrigger = newIsInvoiceTrigger;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE_ARTEFACT__IS_INVOICE_TRIGGER, oldIsInvoiceTrigger, isInvoiceTrigger));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Integer getInvoiceAmount() {
+ return invoiceAmount;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setInvoiceAmount(Integer newInvoiceAmount) {
+ Integer oldInvoiceAmount = invoiceAmount;
+ invoiceAmount = newInvoiceAmount;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE_ARTEFACT__INVOICE_AMOUNT, oldInvoiceAmount, invoiceAmount));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Person getResponsible() {
+ if (responsible != null && responsible.eIsProxy()) {
+ InternalEObject oldResponsible = (InternalEObject) responsible;
+ responsible = (Person) eResolveProxy(oldResponsible);
+ if (responsible != oldResponsible) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, PepperPackage.WORKPACKAGE_ARTEFACT__RESPONSIBLE, oldResponsible, responsible));
+ }
+ }
+ return responsible;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Person basicGetResponsible() {
+ return responsible;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setResponsible(Person newResponsible) {
+ Person oldResponsible = responsible;
+ responsible = newResponsible;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE_ARTEFACT__RESPONSIBLE, oldResponsible, responsible));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getVersion() {
+ return version;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setVersion(String newVersion) {
+ String oldVersion = version;
+ version = newVersion;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE_ARTEFACT__VERSION, oldVersion, version));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Boolean getIsObsolete() {
+ return isObsolete;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setIsObsolete(Boolean newIsObsolete) {
+ Boolean oldIsObsolete = isObsolete;
+ isObsolete = newIsObsolete;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE_ARTEFACT__IS_OBSOLETE, oldIsObsolete, isObsolete));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.WORKPACKAGE_ARTEFACT__NAME:
+ return getName();
+ case PepperPackage.WORKPACKAGE_ARTEFACT__DESCRIPTION:
+ return getDescription();
+ case PepperPackage.WORKPACKAGE_ARTEFACT__NATURE:
+ return getNature();
+ case PepperPackage.WORKPACKAGE_ARTEFACT__PLANNED_DEADLINE:
+ return getPlannedDeadline();
+ case PepperPackage.WORKPACKAGE_ARTEFACT__EFFECTIVE_DEAD_LINE:
+ return getEffectiveDeadLine();
+ case PepperPackage.WORKPACKAGE_ARTEFACT__IS_INVOICE_TRIGGER:
+ return getIsInvoiceTrigger();
+ case PepperPackage.WORKPACKAGE_ARTEFACT__INVOICE_AMOUNT:
+ return getInvoiceAmount();
+ case PepperPackage.WORKPACKAGE_ARTEFACT__RESPONSIBLE:
+ if (resolve)
+ return getResponsible();
+ return basicGetResponsible();
+ case PepperPackage.WORKPACKAGE_ARTEFACT__VERSION:
+ return getVersion();
+ case PepperPackage.WORKPACKAGE_ARTEFACT__IS_OBSOLETE:
+ return getIsObsolete();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.WORKPACKAGE_ARTEFACT__NAME:
+ setName((String) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__DESCRIPTION:
+ setDescription((String) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__NATURE:
+ setNature((WorkpackageArtefactNature) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__PLANNED_DEADLINE:
+ setPlannedDeadline((LocalDate) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__EFFECTIVE_DEAD_LINE:
+ setEffectiveDeadLine((LocalDate) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__IS_INVOICE_TRIGGER:
+ setIsInvoiceTrigger((Boolean) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__INVOICE_AMOUNT:
+ setInvoiceAmount((Integer) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__RESPONSIBLE:
+ setResponsible((Person) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__VERSION:
+ setVersion((String) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__IS_OBSOLETE:
+ setIsObsolete((Boolean) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.WORKPACKAGE_ARTEFACT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__NATURE:
+ setNature(NATURE_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__PLANNED_DEADLINE:
+ setPlannedDeadline(PLANNED_DEADLINE_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__EFFECTIVE_DEAD_LINE:
+ setEffectiveDeadLine(EFFECTIVE_DEAD_LINE_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__IS_INVOICE_TRIGGER:
+ setIsInvoiceTrigger(IS_INVOICE_TRIGGER_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__INVOICE_AMOUNT:
+ setInvoiceAmount(INVOICE_AMOUNT_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__RESPONSIBLE:
+ setResponsible((Person) null);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__VERSION:
+ setVersion(VERSION_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__IS_OBSOLETE:
+ setIsObsolete(IS_OBSOLETE_EDEFAULT);
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.WORKPACKAGE_ARTEFACT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PepperPackage.WORKPACKAGE_ARTEFACT__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case PepperPackage.WORKPACKAGE_ARTEFACT__NATURE:
+ return nature != NATURE_EDEFAULT;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__PLANNED_DEADLINE:
+ return PLANNED_DEADLINE_EDEFAULT == null ? plannedDeadline != null : !PLANNED_DEADLINE_EDEFAULT.equals(plannedDeadline);
+ case PepperPackage.WORKPACKAGE_ARTEFACT__EFFECTIVE_DEAD_LINE:
+ return EFFECTIVE_DEAD_LINE_EDEFAULT == null ? effectiveDeadLine != null : !EFFECTIVE_DEAD_LINE_EDEFAULT.equals(effectiveDeadLine);
+ case PepperPackage.WORKPACKAGE_ARTEFACT__IS_INVOICE_TRIGGER:
+ return IS_INVOICE_TRIGGER_EDEFAULT == null ? isInvoiceTrigger != null : !IS_INVOICE_TRIGGER_EDEFAULT.equals(isInvoiceTrigger);
+ case PepperPackage.WORKPACKAGE_ARTEFACT__INVOICE_AMOUNT:
+ return INVOICE_AMOUNT_EDEFAULT == null ? invoiceAmount != null : !INVOICE_AMOUNT_EDEFAULT.equals(invoiceAmount);
+ case PepperPackage.WORKPACKAGE_ARTEFACT__RESPONSIBLE:
+ return responsible != null;
+ case PepperPackage.WORKPACKAGE_ARTEFACT__VERSION:
+ return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
+ case PepperPackage.WORKPACKAGE_ARTEFACT__IS_OBSOLETE:
+ return IS_OBSOLETE_EDEFAULT == null ? isObsolete != null : !IS_OBSOLETE_EDEFAULT.equals(isObsolete);
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", description: ");
+ result.append(description);
+ result.append(", nature: ");
+ result.append(nature);
+ result.append(", plannedDeadline: ");
+ result.append(plannedDeadline);
+ result.append(", effectiveDeadLine: ");
+ result.append(effectiveDeadLine);
+ result.append(", isInvoiceTrigger: ");
+ result.append(isInvoiceTrigger);
+ result.append(", invoiceAmount: ");
+ result.append(invoiceAmount);
+ result.append(", version: ");
+ result.append(version);
+ result.append(", isObsolete: ");
+ result.append(isObsolete);
+ result.append(')');
+ return result.toString();
+ }
+
+} // WorkpackageArtefactImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/impl/WorkpackageImpl.java b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/WorkpackageImpl.java
new file mode 100644
index 0000000..be5a392
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/impl/WorkpackageImpl.java
@@ -0,0 +1,876 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.impl;
+
+import java.time.LocalDate;
+
+import java.time.temporal.ChronoUnit;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import pepper.peppermm.DependencyLink;
+import pepper.peppermm.Objective;
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Person;
+import pepper.peppermm.Task;
+import pepper.peppermm.TaskTimeBoundariesConstraint;
+import pepper.peppermm.Workpackage;
+import pepper.peppermm.WorkpackageArtefact;
+
+/**
+ * An implementation of the model object 'Workpackage'.
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link WorkpackageImpl#getDependencies Dependencies}
+ * - {@link WorkpackageImpl#getName Name}
+ * - {@link WorkpackageImpl#getDescription Description}
+ * - {@link WorkpackageImpl#getStartDate Start Date}
+ * - {@link WorkpackageImpl#getEndDate End Date}
+ * - {@link WorkpackageImpl#getLeader Leader}
+ * - {@link WorkpackageImpl#getParticipants Participants}
+ * - {@link WorkpackageImpl#getEffort Effort}
+ * - {@link WorkpackageImpl#getOutputs Outputs}
+ * - {@link WorkpackageImpl#getOwnedTasks Owned Tasks}
+ * - {@link WorkpackageImpl#getOwnedObjectives Owned Objectives}
+ * - {@link WorkpackageImpl#getProgress Progress}
+ * - {@link WorkpackageImpl#getCalculationOption Calculation Option}
+ * - {@link WorkpackageImpl#getDuration Duration}
+ *
+ *
+ * @generated
+ */
+public class WorkpackageImpl extends MinimalEObjectImpl.Container implements Workpackage {
+ /**
+ * The cached value of the '{@link #getDependencies() Dependencies}' containment reference list.
+ *
+ * @see #getDependencies()
+ * @generated
+ * @ordered
+ */
+ protected EList dependencies;
+
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDescription() Description}' attribute.
+ *
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDescription() Description}' attribute.
+ *
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getStartDate() Start Date}' attribute.
+ *
+ * @see #getStartDate()
+ * @generated
+ * @ordered
+ */
+ protected static final LocalDate START_DATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getStartDate() Start Date}' attribute.
+ *
+ * @see #getStartDate()
+ * @generated
+ * @ordered
+ */
+ protected LocalDate startDate = START_DATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEndDate() End Date}' attribute.
+ *
+ * @see #getEndDate()
+ * @generated
+ * @ordered
+ */
+ protected static final LocalDate END_DATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEndDate() End Date}' attribute.
+ *
+ * @see #getEndDate()
+ * @generated
+ * @ordered
+ */
+ protected LocalDate endDate = END_DATE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getLeader() Leader}' reference.
+ *
+ * @see #getLeader()
+ * @generated
+ * @ordered
+ */
+ protected Person leader;
+
+ /**
+ * The cached value of the '{@link #getParticipants() Participants}' reference list.
+ *
+ * @see #getParticipants()
+ * @generated
+ * @ordered
+ */
+ protected EList participants;
+
+ /**
+ * The default value of the '{@link #getEffort() Effort}' attribute.
+ *
+ * @see #getEffort()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer EFFORT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEffort() Effort}' attribute.
+ *
+ * @see #getEffort()
+ * @generated
+ * @ordered
+ */
+ protected Integer effort = EFFORT_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getOutputs() Outputs}' containment reference list.
+ *
+ * @see #getOutputs()
+ * @generated
+ * @ordered
+ */
+ protected EList outputs;
+
+ /**
+ * The cached value of the '{@link #getOwnedTasks() Owned Tasks}' containment reference list.
+ *
+ * @see #getOwnedTasks()
+ * @generated
+ * @ordered
+ */
+ protected EList ownedTasks;
+
+ /**
+ * The cached value of the '{@link #getOwnedObjectives() Owned Objectives}' containment reference list.
+ *
+ *
+ * @see #getOwnedObjectives()
+ * @generated
+ * @ordered
+ */
+ protected EList ownedObjectives;
+
+ /**
+ * The default value of the '{@link #getProgress() Progress}' attribute.
+ *
+ * @see #getProgress()
+ * @generated
+ * @ordered
+ */
+ protected static final int PROGRESS_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getProgress() Progress}' attribute.
+ *
+ * @see #getProgress()
+ * @generated
+ * @ordered
+ */
+ protected int progress = PROGRESS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCalculationOption() Calculation Option}' attribute.
+ *
+ * @see #getCalculationOption()
+ * @generated
+ * @ordered
+ */
+ protected static final TaskTimeBoundariesConstraint CALCULATION_OPTION_EDEFAULT = TaskTimeBoundariesConstraint.START_END;
+
+ /**
+ * The cached value of the '{@link #getCalculationOption() Calculation Option}' attribute.
+ *
+ * @see #getCalculationOption()
+ * @generated
+ * @ordered
+ */
+ protected TaskTimeBoundariesConstraint calculationOption = CALCULATION_OPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDuration() Duration}' attribute.
+ *
+ * @see #getDuration()
+ * @generated
+ * @ordered
+ */
+ protected static final int DURATION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getDuration() Duration}' attribute.
+ *
+ * @see #getDuration()
+ * @generated
+ * @ordered
+ */
+ protected int duration = DURATION_EDEFAULT;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected WorkpackageImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PepperPackage.Literals.WORKPACKAGE;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getDependencies() {
+ if (dependencies == null) {
+ dependencies = new EObjectContainmentEList(DependencyLink.class, this, PepperPackage.WORKPACKAGE__DEPENDENCIES);
+ }
+ return dependencies;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public LocalDate getStartDate() {
+ return startDate;
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ @Override
+ public void setStartDate(LocalDate newStartDate) {
+ LocalDate oldStartDate = startDate;
+ if (calculationOption != TaskTimeBoundariesConstraint.END_DURATION) {
+ startDate = newStartDate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE__START_DATE, oldStartDate, startDate));
+ }
+ if (calculationOption.equals(TaskTimeBoundariesConstraint.START_END)) {
+ if (endDate != null && startDate != null) {
+ int difference = (int) ChronoUnit.DAYS.between(startDate, endDate) + 1;
+ duration = difference;
+ }
+ } else if (calculationOption.equals(TaskTimeBoundariesConstraint.START_DURATION)) {
+ endDate = startDate.plusDays(duration - 1);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public LocalDate getEndDate() {
+ return endDate;
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ @Override
+ public void setEndDate(LocalDate newEndDate) {
+ LocalDate oldEndDate = endDate;
+ if (calculationOption != TaskTimeBoundariesConstraint.START_DURATION) {
+ endDate = newEndDate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE__END_DATE, oldEndDate, endDate));
+ }
+ if (calculationOption.equals(TaskTimeBoundariesConstraint.START_END) && endDate != null && startDate != null) {
+ int difference = (int) ChronoUnit.DAYS.between(startDate, endDate) + 1;
+ duration = difference;
+ } else if (calculationOption.equals(TaskTimeBoundariesConstraint.END_DURATION) && startDate != null) {
+ startDate = endDate.minusDays(duration - 1);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Person getLeader() {
+ if (leader != null && leader.eIsProxy()) {
+ InternalEObject oldLeader = (InternalEObject) leader;
+ leader = (Person) eResolveProxy(oldLeader);
+ if (leader != oldLeader) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, PepperPackage.WORKPACKAGE__LEADER, oldLeader, leader));
+ }
+ }
+ return leader;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Person basicGetLeader() {
+ return leader;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setLeader(Person newLeader) {
+ Person oldLeader = leader;
+ leader = newLeader;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE__LEADER, oldLeader, leader));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getParticipants() {
+ if (participants == null) {
+ participants = new EObjectResolvingEList(Person.class, this, PepperPackage.WORKPACKAGE__PARTICIPANTS);
+ }
+ return participants;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Integer getEffort() {
+ return effort;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setEffort(Integer newEffort) {
+ Integer oldEffort = effort;
+ effort = newEffort;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE__EFFORT, oldEffort, effort));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getOutputs() {
+ if (outputs == null) {
+ outputs = new EObjectContainmentEList(WorkpackageArtefact.class, this, PepperPackage.WORKPACKAGE__OUTPUTS);
+ }
+ return outputs;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getOwnedTasks() {
+ if (ownedTasks == null) {
+ ownedTasks = new EObjectContainmentEList(Task.class, this, PepperPackage.WORKPACKAGE__OWNED_TASKS);
+ }
+ return ownedTasks;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EList getOwnedObjectives() {
+ if (ownedObjectives == null) {
+ ownedObjectives = new EObjectContainmentEList(Objective.class, this, PepperPackage.WORKPACKAGE__OWNED_OBJECTIVES);
+ }
+ return ownedObjectives;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public int getProgress() {
+ return progress;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setProgress(int newProgress) {
+ int oldProgress = progress;
+ progress = newProgress;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE__PROGRESS, oldProgress, progress));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public TaskTimeBoundariesConstraint getCalculationOption() {
+ return calculationOption;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void setCalculationOption(TaskTimeBoundariesConstraint newCalculationOption) {
+ TaskTimeBoundariesConstraint oldCalculationOption = calculationOption;
+ calculationOption = newCalculationOption == null ? CALCULATION_OPTION_EDEFAULT : newCalculationOption;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE__CALCULATION_OPTION, oldCalculationOption, calculationOption));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public int getDuration() {
+ return duration;
+ }
+
+ /**
+ *
+ *
+ * @generated NOT
+ */
+ @Override
+ public void setDuration(int newDuration) {
+ int oldDuration = duration;
+ if (calculationOption != TaskTimeBoundariesConstraint.START_END) {
+ duration = newDuration;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PepperPackage.WORKPACKAGE__DURATION, oldDuration, duration));
+ }
+ if (calculationOption.equals(TaskTimeBoundariesConstraint.START_DURATION)) {
+ endDate = startDate.plusDays(duration - 1);
+ } else if (calculationOption.equals(TaskTimeBoundariesConstraint.END_DURATION)) {
+ startDate = endDate.minusDays(duration - 1);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PepperPackage.WORKPACKAGE__DEPENDENCIES:
+ return ((InternalEList>) getDependencies()).basicRemove(otherEnd, msgs);
+ case PepperPackage.WORKPACKAGE__OUTPUTS:
+ return ((InternalEList>) getOutputs()).basicRemove(otherEnd, msgs);
+ case PepperPackage.WORKPACKAGE__OWNED_TASKS:
+ return ((InternalEList>) getOwnedTasks()).basicRemove(otherEnd, msgs);
+ case PepperPackage.WORKPACKAGE__OWNED_OBJECTIVES:
+ return ((InternalEList>) getOwnedObjectives()).basicRemove(otherEnd, msgs);
+ default:
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PepperPackage.WORKPACKAGE__DEPENDENCIES:
+ return getDependencies();
+ case PepperPackage.WORKPACKAGE__NAME:
+ return getName();
+ case PepperPackage.WORKPACKAGE__DESCRIPTION:
+ return getDescription();
+ case PepperPackage.WORKPACKAGE__START_DATE:
+ return getStartDate();
+ case PepperPackage.WORKPACKAGE__END_DATE:
+ return getEndDate();
+ case PepperPackage.WORKPACKAGE__LEADER:
+ if (resolve)
+ return getLeader();
+ return basicGetLeader();
+ case PepperPackage.WORKPACKAGE__PARTICIPANTS:
+ return getParticipants();
+ case PepperPackage.WORKPACKAGE__EFFORT:
+ return getEffort();
+ case PepperPackage.WORKPACKAGE__OUTPUTS:
+ return getOutputs();
+ case PepperPackage.WORKPACKAGE__OWNED_TASKS:
+ return getOwnedTasks();
+ case PepperPackage.WORKPACKAGE__OWNED_OBJECTIVES:
+ return getOwnedObjectives();
+ case PepperPackage.WORKPACKAGE__PROGRESS:
+ return getProgress();
+ case PepperPackage.WORKPACKAGE__CALCULATION_OPTION:
+ return getCalculationOption();
+ case PepperPackage.WORKPACKAGE__DURATION:
+ return getDuration();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PepperPackage.WORKPACKAGE__DEPENDENCIES:
+ getDependencies().clear();
+ getDependencies().addAll((Collection extends DependencyLink>) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__NAME:
+ setName((String) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__DESCRIPTION:
+ setDescription((String) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__START_DATE:
+ setStartDate((LocalDate) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__END_DATE:
+ setEndDate((LocalDate) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__LEADER:
+ setLeader((Person) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__PARTICIPANTS:
+ getParticipants().clear();
+ getParticipants().addAll((Collection extends Person>) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__EFFORT:
+ setEffort((Integer) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__OUTPUTS:
+ getOutputs().clear();
+ getOutputs().addAll((Collection extends WorkpackageArtefact>) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__OWNED_TASKS:
+ getOwnedTasks().clear();
+ getOwnedTasks().addAll((Collection extends Task>) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__OWNED_OBJECTIVES:
+ getOwnedObjectives().clear();
+ getOwnedObjectives().addAll((Collection extends Objective>) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__PROGRESS:
+ setProgress((Integer) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__CALCULATION_OPTION:
+ setCalculationOption((TaskTimeBoundariesConstraint) newValue);
+ return;
+ case PepperPackage.WORKPACKAGE__DURATION:
+ setDuration((Integer) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PepperPackage.WORKPACKAGE__DEPENDENCIES:
+ getDependencies().clear();
+ return;
+ case PepperPackage.WORKPACKAGE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE__START_DATE:
+ setStartDate(START_DATE_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE__END_DATE:
+ setEndDate(END_DATE_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE__LEADER:
+ setLeader((Person) null);
+ return;
+ case PepperPackage.WORKPACKAGE__PARTICIPANTS:
+ getParticipants().clear();
+ return;
+ case PepperPackage.WORKPACKAGE__EFFORT:
+ setEffort(EFFORT_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE__OUTPUTS:
+ getOutputs().clear();
+ return;
+ case PepperPackage.WORKPACKAGE__OWNED_TASKS:
+ getOwnedTasks().clear();
+ return;
+ case PepperPackage.WORKPACKAGE__OWNED_OBJECTIVES:
+ getOwnedObjectives().clear();
+ return;
+ case PepperPackage.WORKPACKAGE__PROGRESS:
+ setProgress(PROGRESS_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE__CALCULATION_OPTION:
+ setCalculationOption(CALCULATION_OPTION_EDEFAULT);
+ return;
+ case PepperPackage.WORKPACKAGE__DURATION:
+ setDuration(DURATION_EDEFAULT);
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PepperPackage.WORKPACKAGE__DEPENDENCIES:
+ return dependencies != null && !dependencies.isEmpty();
+ case PepperPackage.WORKPACKAGE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PepperPackage.WORKPACKAGE__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case PepperPackage.WORKPACKAGE__START_DATE:
+ return START_DATE_EDEFAULT == null ? startDate != null : !START_DATE_EDEFAULT.equals(startDate);
+ case PepperPackage.WORKPACKAGE__END_DATE:
+ return END_DATE_EDEFAULT == null ? endDate != null : !END_DATE_EDEFAULT.equals(endDate);
+ case PepperPackage.WORKPACKAGE__LEADER:
+ return leader != null;
+ case PepperPackage.WORKPACKAGE__PARTICIPANTS:
+ return participants != null && !participants.isEmpty();
+ case PepperPackage.WORKPACKAGE__EFFORT:
+ return EFFORT_EDEFAULT == null ? effort != null : !EFFORT_EDEFAULT.equals(effort);
+ case PepperPackage.WORKPACKAGE__OUTPUTS:
+ return outputs != null && !outputs.isEmpty();
+ case PepperPackage.WORKPACKAGE__OWNED_TASKS:
+ return ownedTasks != null && !ownedTasks.isEmpty();
+ case PepperPackage.WORKPACKAGE__OWNED_OBJECTIVES:
+ return ownedObjectives != null && !ownedObjectives.isEmpty();
+ case PepperPackage.WORKPACKAGE__PROGRESS:
+ return progress != PROGRESS_EDEFAULT;
+ case PepperPackage.WORKPACKAGE__CALCULATION_OPTION:
+ return calculationOption != CALCULATION_OPTION_EDEFAULT;
+ case PepperPackage.WORKPACKAGE__DURATION:
+ return duration != DURATION_EDEFAULT;
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", description: ");
+ result.append(description);
+ result.append(", startDate: ");
+ result.append(startDate);
+ result.append(", endDate: ");
+ result.append(endDate);
+ result.append(", effort: ");
+ result.append(effort);
+ result.append(", progress: ");
+ result.append(progress);
+ result.append(", calculationOption: ");
+ result.append(calculationOption);
+ result.append(", duration: ");
+ result.append(duration);
+ result.append(')');
+ return result.toString();
+ }
+
+} // WorkpackageImpl
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/util/PepperAdapterFactory.java b/backend/pepper-mm/src/main/java/pepper/peppermm/util/PepperAdapterFactory.java
new file mode 100644
index 0000000..1df2ccb
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/util/PepperAdapterFactory.java
@@ -0,0 +1,448 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import pepper.peppermm.*;
+
+/**
+ * The Adapter Factory for the model. It provides an adapter createXXX
+ * method for each class of the model.
+ *
+ * @see PepperPackage
+ * @generated
+ */
+public class PepperAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ *
+ * @generated
+ */
+ protected static PepperPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ *
+ * @generated
+ */
+ public PepperAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = PepperPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object. This
+ * implementation returns true if the object is either the model's package or is an instance object of
+ * the model.
+ *
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject) object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the createXXX methods.
+ *
+ * @generated
+ */
+ protected PepperSwitch modelSwitch = new PepperSwitch() {
+ @Override
+ public Adapter caseOrganization(Organization object) {
+ return createOrganizationAdapter();
+ }
+
+ @Override
+ public Adapter caseResource(Resource object) {
+ return createResourceAdapter();
+ }
+
+ @Override
+ public Adapter caseResourceFolder(ResourceFolder object) {
+ return createResourceFolderAdapter();
+ }
+
+ @Override
+ public Adapter caseTeam(Team object) {
+ return createTeamAdapter();
+ }
+
+ @Override
+ public Adapter caseInternalStakeholder(InternalStakeholder object) {
+ return createInternalStakeholderAdapter();
+ }
+
+ @Override
+ public Adapter caseExternalStakeholder(ExternalStakeholder object) {
+ return createExternalStakeholderAdapter();
+ }
+
+ @Override
+ public Adapter casePerson(Person object) {
+ return createPersonAdapter();
+ }
+
+ @Override
+ public Adapter caseAbstractTask(AbstractTask object) {
+ return createAbstractTaskAdapter();
+ }
+
+ @Override
+ public Adapter caseTagFolder(TagFolder object) {
+ return createTagFolderAdapter();
+ }
+
+ @Override
+ public Adapter caseTaskTag(TaskTag object) {
+ return createTaskTagAdapter();
+ }
+
+ @Override
+ public Adapter caseTask(Task object) {
+ return createTaskAdapter();
+ }
+
+ @Override
+ public Adapter caseObjective(Objective object) {
+ return createObjectiveAdapter();
+ }
+
+ @Override
+ public Adapter caseKeyResult(KeyResult object) {
+ return createKeyResultAdapter();
+ }
+
+ @Override
+ public Adapter caseProject(Project object) {
+ return createProjectAdapter();
+ }
+
+ @Override
+ public Adapter caseWorkpackage(Workpackage object) {
+ return createWorkpackageAdapter();
+ }
+
+ @Override
+ public Adapter caseWorkpackageArtefact(WorkpackageArtefact object) {
+ return createWorkpackageArtefactAdapter();
+ }
+
+ @Override
+ public Adapter caseRisk(Risk object) {
+ return createRiskAdapter();
+ }
+
+ @Override
+ public Adapter caseDependencyLink(DependencyLink object) {
+ return createDependencyLinkAdapter();
+ }
+
+ @Override
+ public Adapter caseDependencyRelatedObject(DependencyRelatedObject object) {
+ return createDependencyRelatedObjectAdapter();
+ }
+
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the target.
+ *
+ * @param target
+ * the object to adapt.
+ * @return the adapter for the target.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject) target);
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Organization Organization}'. This default implementation returns null so that we can easily ignore cases; it's useful to
+ * ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see Organization
+ * @generated
+ */
+ public Adapter createOrganizationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Resource Resource}'. This default implementation returns null so that we can easily ignore cases; it's useful to
+ * ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see Resource
+ * @generated
+ */
+ public Adapter createResourceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link ResourceFolder Resource Folder}'.
+ * This default implementation returns null so that we can easily ignore cases; it's useful
+ * to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see ResourceFolder
+ * @generated
+ */
+ public Adapter createResourceFolderAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Team Team}'. This default implementation returns null so that we can easily ignore cases; it's useful to ignore a case
+ * when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see Team
+ * @generated
+ */
+ public Adapter createTeamAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link InternalStakeholder Internal
+ * Stakeholder}'. This default implementation returns null so that we can easily ignore
+ * cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see InternalStakeholder
+ * @generated
+ */
+ public Adapter createInternalStakeholderAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link ExternalStakeholder External
+ * Stakeholder}'. This default implementation returns null so that we can easily ignore
+ * cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see ExternalStakeholder
+ * @generated
+ */
+ public Adapter createExternalStakeholderAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Person Person}'. This default implementation returns null so that we can easily ignore cases; it's useful to
+ * ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see Person
+ * @generated
+ */
+ public Adapter createPersonAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link AbstractTask Abstract Task}'. This default implementation returns null so that we can easily ignore cases; it's useful to
+ * ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see AbstractTask
+ * @generated
+ */
+ public Adapter createAbstractTaskAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link TagFolder Tag Folder}'. This default implementation returns null so that we can easily ignore cases; it's useful to
+ * ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see TagFolder
+ * @generated
+ */
+ public Adapter createTagFolderAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link TaskTag Task Tag}'. This default implementation returns null so that we can easily ignore cases; it's useful to
+ * ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see TaskTag
+ * @generated
+ */
+ public Adapter createTaskTagAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Task Task}'. This default implementation returns null so that we can easily ignore cases; it's useful to ignore a case
+ * when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see Task
+ * @generated
+ */
+ public Adapter createTaskAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Objective Objective}'. This default implementation returns null so that we can easily ignore cases; it's useful to
+ * ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see Objective
+ * @generated
+ */
+ public Adapter createObjectiveAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link KeyResult Key Result}'. This default implementation returns null so that we can easily ignore cases; it's useful to
+ * ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see KeyResult
+ * @generated
+ */
+ public Adapter createKeyResultAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Project Project}'. This default implementation returns null so that we can easily ignore cases; it's useful to
+ * ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see Project
+ * @generated
+ */
+ public Adapter createProjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Workpackage Workpackage}'. This default implementation returns null so that we can easily ignore cases; it's useful to
+ * ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see Workpackage
+ * @generated
+ */
+ public Adapter createWorkpackageAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link WorkpackageArtefact Workpackage
+ * Artefact}'. This default implementation returns null so that we can easily ignore
+ * cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see WorkpackageArtefact
+ * @generated
+ */
+ public Adapter createWorkpackageArtefactAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Risk Risk}'. This default implementation returns null so that we can easily ignore cases; it's useful to ignore a case
+ * when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see Risk
+ * @generated
+ */
+ public Adapter createRiskAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link DependencyLink Dependency Link}'.
+ * This default implementation returns null so that we can easily ignore cases; it's useful
+ * to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see DependencyLink
+ * @generated
+ */
+ public Adapter createDependencyLinkAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link DependencyRelatedObject Dependency
+ * Related Object}'. This default implementation returns null so that we can easily
+ * ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see DependencyRelatedObject
+ * @generated
+ */
+ public Adapter createDependencyRelatedObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case. This default implementation returns null.
+ *
+ *
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} // PepperAdapterFactory
diff --git a/backend/pepper-mm/src/main/java/pepper/peppermm/util/PepperSwitch.java b/backend/pepper-mm/src/main/java/pepper/peppermm/util/PepperSwitch.java
new file mode 100644
index 0000000..c51e0ef
--- /dev/null
+++ b/backend/pepper-mm/src/main/java/pepper/peppermm/util/PepperSwitch.java
@@ -0,0 +1,517 @@
+/*******************************************************************************
+ * Copyright (c) 2024, 2026 CEA LIST.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+package pepper.peppermm.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import pepper.peppermm.*;
+
+/**
+ * The Switch for the model's inheritance hierarchy. It supports the call
+ * {@link #doSwitch(EObject) doSwitch(object)} to invoke the caseXXX method for each class of the model,
+ * starting with the actual class of the object and proceeding up the inheritance hierarchy until a non-null result is
+ * returned, which is the result of the switch.
+ *
+ * @see PepperPackage
+ * @generated
+ */
+public class PepperSwitch extends Switch {
+ /**
+ * The cached model package
+ *
+ * @generated
+ */
+ protected static PepperPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ *
+ * @generated
+ */
+ public PepperSwitch() {
+ if (modelPackage == null) {
+ modelPackage = PepperPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ *
+ * @param ePackage
+ * the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls caseXXX for each class of the model until one returns a non null result; it yields that
+ * result.
+ *
+ * @return the first non-null result returned by a caseXXX call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case PepperPackage.ORGANIZATION: {
+ Organization organization = (Organization) theEObject;
+ T result = caseOrganization(organization);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.RESOURCE: {
+ Resource resource = (Resource) theEObject;
+ T result = caseResource(resource);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.RESOURCE_FOLDER: {
+ ResourceFolder resourceFolder = (ResourceFolder) theEObject;
+ T result = caseResourceFolder(resourceFolder);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.TEAM: {
+ Team team = (Team) theEObject;
+ T result = caseTeam(team);
+ if (result == null)
+ result = caseResource(team);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.INTERNAL_STAKEHOLDER: {
+ InternalStakeholder internalStakeholder = (InternalStakeholder) theEObject;
+ T result = caseInternalStakeholder(internalStakeholder);
+ if (result == null)
+ result = caseResource(internalStakeholder);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.EXTERNAL_STAKEHOLDER: {
+ ExternalStakeholder externalStakeholder = (ExternalStakeholder) theEObject;
+ T result = caseExternalStakeholder(externalStakeholder);
+ if (result == null)
+ result = caseResource(externalStakeholder);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.PERSON: {
+ Person person = (Person) theEObject;
+ T result = casePerson(person);
+ if (result == null)
+ result = caseResource(person);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.ABSTRACT_TASK: {
+ AbstractTask abstractTask = (AbstractTask) theEObject;
+ T result = caseAbstractTask(abstractTask);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.TAG_FOLDER: {
+ TagFolder tagFolder = (TagFolder) theEObject;
+ T result = caseTagFolder(tagFolder);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.TASK_TAG: {
+ TaskTag taskTag = (TaskTag) theEObject;
+ T result = caseTaskTag(taskTag);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.TASK: {
+ Task task = (Task) theEObject;
+ T result = caseTask(task);
+ if (result == null)
+ result = caseAbstractTask(task);
+ if (result == null)
+ result = caseDependencyRelatedObject(task);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.OBJECTIVE: {
+ Objective objective = (Objective) theEObject;
+ T result = caseObjective(objective);
+ if (result == null)
+ result = caseAbstractTask(objective);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.KEY_RESULT: {
+ KeyResult keyResult = (KeyResult) theEObject;
+ T result = caseKeyResult(keyResult);
+ if (result == null)
+ result = caseAbstractTask(keyResult);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.PROJECT: {
+ Project project = (Project) theEObject;
+ T result = caseProject(project);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.WORKPACKAGE: {
+ Workpackage workpackage = (Workpackage) theEObject;
+ T result = caseWorkpackage(workpackage);
+ if (result == null)
+ result = caseDependencyRelatedObject(workpackage);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.WORKPACKAGE_ARTEFACT: {
+ WorkpackageArtefact workpackageArtefact = (WorkpackageArtefact) theEObject;
+ T result = caseWorkpackageArtefact(workpackageArtefact);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.RISK: {
+ Risk risk = (Risk) theEObject;
+ T result = caseRisk(risk);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.DEPENDENCY_LINK: {
+ DependencyLink dependencyLink = (DependencyLink) theEObject;
+ T result = caseDependencyLink(dependencyLink);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PepperPackage.DEPENDENCY_RELATED_OBJECT: {
+ DependencyRelatedObject dependencyRelatedObject = (DependencyRelatedObject) theEObject;
+ T result = caseDependencyRelatedObject(dependencyRelatedObject);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Organization'.
+ * This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Organization'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOrganization(Organization object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Resource'. This
+ * implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Resource'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseResource(Resource object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Resource Folder'. This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Resource Folder'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseResourceFolder(ResourceFolder object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Team'. This
+ * implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Team'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTeam(Team object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Internal Stakeholder'. This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Internal Stakeholder'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInternalStakeholder(InternalStakeholder object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'External Stakeholder'. This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'External Stakeholder'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExternalStakeholder(ExternalStakeholder object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Person'. This
+ * implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Person'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePerson(Person object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Abstract Task'.
+ * This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Abstract Task'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractTask(AbstractTask object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Tag Folder'.
+ * This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Tag Folder'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTagFolder(TagFolder object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Task Tag'. This
+ * implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Task Tag'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTaskTag(TaskTag object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Task'. This
+ * implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Task'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTask(Task object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Objective'.
+ * This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Objective'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseObjective(Objective object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Key Result'.
+ * This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Key Result'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseKeyResult(KeyResult object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Project'. This
+ * implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Project'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProject(Project object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Workpackage'.
+ * This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Workpackage'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseWorkpackage(Workpackage object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Workpackage Artefact'. This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Workpackage Artefact'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseWorkpackageArtefact(WorkpackageArtefact object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Risk'. This
+ * implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Risk'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRisk(Risk object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Dependency Link'. This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Dependency Link'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDependencyLink(DependencyLink object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Dependency Related Object'. This implementation returns null; returning a non-null result will terminate the switch.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Dependency Related Object'.
+ * @see #doSwitch(EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDependencyRelatedObject(DependencyRelatedObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'EObject'. This
+ * implementation returns null; returning a non-null result will terminate the switch, but this is the last case
+ * anyway.
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of 'EObject'.
+ * @see #doSwitch(EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} // PepperSwitch
diff --git a/backend/pepper-mm/src/main/resources/icons/svg/Default.svg b/backend/pepper-mm/src/main/resources/icons/svg/Default.svg
new file mode 100644
index 0000000..e0222cc
--- /dev/null
+++ b/backend/pepper-mm/src/main/resources/icons/svg/Default.svg
@@ -0,0 +1,85 @@
+
+
+
+
diff --git a/backend/pepper-mm/src/main/resources/model/pepper.ecore b/backend/pepper-mm/src/main/resources/model/pepper.ecore
new file mode 100644
index 0000000..ea8109d
--- /dev/null
+++ b/backend/pepper-mm/src/main/resources/model/pepper.ecore
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/pepper-mm/src/main/resources/model/pepper.genmodel b/backend/pepper-mm/src/main/resources/model/pepper.genmodel
new file mode 100644
index 0000000..cb21253
--- /dev/null
+++ b/backend/pepper-mm/src/main/resources/model/pepper.genmodel
@@ -0,0 +1,192 @@
+
+
+ pepper.ecore
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/pepper-parent/pom.xml b/backend/pepper-parent/pom.xml
index e901846..d349a8a 100644
--- a/backend/pepper-parent/pom.xml
+++ b/backend/pepper-parent/pom.xml
@@ -18,7 +18,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.11
+ 4.0.6
pepper
@@ -30,7 +30,7 @@
17
- 2026.3.0
+ 2026.3.8
7.4.14-SNAPSHOT
@@ -51,26 +51,10 @@
github-sirius-web
https://maven.pkg.github.com/eclipse-web/sirius-web
-
- github-pepper-mm
- https://maven.pkg.github.com/ObeoNetwork/pepper-mm
-
-
-
- pepper-mm
- pepper-mm
- 2026.3.0
-
-
- pepper-mm
- pepper-edit
- 2026.3.0
-
-
org.eclipse.sirius
@@ -167,6 +151,11 @@
sirius-components-collaborative
${sirius.web.version}
+
+ org.eclipse.sirius
+ sirius-components-collaborative-gantt
+ ${sirius.web.version}
+
org.eclipse.sirius
sirius-components-collaborative-trees
@@ -325,6 +314,11 @@
postgresql
1.17.3
+
+ org.eclipse.core
+ org.eclipse.core.runtime
+ 3.7.0
+
org.eclipse.emf
org.eclipse.emf.mapping.ecore2xml
@@ -341,6 +335,11 @@
org.eclipse.emf.ecore
2.37.0
+
+ org.eclipse.emf
+ org.eclipse.emf.ecore.edit
+ 2.15.0
+
org.eclipse.emf
org.eclipse.emf.edit
@@ -354,7 +353,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.13
+ 0.8.14
diff --git a/backend/pepper-starter/pom.xml b/backend/pepper-starter/pom.xml
index 4775c26..6a49a23 100644
--- a/backend/pepper-starter/pom.xml
+++ b/backend/pepper-starter/pom.xml
@@ -43,20 +43,18 @@
Apache Maven Packages
https://maven.pkg.github.com/eclipse-sirius/sirius-web
-
- github-pepper-mm
- https://maven.pkg.github.com/ObeoNetwork/pepper-mm
-
- pepper-mm
+ pepper
pepper-mm
+ ${project.version}
- pepper-mm
+ pepper
pepper-edit
+ ${project.version}
org.eclipse.sirius
@@ -71,14 +69,18 @@
sirius-components-tests
test
-
+
+ org.eclipse.sirius
+ sirius-components-collaborative-gantt
+
+
org.apache.maven.plugins
maven-checkstyle-plugin
- 3.4.0
+ 3.6.0
./../releng/pepper-resources/checkstyle/CheckstyleConfiguration.xml
diff --git a/backend/pepper-starter/src/main/java/pepper/starter/services/AbstractTaskPropertiesConfigurer.java b/backend/pepper-starter/src/main/java/pepper/starter/services/AbstractTaskPropertiesConfigurer.java
new file mode 100644
index 0000000..350b6fd
--- /dev/null
+++ b/backend/pepper-starter/src/main/java/pepper/starter/services/AbstractTaskPropertiesConfigurer.java
@@ -0,0 +1,567 @@
+/*******************************************************************************
+ * Copyright (c) 2026 Obeo.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ ******************************************************************************/
+
+package pepper.starter.services;
+
+import java.time.DateTimeException;
+import java.time.Instant;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
+
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.sirius.components.collaborative.forms.services.api.IPropertiesDescriptionRegistry;
+import org.eclipse.sirius.components.collaborative.forms.services.api.IPropertiesDescriptionRegistryConfigurer;
+import org.eclipse.sirius.components.core.api.IIdentityService;
+import org.eclipse.sirius.components.core.api.ILabelService;
+import org.eclipse.sirius.components.forms.DateTimeType;
+import org.eclipse.sirius.components.forms.components.SelectComponent;
+import org.eclipse.sirius.components.forms.description.AbstractControlDescription;
+import org.eclipse.sirius.components.forms.description.CheckboxDescription;
+import org.eclipse.sirius.components.forms.description.DateTimeDescription;
+import org.eclipse.sirius.components.forms.description.GroupDescription;
+import org.eclipse.sirius.components.forms.description.IfDescription;
+import org.eclipse.sirius.components.forms.description.PageDescription;
+import org.eclipse.sirius.components.forms.description.RadioDescription;
+import org.eclipse.sirius.components.forms.description.TextfieldDescription;
+import org.eclipse.sirius.components.representations.Failure;
+import org.eclipse.sirius.components.representations.IStatus;
+import org.eclipse.sirius.components.representations.Success;
+import org.eclipse.sirius.components.representations.VariableManager;
+import org.eclipse.sirius.components.view.emf.compatibility.IPropertiesWidgetCreationService;
+import org.eclipse.sirius.components.view.emf.compatibility.PropertiesConfigurerService;
+import org.eclipse.sirius.components.widget.reference.ReferenceWidgetComponent;
+import org.eclipse.sirius.components.widget.reference.ReferenceWidgetDescription;
+import org.springframework.stereotype.Service;
+
+import pepper.peppermm.AbstractTask;
+import pepper.peppermm.DependencyLink;
+import pepper.peppermm.DependencyRelatedObject;
+import pepper.peppermm.PepperPackage;
+import pepper.peppermm.Person;
+import pepper.peppermm.Project;
+import pepper.peppermm.StartOrEnd;
+import pepper.peppermm.Task;
+import pepper.peppermm.TaskTimeBoundariesConstraint;
+import pepper.peppermm.Team;
+import pepper.peppermm.provider.PepperItemProviderAdapterFactory;
+
+/**
+ * Customizes the properties view for {@link AbstractTask} sub classes.
+ *
+ * @author lfasani
+ */
+@Service
+public class AbstractTaskPropertiesConfigurer implements IPropertiesDescriptionRegistryConfigurer {
+
+ private final IIdentityService identityService;
+
+ private final IPropertiesWidgetCreationService propertiesWidgetCreationService;
+
+ private final PropertiesConfigurerService propertiesConfigurerService;
+
+ private final ILabelService labelService;
+
+ private final PepperItemProviderAdapterFactory pepperItemProviderAdapterFactory = new PepperItemProviderAdapterFactory();
+
+ private final ItemProviderAdapter abstractTaskAdapter = (ItemProviderAdapter) pepperItemProviderAdapterFactory.createTaskAdapter();
+
+ public AbstractTaskPropertiesConfigurer(IIdentityService identityService, PropertiesConfigurerService propertiesConfigurerService, IPropertiesWidgetCreationService propertiesWidgetCreationService,
+ ILabelService labelService) {
+ this.identityService = Objects.requireNonNull(identityService);
+ this.propertiesConfigurerService = Objects.requireNonNull(propertiesConfigurerService);
+ this.propertiesWidgetCreationService = Objects.requireNonNull(propertiesWidgetCreationService);
+ this.labelService = labelService;
+ }
+
+ @Override
+ public void addPropertiesDescriptions(IPropertiesDescriptionRegistry registry) {
+ String formDescriptionId = UUID.nameUUIDFromBytes("abstractTask".getBytes()).toString();
+
+ List controlsGeneral = new ArrayList<>(this.getGeneralControlDescription());
+ List controlsRessources = new ArrayList<>(this.getRessourcesControlDescription());
+
+ Predicate canCreatePagePredicate = variableManager -> variableManager.get(VariableManager.SELF, Object.class)
+ .filter(AbstractTask.class::isInstance)
+ .isPresent();
+
+ GroupDescription groupDescriptionGeneral = this.propertiesWidgetCreationService.createSimpleGroupDescription(controlsGeneral);
+ GroupDescription groupDescriptionRessources = GroupDescription.newGroupDescription("group2")
+ .idProvider(variableManager -> "group2")
+ .labelProvider(variableManager -> "Ressources")
+ .semanticElementsProvider(this.propertiesConfigurerService.getSemanticElementsProvider())
+ .controlDescriptions(controlsRessources)
+ .build();
+
+ PageDescription pageDescription = PageDescription.newPageDescription(formDescriptionId)
+ .idProvider(variableManager -> "page")
+ .labelProvider(variableManager -> "Properties")
+ .semanticElementsProvider(this.propertiesConfigurerService.getSemanticElementsProvider())
+ .canCreatePredicate(canCreatePagePredicate)
+ .groupDescriptions(List.of(groupDescriptionGeneral, groupDescriptionRessources))
+ .build();
+
+ registry.add(pageDescription);
+
+ }
+
+ private List getGeneralControlDescription() {
+ List controls = new ArrayList<>();
+
+ var name = this.propertiesWidgetCreationService.createTextField("abstractTask.name", abstractTaskAdapter.getString("_UI_AbstractTask_name_feature"),
+ task -> Optional.ofNullable(((AbstractTask) task).getName()).orElse(""),
+ (task, newValue) -> {
+ ((AbstractTask) task).setName(newValue);
+ },
+ PepperPackage.Literals.ABSTRACT_TASK__NAME);
+ controls.add(name);
+
+ var description = this.propertiesWidgetCreationService.createExpressionField("abstractTask.description", abstractTaskAdapter.getString("_UI_AbstractTask_description_feature"),
+ task -> Optional.ofNullable(((AbstractTask) task).getDescription()).orElse(""),
+ (task, newValue) -> {
+ ((AbstractTask) task).setDescription(newValue);
+ },
+ PepperPackage.Literals.ABSTRACT_TASK__DESCRIPTION);
+ controls.add(description);
+
+ var calculationOption = this.getCalculationOptionWidget();
+ controls.add(calculationOption);
+
+ var startTime = this.getStartTimeWidget();
+ controls.add(startTime);
+
+ var endTime = this.getEndTimeWidget();
+ controls.add(endTime);
+
+ var duration = this.getDurationWidget();
+ controls.add(duration);
+
+ IfDescription ifComputeDynamically = this.createComputeDynamicallyWidget();
+ controls.add(ifComputeDynamically);
+
+ var progress = this.propertiesWidgetCreationService.createTextField("abstractTask.progress", abstractTaskAdapter.getString("_UI_AbstractTask_progress_feature"),
+ task -> String.valueOf(Optional.of(((AbstractTask) task).getProgress()).orElse(0)),
+ (task, newValue) -> {
+ try {
+ int intValue = Integer.parseInt(newValue);
+ ((AbstractTask) task).setProgress(intValue);
+ } catch (NumberFormatException e) {
+ // Ignore
+ }
+ },
+ PepperPackage.Literals.ABSTRACT_TASK__PROGRESS);
+ controls.add(progress);
+
+ var dependencies = this.getDependenciesWidget();
+ controls.add(dependencies);
+
+ return controls;
+ }
+
+ private List getRessourcesControlDescription() {
+ List controls = new ArrayList<>();
+
+ var tags = this.propertiesWidgetCreationService.createReferenceWidget("abstractTask.tags", abstractTaskAdapter.getString("_UI_AbstractTask_tags_feature"),
+ PepperPackage.Literals.ABSTRACT_TASK__TAGS, this.getTagsProvider());
+ controls.add(tags);
+
+ var persons = this.propertiesWidgetCreationService.createReferenceWidget("abstractTask.persons", abstractTaskAdapter.getString("_UI_AbstractTask_assignedPersons_feature"),
+ PepperPackage.Literals.ABSTRACT_TASK__ASSIGNED_PERSONS, this.getPersonsProvider());
+ controls.add(persons);
+
+ var teams = this.propertiesWidgetCreationService.createReferenceWidget("abstractTask.teams", abstractTaskAdapter.getString("_UI_AbstractTask_assignedTeams_feature"),
+ PepperPackage.Literals.ABSTRACT_TASK__ASSIGNED_TEAMS, this.getTeamsProvider());
+ controls.add(teams);
+
+ return controls;
+ }
+
+ private RadioDescription getCalculationOptionWidget() {
+ Function optionSelectedProvider = variableManager -> {
+ var optionalTaskTimeBoundariesConstraint = variableManager.get(SelectComponent.CANDIDATE_VARIABLE, TaskTimeBoundariesConstraint.class);
+ if (optionalTaskTimeBoundariesConstraint.isPresent()) {
+ TaskTimeBoundariesConstraint taskTimeBoundariesConstraint = optionalTaskTimeBoundariesConstraint.get();
+ String optionLitteralId = Integer.valueOf(taskTimeBoundariesConstraint.getValue()).toString();
+ var optionalValue = variableManager.get(VariableManager.SELF, AbstractTask.class)
+ .map(AbstractTask::getCalculationOption)
+ .map(TaskTimeBoundariesConstraint::getValue)
+ .map(String::valueOf);
+ if (optionalValue.isPresent()) {
+ String value = optionalValue.get();
+ return optionLitteralId.equals(value);
+ }
+ }
+ return false;
+ };
+
+ BiFunction newValueHandler = (variableManager, newValue) -> {
+ var taskOpt = variableManager.get(VariableManager.SELF, AbstractTask.class);
+ if (taskOpt.isPresent()) {
+ if (newValue == null || newValue.isBlank()) {
+ taskOpt.get().setCalculationOption(TaskTimeBoundariesConstraint.START_END);
+ } else {
+ int integer = Integer.parseInt(newValue);
+ TaskTimeBoundariesConstraint newConstraint = TaskTimeBoundariesConstraint.get(integer);
+ taskOpt.get().setCalculationOption(newConstraint);
+ }
+ return new Success();
+ } else {
+ return new Failure("");
+ }
+ };
+
+ String id = "abstractTask.calculationOption";
+ return RadioDescription.newRadioDescription(id)
+ .idProvider(variableManager -> id)
+ .targetObjectIdProvider(this.propertiesConfigurerService.getSemanticTargetIdProvider())
+ .labelProvider(variableManager -> abstractTaskAdapter.getString("_UI_AbstractTask_calculationOption_feature"))
+ .isReadOnlyProvider(variableManager -> false)
+ .optionSelectedProvider(optionSelectedProvider)
+ .optionsProvider(variableManager -> TaskTimeBoundariesConstraint.VALUES)
+ .optionIdProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, TaskTimeBoundariesConstraint.class)
+ .map(TaskTimeBoundariesConstraint::getValue)
+ .map(String::valueOf)
+ .orElse(""))
+ .optionLabelProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, TaskTimeBoundariesConstraint.class)
+ .map(Enumerator::getName)
+ .orElse(""))
+ .newValueHandler(newValueHandler)
+ .diagnosticsProvider(this.propertiesConfigurerService.getDiagnosticsProvider(PepperPackage.Literals.ABSTRACT_TASK__CALCULATION_OPTION))
+ .kindProvider(this.propertiesConfigurerService.getKindProvider())
+ .messageProvider(this.propertiesConfigurerService.getMessageProvider())
+ .build();
+ }
+
+ private TextfieldDescription getDurationWidget() {
+ Function valueProvider = variableManager -> variableManager.get(VariableManager.SELF, AbstractTask.class)
+ .map(AbstractTask::getDuration)
+ .map(String::valueOf)
+ .orElse("0");
+ BiFunction newValueHandler = (variableManager, newValue) -> {
+ var taskOpt = variableManager.get(VariableManager.SELF, AbstractTask.class);
+ if (taskOpt.isPresent()) {
+ if (newValue == null || newValue.isBlank()) {
+ taskOpt.get().setDuration(0);
+ } else {
+ try {
+ int integer = Integer.parseInt(newValue);
+ taskOpt.get().setDuration(integer);
+ } catch (NumberFormatException e) {
+ // Ignore
+ }
+ }
+ return new Success();
+ } else {
+ return new Failure("");
+ }
+ };
+
+ String id = "abstractTask.duration";
+ return TextfieldDescription.newTextfieldDescription(id)
+ .isReadOnlyProvider(vm -> vm.get(VariableManager.SELF, AbstractTask.class)
+ .map(task -> task.getCalculationOption() == TaskTimeBoundariesConstraint.START_END || isDateOptionForced(task))
+ .orElse(true))
+ .idProvider(variableManager -> id)
+ .targetObjectIdProvider(this.propertiesConfigurerService.getSemanticTargetIdProvider())
+ .labelProvider(variableManager -> abstractTaskAdapter.getString("_UI_AbstractTask_duration_feature"))
+ .valueProvider(valueProvider)
+ .newValueHandler(newValueHandler)
+ .diagnosticsProvider(this.propertiesConfigurerService.getDiagnosticsProvider(PepperPackage.Literals.ABSTRACT_TASK__DURATION))
+ .kindProvider(this.propertiesConfigurerService.getKindProvider())
+ .messageProvider(this.propertiesConfigurerService.getMessageProvider())
+ .build();
+ }
+
+ private ReferenceWidgetDescription getDependenciesWidget() {
+ Object feature = PepperPackage.Literals.DEPENDENCY_RELATED_OBJECT__DEPENDENCIES;
+
+ Function> valueProvider = variableManager -> variableManager.get(VariableManager.SELF, AbstractTask.class)
+ .map(task -> (DependencyRelatedObject) task)
+ .map(DependencyRelatedObject::getDependencies)
+ .orElse(null);
+
+ Function labelValueProvider = variableManager ->
+ this.getItem(variableManager)
+ .map(o -> (DependencyLink) o)
+ .map(link -> {
+ AbstractTask task = (AbstractTask) link.getSource();
+ String name = task.getName();
+ String sourceKind = link.getSourceKind().toString();
+ String targetKind = link.getTargetKind().toString();
+ int duration = link.getDuration();
+ if (duration != 0) {
+ return name + ": " + sourceKind + " -> " + targetKind + " " + abstractTaskAdapter.getString("_UI_AbstractTask_durationDelay_feature") + " : " + duration;
+ }
+ return name + ": " + sourceKind + " -> " + targetKind;
+ })
+ .orElse("");
+
+ String id = "abstractTask.dependencies";
+ return ReferenceWidgetDescription.newReferenceWidgetDescription(id)
+ .targetObjectIdProvider(this.propertiesConfigurerService.getSemanticTargetIdProvider())
+ .idProvider(variableManager -> id)
+ .labelProvider(variableManager -> abstractTaskAdapter.getString("_UI_DependencyRelatedObject_dependencies_feature"))
+ .optionsProvider(valueProvider)
+ .iconURLProvider(variableManager -> List.of())
+ .itemsProvider(variableManager -> this.getReferenceValue(variableManager, feature))
+ .itemIdProvider(variableManager -> this.getItem(variableManager).map(this.identityService::getId).orElse(""))
+ .itemKindProvider(variableManager -> "")
+ .itemLabelProvider(labelValueProvider)
+ .itemIconURLProvider(variableManager -> this.getItem(variableManager).map(this.labelService::getImagePaths).orElse(List.of()))
+ .ownerKindProvider(vm -> "")
+ .referenceKindProvider(vm -> "")
+ .isContainmentProvider(variableManager -> false)
+ .isManyProvider(variableManager -> true)
+ .isReadOnlyProvider(variableManager -> true)
+ .styleProvider(variableManager -> null)
+ .ownerIdProvider(variableManager -> variableManager.get(VariableManager.SELF, EObject.class).map(this.identityService::getId).orElse(""))
+ .diagnosticsProvider(this.propertiesConfigurerService.getDiagnosticsProvider(feature))
+ .kindProvider(this.propertiesConfigurerService.getKindProvider())
+ .messageProvider(this.propertiesConfigurerService.getMessageProvider())
+ //while the widget is Read-only, we can ignore these providers
+ .clearHandlerProvider(variableManager -> new Success())
+ .setHandlerProvider(variableManager -> new Success())
+ .addHandlerProvider(variableManager -> new Success())
+ .moveHandlerProvider(variableManager -> new Success())
+ .build();
+ }
+
+ private Optional