blob: 9b48267fb0ce54a6bd45107495210a79fd6b4b03 [file] [log] [blame]
[comment
/*********************************************************************
* Copyright (c) 2019 Intecs Solutions SpA
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Intecs Solutions - Initial API and implementation
*
**********************************************************************/
/]
[comment encoding = UTF-8 /]
[module projectFileTemplate('http://www.eclipse.org/uml2/5.0.0/UML')/]
[template public projectFileTemplate(model : Model, projectName : String)]
[comment @main /]
[file (projectName.concat('.prj'), false, 'UTF-8')]
<?xml version="1.0" encoding="ASCII"?>
<models:Project xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:models="http://www.mobius.illinois.edu/projects" name="[projectName/]" lastSavedVersion="2.5.9.201902201008">
[let atomicBlocks : Sequence(Classifier) = getAtomicBlocks(model)]
[for (block : Classifier | atomicBlocks)]
<atomic key="[block.name/]">
<value name="[block.name/]" type="SAN Model"/>
</atomic>
[/for]
[/let]
[let attackScenarios : Sequence(Interaction) = getAttackScenarios(model)]
[for (scenario : Interaction | attackScenarios)]
<atomic key="[scenario.name/]">
<value name="[scenario.name/]" type="SAN Model"/>
</atomic>
[/for]
[/let]
[let composedBlocks : Sequence(Classifier) = getComposedBlocks(model)]
[for (block : Classifier | composedBlocks)]
<composed key="[block.name/]">
<value name="[block.name/]" category="Composed" type="Rep/Join Model"/>
</composed>
[/for]
[/let]
[comment vulnerable Components/]
[let vulnerableComponents : Set(Classifier) = getVulnerableComponents(model)]
[for (block : Classifier | vulnerableComponents)]
<composed key="Vulnerable[block.name/]">
<value name="Vulnerable[block.name/]" category="Composed" type="Rep/Join Model"/>
</composed>
[/for]
[/let]
</models:Project>
[/file]
[/template]
[query public getNameFromQN(qualifiedName : String) : String = qualifiedName.substring(qualifiedName.lastIndex(':')+1)/]
[query public getAtomicBlocks(model : Model) : Sequence(Classifier) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAtomicBlocks()', Sequence{model})/]
[query public getComposedBlocks(model : Model) : Sequence(Classifier) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getComposedBlocks()', Sequence{model})/]
[query public getAttacks(model : Model) : Sequence(Message) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAttacks()', Sequence{model})/]
[query public getAttackScenarios(model : Model) : Sequence(Interaction) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAttackScenarios()', Sequence{model})/]
[query public getVulnerableComponents(model : Model) : Set(Classifier) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getVulnerableComponents()', Sequence{model})/]
[query public getBlockFromQN(blocks : Sequence(Classifier), qualifiedName : String) : Classifier =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getBlockFromQN(java.util.List, java.lang.String)', Sequence{blocks, qualifiedName})/]
[query public getEmptyStringSet(traceCtx : OclAny) : Set(String) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getEmptyStringSet()', Sequence{}) /]
[query public addToGlobalVars(name : String, globalvars : Set(String)) : OclAny =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'addToGlobalVars(java.lang.String, java.util.Set)', Sequence{name, globalvars}) /]
[query public getPlaces(block : Classifier) : Sequence(State) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getPlaces(org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
[query public getActivities(block : Classifier) : Sequence(Transition) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getActivities(org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
[query public getActivityName(tr : Transition) : String = tr.source.name + '__' + tr.target.name/]
[query public getRate(tr : Transition) : String =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getRate(org.eclipse.uml2.uml.Transition)', Sequence{tr})/]
[comment to handle start place of fragments in a sequence diagram /]
[query public getStartPlace(ctx : OclAny) : String =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getStartPlace()', Sequence{})/]
[query public getStartX(ctx : OclAny) : Integer =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getStartX()', Sequence{})/]
[query public getStartY(ctx : OclAny) : Integer =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getStartY()', Sequence{})/]
[query public setStartPlace(startPlace : String) : OclAny =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setStartPlace(java.lang.String)', Sequence{startPlace})/]
[query public setStartX(startX : Integer) : OclAny =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setStartX(java.lang.Integer)', Sequence{startX})/]
[query public setStartY(startY : Integer) : OclAny =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'setStartY(java.lang.Integer)', Sequence{startY})/]