| /***************************************************************************** |
| * Copyright (c)2020 CEA LIST, Committer Name, and others. |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * CEA LIST - Initial API and implementation |
| * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr |
| * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr |
| *****************************************************************************/ |
| package org.eclipse.pdp4eng.req.gdprananalysis.internal; |
| |
| import java.util.Iterator; |
| |
| /** |
| * Copyright (c) 2019 CEA LIST. |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are the property of the CEA. |
| * Any use is subject to specific agreement with the CEA. |
| * Contributors: |
| * |
| * Patrick Tessier (CEA LIST) - Initial API and implementation |
| * |
| */ |
| import org.eclipse.emf.transaction.TransactionalEditingDomain; |
| import org.eclipse.papyrus.sysml14.requirements.Requirement; |
| import org.eclipse.uml2.uml.Class; |
| import org.eclipse.uml2.uml.Element; |
| import org.eclipse.uml2.uml.Package; |
| import org.eclipse.uml2.uml.UMLPackage; |
| import org.eclipse.uml2.uml.util.UMLUtil; |
| import org.eclipse.uml2.uml.util.UMLUtil.StereotypeApplicationHelper; |
| |
| import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Consent; |
| import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.DataSubject; |
| import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.PersonalData; |
| import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Purpose; |
| import org.eclipse.papyrus.pdp4eng.req.metareq.GDPRRequirements; |
| import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.pdp4engReqGDPRPackage; |
| import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.PersonalDataRequirement; |
| import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.ProcessRequirement; |
| |
| public class LawfulRequirementCreateCommand extends BasicRequirementCreateCommand { |
| |
| private ProcessRequirement processRequirement; |
| private DataSubject dataSubject; |
| public LawfulRequirementCreateCommand(TransactionalEditingDomain domain, Element owner, String id, String text,ProcessRequirement processRequirement, DataSubject dataSubject) { |
| super(domain, owner, id, text); |
| this.processRequirement= processRequirement; |
| this.dataSubject= dataSubject; |
| } |
| |
| @Override |
| protected void createRequirement(Package owner, String id, String text) { |
| super.createRequirement(owner, id, text); |
| if( requirement!=null) { |
| StereotypeApplicationHelper stereotypeApplicationHelper = StereotypeApplicationHelper.getInstance(null); |
| stereotypeApplicationHelper.applyStereotype(requirement,pdp4engReqGDPRPackage.eINSTANCE.getLawful(),null ); |
| org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.Lawful lawfulReq= (org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.Lawful)UMLUtil.getStereotypeApplication(requirement, org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.Lawful.class); |
| lawfulReq.setProcess(processRequirement); |
| for (PersonalData personalData : processRequirement.getPersonaldata()) { |
| lawfulReq.getPersonalData().add((PersonalDataRequirement) personalData); |
| } |
| lawfulReq.setDataSubject(this.dataSubject); |
| GDPRRequirements gdprRrequiement= new GDPRRequirements(); |
| Requirement reqStereotypeAppli= (Requirement)UMLUtil.getStereotypeApplication(requirement, Requirement.class); |
| reqStereotypeAppli.setText(""+gdprRrequiement.getDescriptionForLawfulRequirement(lawfulReq)); |
| |
| for (Iterator<Consent> iterator = dataSubject.getGivenConsent().iterator(); iterator.hasNext();) { |
| Consent aConsent = (Consent) iterator.next(); |
| for (Iterator<Purpose> purposeIterator = aConsent.getPurpose().iterator(); purposeIterator.hasNext();) { |
| Purpose aPurpose = (Purpose) purposeIterator.next(); |
| if( aPurpose.getProcesses().contains(this.processRequirement)) { |
| System.out.println("Create Lawfull BY CONSENT"); |
| Class requirementClass=(Class)requirement.createNestedClassifier(reqStereotypeAppli.getId()+".1", UMLPackage.eINSTANCE.getClass_()); |
| stereotypeApplicationHelper.applyStereotype(requirementClass,org.eclipse.papyrus.sysml14.requirements.RequirementsPackage.eINSTANCE.getRequirement(),null ); |
| Requirement reqStereotype= (Requirement)UMLUtil.getStereotypeApplication(requirementClass, Requirement.class); |
| stereotypeApplicationHelper.applyStereotype(requirementClass,pdp4engReqGDPRPackage.eINSTANCE.getLawfulByConsent(),null ); |
| org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.LawfulByConsent lawfulRbyConsent= (org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.LawfulByConsent)UMLUtil.getStereotypeApplication(requirementClass, org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.LawfulByConsent.class); |
| lawfulRbyConsent.setConsent(aConsent); |
| lawfulRbyConsent.setDataSubject(dataSubject); |
| lawfulRbyConsent.getPersonalData().addAll(lawfulReq.getPersonalData()); |
| lawfulRbyConsent.setProcess(this.processRequirement); |
| reqStereotype.setText(""+gdprRrequiement.getDescriptionForLawfulByConsent(lawfulRbyConsent)); |
| reqStereotype.setId(reqStereotypeAppli.getId()+".1"); |
| |
| |
| } |
| |
| } |
| |
| } |
| |
| |
| |
| } |
| |
| |
| } |
| |
| |
| } |