Variablen

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Code Generator > SPL (Spy Programming Language) >

Variablen

Jede etwas komplexere SPL-Datei enthält Variablen. Einige Variablen sind vom Code Generator vordefiniert. Sie können jederzeit neue Variablen erstellen, indem Sie diesen Werte zuweisen.

 

Das $-Zeichen wird zur Deklarierung oder Verwendung einer Variablen verwendet. Vor der Variable muss immer ein $ stehen. Bei Variablennamen muss die Groß- und Kleinschreibung beachtet werden.

 

Variablentypen:

Integer - wird auch als Boolescher Wert verwendet, wobei 0 false ist und alle anderen Werte true.
String
Objekt - wird von UModel bereitgestellt
Iterator (siehe foreach-Anweisung)

 

Variablentypen werden durch die erste Zuweisung deklariert.

 

[$x = 0]

 

x ist nun ein Integer.

 

[$x = "teststring"]

 

x wird nun als String behandelt.

 

Strings

String-Konstanten müssen wie im oben gezeigten Beispiel immer innerhalb von doppelten Anführungszeichen stehen. \n und \t innerhalb von doppelten Anführungszeichen werden als neue Zeile und Tabulator interpretiert, \" ist ein literales doppeltes Anführungszeichen und \\ ist ein umgekehrter Schrägstrich. String-Konstanten können auch mehrere Zeilen einnehmen.

 

Bei der Verkettung von Strings wird das & Zeichen verwendet.

 

[$BasePath = $outputpath & "/" & $JavaPackageDir]

 

Objekte

Objekte stehen für die Informationen, die im UModel-Projekt enthalten sind. Objekte haben Eigenschaften, die über den . Operator aufgerufen werden können. In SPL können keine neuen Objekte erstellt werden (sie werden durch den Code Generator vordefiniert, aus der Input-Komponente abgeleitet).  Sie können Objekte jedoch Variablen zuweisen.

 

Beispiel:

 

class [=$class.Name]

 

In diesem Beispiel wird das Wort "class" ausgegeben, gefolgt von einem Leerzeichen und dem Wert der Eigenschaft Name des Objekts $class.

 

In der folgenden Tabelle sehen Sie die Beziehung zwischen UML-Elementen und ihren SPL-Entsprechungen sowie eine kurze Beschreibung dazu.

 

Vordefinierte Variablen

 

UML-Element

SPL-Eigenschaft

Multiplizität

UML

UModel

Beschreibung

 

 

 

Attribute /
Association

Attribute /

Association

 

BehavioralFeature

isAbstract

 

isAbstract:Boolean

 

 

BehavioralFeature

raisedException

*

raisedException:Type

 

 

BehavioralFeature

ownedParameter

*

ownedParameter:Parameter

 

 

BehavioredClassifier

interfaceRealization

*

interfaceRealization:InterfaceRealization

 

 

Class

ownedOperation

*

ownedOperation:Operation

 

 

Class

nestedClassifier

*

nestedClassifier:Classifier

 

 

Classifier

namespace

*

 

namespace:Package

packages with code language <<namespace>> set

Classifier

rootNamespace

*

 

project root namespace:String

VB only - root namespace

Classifier

generalization

*

generalization:Generalization

 

 

Classifier

isAbstract

 

isAbstract:Boolean

 

 

ClassifierTemplateParameter

constrainingClassifier

*

constrainingClassifier

 

 

Comment

body

 

body:String

 

 

DataType

ownedAttribute

*

ownedAttribute:Property

 

 

DataType

ownedOperation

*

ownedOperation:Operation

 

 

Element

kind

 

 

kind:String

 

Element

owner

0..1

owner:Element

 

 

Element

appliedStereotype

*

 

appliedStereotype:StereotypeApplication

applied stereotypes

Element

ownedComment

*

ownedComment:Comment

 

 

ElementImport

importedElement

1

importedElement:PackageableElement

 

 

Enumeration

ownedLiteral

*

ownedLiteral:EnumerationLiteral

 

 

Enumeration

nestedClassifier

*

 

nestedClassifier::Classifier

 

Enumeration

interfaceRealization

*

 

interfaceRealization:Interface

 

EnumerationLiteral

ownedAttribute

*

 

ownedAttribute:Property

 

EnumerationLiteral

ownedOperation

*

 

ownedOperation:Operation

 

EnumerationLiteral

nestedClassifier

*

 

nestedClassifier:Classifier

 

Feature

isStatic

 

isStatic:Boolean

 

 

Generalization

general

1

general:Classifier

 

 

Interface

ownedAttribute

*

ownedAttribute:Property

 

 

Interface

ownedOperation

*

ownedOperation:Operation

 

 

Interface

nestedClassifier

*

nestedClassifier:Classifier

 

 

InterfaceRealization

contract

1

contract:Interface

 

 

MultiplicityElement

