blob: f4ec838167e1d14a2883bd1534448b5da77012de [file] [log] [blame]
/**
* 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.papyrus.pdp4eng.req.metareq;
import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.Accuracy;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.DataMinimisation;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.Fairly;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.Lawful;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.LawfulByConsent;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.PersonalDataRequirement;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.ProcessPrinciple;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.PurposeLimitation;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.SecuritySafety;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.StorageLimitation;
import org.eclipse.papyrus.pdp4eng.req.profile.pdp4engReqGDPR.Transparency;
import org.eclipse.xtend2.lib.StringConcatenation;
@SuppressWarnings("all")
public class GDPRRequirements {
/**
* get Description for lawfull requirements from rticle5.1
*/
public CharSequence getDescriptionForLawfulRequirement(final Lawful lawful) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("IF process \"�lawful.process.base_NamedElement.name�\" processes \"�getPersonalDataFromProcess(lawful)�\" of \"�lawful.dataSubject.base_NamedElement.name�\" THEN the Process \"�lawful.process.base_NamedElement.name�\" shall be lawfull.");
return _builder;
}
public CharSequence getDescriptionForLawfulByConsent(final LawfulByConsent lawfulByConsent) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Processing \"�lawfulByConsent.process.base_NamedElement.name�\" shall be lawful if the data subject \"�lawfulByConsent.dataSubject.base_NamedElement.name�\" has given consent \"�lawfulByConsent.consent.base_NamedElement.name�\" to the processing of his or her personal data \"�getPersonalDataFromProcess(lawfulByConsent)�\" for one or more specific purposes �lawfulByConsent.process.contributedTo.base_NamedElement.name�");
return _builder;
}
/**
* get Description for fairly requirements from article5.1
*/
public CharSequence getDescriptionForFairlyRequirement(final Fairly fairly) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("IF process \"�fairly.process.base_NamedElement.name�\" processes \"�getPersonalDataFromProcess(fairly)�\" of \"�fairly.dataSubject.base_NamedElement.name�\" THEN the Process \"�fairly.process.base_NamedElement.name�\" shall be fairly.");
return _builder;
}
/**
* get Description for transparent requirements from article5.1
*/
public CharSequence getDescriptionForTransparentRequirement(final Transparency transparency) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("IF process \"�transparency.process.base_NamedElement.name�\" processes \"�getPersonalDataFromProcess(transparency)�\" of \"�transparency.dataSubject.base_NamedElement.name�\" THEN the Process \"�transparency.process.base_NamedElement.name�\" shall be transparent.");
return _builder;
}
/**
* get Description for transparent requirements from article5.1.b
*/
public CharSequence getDescriptionForPurposeLimitation(final PurposeLimitation purposeLimitation) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("The purpose \"�purposeLimitation.purpose.base_NamedElement.name�\" of the PersonalData \"�purposeLimitation.personalData.base_NamedElement.name�\" shall be specified, explicit, legimate, and compatible.");
return _builder;
}
/**
* get Description for transparent requirements from article5.1.c
*/
public CharSequence getDescriptionForDataMinimisation(final DataMinimisation dataMinimisation) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Personal Data \"�dataMinimisation.personalData.base_NamedElement.name�\" shall be adequate, relevant and limited to what is necessary in relation to the purpose \"�dataMinimisation.purpose.base_NamedElement.name�\" for which they are processed");
return _builder;
}
/**
* get Description for transparent requirements from article5.1.d
*/
public CharSequence getDescriptionForAccurate(final Accuracy accuracy) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Personal Data \"�accuracy.personalData.base_NamedElement.name�\" shall be accurate and, where necessary, kept up to date. If personal data \"�accuracy.personalData.base_NamedElement.name�\" are inaccurate, having regard to the purposes \"�accuracy.purpose.base_NamedElement.name�\" for which they are processed, it shall erased or rectified without delay.");
return _builder;
}
/**
* get Description for transparent requirements from article5.1.e
*/
public CharSequence getDescriptionForStorageLimitation(final StorageLimitation storageLimitation) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Personal Data \"�storageLimitation.personalData.base_NamedElement.name�\" shall be kept in a form which permits identification of data subject \"�storageLimitation.personalData.relatedTo.get(0).base_NamedElement.name�\" for no longer than is necessary for the purpose \"�storageLimitation.purpose.base_NamedElement.name�\" for which the personal data are processed");
return _builder;
}
/**
* get Description for transparent requirements from article5.1.e
*/
public CharSequence getDescriptionForSecuritySafety(final SecuritySafety securitySafety) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Personal Data �getPersonalDataFromProcess(securitySafety)� shall be processed in a manner that ensures appropriate security. ");
return _builder;
}
public String getPersonalDataFromProcess(final ProcessPrinciple ProcessPrinciple) {
String result = "";
EList<PersonalDataRequirement> _personalData = ProcessPrinciple.getPersonalData();
for (final PersonalDataRequirement element : _personalData) {
String _name = element.getBase_NamedElement().getName();
String _plus = (result + _name);
String _plus_1 = (_plus + " ");
result = _plus_1;
}
return result;
}
}