lowerValue

0..1

lowerValue:ValueSpecification

 

 

MultiplicityElement

upperValue

0..1

upperValue:ValueSpecification

 

 

NamedElement

name

 

name:String

 

 

NamedElement

visibility

 

visibility:VisibilityKind

 

 

NamedElement

isPublic

 

 

isPublic:Boolean

visibility <public>

NamedElement

isProtected

 

 

isProtected:Boolean

visibility <protected>

NamedElement

isPrivate

 

 

isPrivate:Boolean

visibility <private>

NamedElement

isPackage

 

 

isPackage:Boolean

visibility <package>

NamedElement

namespacePrefix

 

 

namespacePrefix:String

XSD only - namespace prefix when exists

NamedElement

parseableName

 

 

parseableName:String

CSharp, VB only - name with escaped keywords (@)

Namespace

elementImport

*

elementImport:ElementImport

 

 

Operation

ownedReturnParameter

0..1

 

ownedReturnParameter:Parameter

parameter with direction return set

Operation

type

0..1

 

type

type of parameter with direction return set

Operation

ownedOperationParameter

*

 

ownedOperationParameter:Parameter

all parameters excluding parameter with direction return set

Operation

implementedInterface

1

 

implementedInterface:Interface

CSharp only - the implemented interface

Operation

ownedOperationImplementations

*

 

implementedOperation:OperationImplementation

VB only - the implemented interfaces/operations

OperationImplementation

implementedOperationOwner

1

 

implementedOperationOwner:Interface

interface implemented by the operation

OperationImplementation

implementedOperationName

 

 

name:String

name of the implemented operation

OperationImplementation

implementedOperationParseableName

 

 

parseableName:String

name of the implemented operation with esacped keywords

Package

namespace

*

 

namespace:Package

packages with code language <<namespace>> set

PackageableElement

owningPackage

0..1

 

owningPackage

set if owner is a package

PackageableElement

owningNamespacePackage

0..1

 

owningNamespacePackage:Package

owning package with code language <<namespace>> set

Parameter

direction

 

direction:ParameterDirectionKind

 

 

Parameter

isIn

 

 

isIn:Boolean

direction <in>

Parameter

isInOut

 

 

isInOut:Boolean

direction <inout>

Parameter

isOut

 

 

isOut:Boolean

direction <out>

Parameter

isReturn

 

 

isReturn:Boolean

direction <return>

Parameter

isVarArgList

 

 

isVarArgList:Boolean

true if parameter is a variable argument list

Parameter

defaultValue

0..1

defaultValue:ValueSpecification

 

 

Property

defaultValue

0..1

defaultValue:ValueSpecification

 

 

RedefinableElement

isLeaf

 

isLeaf:Boolean

 

 

Slot

name

 

 

name:String

name of the defining feature

Slot

values

*

value:ValueSpecification

 

 

Slot

value

 

 

value:String

value of the first value specification

StereotypeApplication

name

 

 

name:String

name of applied stereotype

StereotypeApplication

taggedValue

*

 

taggedValue:Slot

first slot of the instance specification

StructuralFeature

isReadOnly

 

isReadOnly

 

 

StructuredClassifier

ownedAttribute

*

ownedAttribute:Property

 

 

TemplateBinding

signature

1

signature:TemplateSignature

 

 

TemplateBinding

parameterSubstitution

*

parameterSubstitution:TemplateParameterSubstitution

 

 

TemplateParameter

paramDefault

 

 

paramDefault:String

template parameter default value

TemplateParameter

ownedParameteredElement

1

ownedParameteredElement:ParameterableElement

 

 

TemplateParameterSubstitution

parameterSubstitution

 

 

parameterSubstitution:String

Java only - code wildcard handling

TemplateParameterSubstitution

parameterDimensionCount

 

 

parameterDimensionCount:Integer

code dimension count of the actual parameter

TemplateParameterSubstitution

actual

1

OwnedActual:ParameterableElement

 

 

TemplateParameterSubstitution

formal

1

formal:TemplateParameter

 

 

TemplateSignature

template

1

template:TemplateableElement

 

 

TemplateSignature

ownedParameter

*

ownedParameter:TemplateParameter

 

 

TemplateableElement

isTemplate

 

 

isTemplate:Boolean

true if template signature set

TemplateableElement

ownedTemplateSignature

0..1

ownedTemplateSignature:TemplateSignature

 

 

TemplateableElement

templateBinding

*

templateBinding:TemplateBinding

 

 

Type

typeName

*

 

typeName:PackageableElement

qualified code type names

TypedElement

type

0..1

type:Type

 

 

TypedElement

postTypeModifier

 

 

postTypeModifier:String

postfix code modifiers

ValueSpecification

value

 

 

value:String

string value of the value specification

 

Hinzufügen eines Präfixes zu Attributen einer Klasse bei der Codegenerierung

Eventuell müssen Sie allen neuen Attributen in Ihrem Projekt die Zeichen "m_" voranstellen.

 

Alle neuen Kodierungselemente werden unter Verwendung der SPL-Vorlagen geschrieben:

Wenn Sie einen Blick in UModelSPL\C#[Java]\Default\Attribute.spl werfen, können Sie die Schreibweise des Namens ändern, z.B. können Sie

 

write $Property.name

 

durch

 

write "m_" & $Property.name

 

ersetzen

 

Es wird unbedingt empfohlen, Ihr Modell sofort nach der Codegenerierung anhand des Codes aktualisieren, um sicherzustellen, dass Code und Modell synchron sind.

 

Bitte beachten Sie:

Kopieren Sie, wie bereits erwähnt, die SPL-Vorlagen ein Verzeichnis höher hinein (d.h. oberhalb des Standardverzeichnisses für UModelSPL\C#) bevor Sie sie ändern. Damit stellen Sie sicher, dass sie bei Installation einer neuen Version von UModel nicht überschrieben werden. Stellen Sie bitte sicher, dass Sie im Dialogfeld "Synchronisierungseinstellungen" auf dem Register Code von Modell das Kontrollkästchen  "Benutzerdefinierte setzt Standardvorlage außer Kraft" aktiviert haben.

 

SPL-Vorlagen

SPL-Vorlagen können über die Menüoption Projekt | Projekteinstellungen (siehe Abbildung unten) pro UModel-Projekt definiert werden. Auch relative Pfade werden unterstützt. Vorlagen, die im angegebenen Verzeichnis nicht gefunden werden, werden im lokalen Standard-Verzeichnis gesucht.

 

splTemplateRelative

 

 

Globale Objekte

$Options

ein Objekt, das globale Optionen enthält:


generateComments:bool doc-Kommentare generieren (true/false)



$Indent

ein String zum Einrücken von generiertem Code und zur Anzeige der aktuellen Verschachtelungsebene.

$IndentStep

ein String zum Einrücken von generiertem Code und zur Darstellung einer Verschachtelungsebene.

$NamespacePrefix

nur XSD – das Target Namespace Präfix, falls vorhanden

 

Routinen zur Behandlung von Strings

 

integer Compare(s)

Der Rückgabewert gibt die lexikographische Beziehung des String zu s an (unter Berücksichtigung der Groß- und Kleinschreibung):

 

<0:

der String ist kleiner als s

0:

der String ist identisch mit s

>0:

der String ist größer als s

 

integer CompareNoCase(s)

Der Rückgabewert gibt die lexikographische Beziehung des String zu s an (ohne Berücksichtigung der Groß- und Kleinschreibung):

 

<0:

der String ist kleiner als s

0:

der String ist identisch mit s

>0:

der String ist größer als s

 

 

integer Find( s )

Durchsucht den String nach der ersten Instanz eines Substring s.

Gibt den nullbasierten Index des ersten Zeichens von s oder -1 zurück, wenn s nicht gefunden wird.

 

string Left( n )

Gibt die ersten n Zeichen des String zurück.

 

integer Length()

Gibt die Länge des String zurück.

 

string MakeUpper()

Gibt einen String zurück, der in Großbuchstaben konvertiert wurde.

 

string MakeUpper( n )

Gibt einen String zurück, dessen erste n Zeichen in Großbuchstaben konvertiert wurden.

 

string MakeLower()

Gibt einen String zurück, der in Kleinbuchstaben konvertiert wurde.

 

string MakeLower( n )

Gibt einen String zurück, dessen erste n Zeichen in Kleinbuchstaben konvertiert wurden.

 

string Mid( n )

Gibt einen String zurück, der mit der nullbasierten Indexposition n beginnt

 

string Mid( n, m )

Gibt einen String zurück, der mit der nullbasierten Indexposition n beginnt und die Länge m hat

 

string RemoveLeft( s )

Gibt einen String zurück, der den Substring s ausnimmt, wenn Left( s.Length() ) dem Substring s entspricht.

 

string RemoveLeftNoCase( s )

Gibt einen String zurück, der den Substring s ausnimmt, wenn Left( s.Length() ) dem Substring s entspricht (Groß- und Kleinschreibung wird ignoriert).

 

string RemoveRight( s )

Gibt einen String zurück, der den Substring s ausnimmt, wenn Right( s.Length() dem Substring s entspricht.

 

string RemoveRightNoCase( s )

Gibt einen String zurück, der den Substring s ausnimmt, wenn Right( s.Length() dem Substring s entspricht (Groß- und Kleinschreibung wird ignoriert).

 

string Repeat( s, n )

Gibt einen String zurück, der den Substring s n mal enthält.

 

string Right( n )

Gibt die letzten n Zeichen des String zurück.


© 2019 Altova GmbH