Programming Language Information for Project
In Astah, programming language information such as Java, C# and C++ are represented by stereotypes, tagged values and attributes of models.
Programming language information
Project model (IModel) has tagged value to set the language information.
Language | Item | Tagged Value | Stereotype | Model Attribute | Model |
---|---|---|---|---|---|
Java | Java Project | [Key] jude.profile.java [Value] true/false |
- | - | Project Model(IModel) |
C# | C# Project | [Key] jude.profile.c_sharp [Value] true/false |
- | - | Project Model(IModel) |
C++ | C++ Project | [Key] jude.profile.c_plus [Value] true/false |
- | - | Project Model(IModel) |
How to recognize Java or C# (Class, Attribute, Operation)
Use the checkboxes in the language tab of the property view for class, attribute and operation.
For example, when Java checkbox is set to ON for class, A stereotype, "Java Class", will be set.
(However, it will not be displayed in the property view or diagram editor.)
Java
Model | Stereotype |
---|---|
Class (IClass) | Java Class |
Attribute (IAttribute) | Java Attribute |
Operation (IOperation) | Java Method |
C#
Model | Stereotype |
---|---|
Class (IClass) | C# Class |
Attribute (IAttribute) | C# Attribute |
Operation (IOperation) | C# Method |
C++
Model | Stereotype |
---|---|
Class (IClass) | C++ Class |
Attribute (IAttribute) | C++ Attribute |
Operation (IOperation) | C++ Method |
Programming language information for Class, Attribute and Operation
In Astah, programming language information such as Java, C# and C++ is set in stereotypes, tagged values and attributes in models.
In the language tab of the property view for class, attribute or operation, values for setup items are set to either tagged value, stereotype, model attribute.
Java
Item | Stereotype | Tagged Value | Model Attribute | Model |
---|---|---|---|---|
<<enum>> | <<enum>> | - | - | Class (IClass) |
annotations | - | [Key]jude.java.annotations [Value]Optional |
- | Class (IClass), Attribute (IAttribute), Operation (IOperation) |
@interface | - | [Key]jude.java.atmark_interface [Value]true/false |
- | Class (IClass) |
strictfp | - | [Key]jude.java.strictfp [Value]true/false |
- | Class (IClass),Operation(IOperation) |
[Class]final | - | - | IClass.isLeaf() | Class (IClass) |
<<enum constant>> | <<enum constant>> | - | - | Attribute (IAttribute) |
transient | - | [Key]jude.java.transient [Value]true/false |
- | Attribute (IAttribute) |
volatile | - | [Key]jude.java.volatile [Value]true/false |
- | Attribute (IAttribute) |
[Attribute]final | - | - | IAttribute.isChangeable() | Attribute (IAttribute) |
synchronized | - | [Key]jude.java.synchronized [Value]true/false |
- | Operation (IOperation) |
native | - | [Key]jude.java.native [Value]true/false |
- | Operation (IOperation) |
[Operation]final | - | - | IClass.isLeaf() | Operation (IOperation) |
C#
Item | Stereotype | Tagged Value | Model Attribute | Model |
---|---|---|---|---|
<<delegate>> | <<delegate>> | - | - | Class (IClass) |
<<struct>> | <<struct>> | - | - | Class (IClass) |
<<enum>> | <<enum>> | - | - | Class (IClass) |
attributes | - | [Key]jude.c_sharp.attributes [Value]Optional |
- | Class (IClass), Attribute (IAttribute), Operation( IOperation) |
sealed | - | [Key]jude.c_sharp.sealed [Value]true/false |
- | Class (IClass) |
static | - | [Key]jude.c_sharp.static [Value]true/false |
- | Class (IClass) |
internal | - | [Key]jude.c_sharp.internal [Value]true/false |
- | Class (IClass), Attribute (IAttribute), Operation (IOperation) |
<<property>> | <<property>> | - | - | Attribute (IAttribute) |
<<property>> get | - | [Key]jude.c_sharp.property_get [Value]true/false |
- | Attribute (IAttribute) |
<<property>> set | - | [Key]jude.c_sharp.property_set [Value]true/false |
- | Attribute (IAttribute) |
<<enum constant>> | <<enum constant>> | - | - | Attribute (IAttribute) |
const | - | [Key]jude.c_sharp.const [Value]true/false |
- | Attribute (IAttribute) |
volatile | - | [Key]jude.c_sharp.volatile [Value]true/false |
- | Attribute (IAttribute) |
[Attribute]readonly | - | - | IAttribute.getChangeable() | Attribute (IAttribute) |
<<event>> | <<event>> | - | - | Operation (IOperation) |
<<event>> add | - | [Key]jude.c_sharp.event_add [Value]true/false |
- | Operation (IOperation) |
<<event>> remove | - | [Key]jude.c_sharp.event_remove [Value]true/false |
- | Operation (IOperation) |
<<indexer>> | <<indexer>> | - | - | Operation (IOperation) |
<<indexer>> get | - | [Key]jude.c_sharp.indexer_get [Value]true/false |
- | Operation (IOperation) |
<<indexer>> set | - | [Key]jude.c_sharp.indexer_set [Value]true/false |
- | Operation (IOperation) |
extern | - | [Key]jude.c_sharp.extern [Value]true/false |
- | Operation (IOperation) |
override | - | [Key]jude.c_sharp.override [Value]true/false |
- | Operation (IOperation) |
sealed | - | [Key]jude.c_sharp.sealed [Value]true/false |
- | Operation (IOperation) |
unsafe | - | [Key]jude.c_sharp.unsafe [Value]true/false |
- | Operation (IOperation) |
virtual | - | [Key]jude.c_sharp.virtual [Value]true/false |
- | Operation (IOperation) |
extension method | - | [Key]jude.c_sharp.extension_method [Value]true/false |
- | Operation (IOperation) |
C++
Item | Stereotype | Tagged Value | Model Attribute | Model |
---|---|---|---|---|
Type Modifier | - | [Key]type_modifier [Value]Type Modifie String |
IElement.getTypeModifier(), ITemplateBinding.getActualParameterTypeModifier() |
- |
<<enum>> | <<enum>> | - | - | Class (IClass) |
<<struct>> | <<struct>> | - | - | Class (IClass) |
<<union>> | <<union>> | - | - | Class (IClass) |
<<enum constant>> | <<enum constant>> | - | - | Attribute (IAttribute) |
const | - | [Key]jude.c_plus.const [Value]true/false |
- | Attribute (IAttribute), Operation(IOperation) |
mutable | - | [Key]jude.c_plus.mutable [Value]true/false |
- | Attribute (IAttribute) |
volatile | - | [Key]jude.c_plus.volatile [Value]true/false |
- | Attribute (IAttribute) |
friend | - | [Key]jude.c_plus.friend [Value]true/false |
- | Operation (IOperation) |
explicit | - | [Key]jude.c_plus.explicit [Value]true/false |
- | Operation (IOperation) |
inline | - | [Key]jude.c_plus.inline [Value]true/false |
- | Operation (IOperation) |
virtual | - | [Key]jude.c_plus.virtual [Value]true/false |
- | Operation (IOperation) |
How to get language information for project
Get project language information
public void getLanguageInfomataion() { BasicModelEditor bme = ModelEditorFactory.getBasicModelEditor(); IModel project = AstahAPI.getAstahAPI().getProjectAccessor().getProject(); try { if (isJavaProject(project)) { System.out.println("Java Language"); } if (isCSharpProject(project)) { System.out.println("C# Language"); } } catch (Exception e) { e.printStackTrace(); } } private boolean isJavaProject(IModel project) { ITaggedValue[] tags = project.getTaggedValues(); for (int i = 0; i < tags.length; i++) { ITaggedValue tag = tags[i]; String key = tag.getKey(); if ("jude.profile.java".eqauls(key) { if ("true".equals(tag.getValue()) { return true; } } } return false; } private boolean isCSharpProject(IModel project) { ITaggedValue[] tags = project.getTaggedValues(); for (int i = 0; i < tags.length; i++) { ITaggedValue tag = tags[i]; String key = tag.getKey(); if ("jude.profile.c_sharp".eqauls(key) { if ("true".equals(tag.getValue()) { return true; } } } return false; }
How to set language information for project
Set project language information
public void testSetLanguageCSharp() throws ClassNotFoundException, InvalidEditingException, ProjectNotFoundException { BasicModelEditor bme = ModelEditorFactory.getBasicModelEditor(); IModel project = AstahAPI.getAstahAPI().getProjectAccessor().getProject(); try { TransactionManager.beginTransaction(); //Java:OFF bme.setLanguageJava(project, false); //C#:OFF bme.setLanguageCSharp(project, false); //Java:ON bme.setLanguageJava(project, true); //C#:ON bme.setLanguageCSharp(project, true); TransactionManager.endTransaction(); } catch (InvalidEditingException e) { TransactionManager.abortTransaction(); e.printStackTrace(); fail(); } }
Check if Java language information is set to class, or class is strictfp
public void testGetJavaClassStrictfp() { BasicModelEditor bme = ModelEditorFactory.getBasicModelEditor(); IModel project = AstahAPI.getAstahAPI().getProjectAccessor().getProject(); try { IElement element = getElement(project.getOwnedElements(), "Class0"); if (isJavaClass(element)) { System.out.println("Class0 has \"Java Class\" stereotype"); if (isJavaClassStrictfp(element)) { System.out.println("Class0 has \"jude.java.strictfp\" TaggedValue"); } } } catch (Exception e) { e.printStackTrace(); fail(); } } protected INamedElement getElement(INamedElement[] elements, String elementName) { for (int i = 0; i < elements.length; i++) { if (elements[i].getName().equals(elementName)) { return elements[i]; } } return null; } private boolean isJavaClass(IElement element) { String[] sterotyopes = element.getStereotypes(); for (int i =0 ; i < sterotyopes.length; i++) { if ("Java Class".equals(sterotyopes[i])) { return true; } } return false; } private boolean isJavaClassStrictfp(IElement element) { ITaggedValue[] tags = element.getTaggedValues(); for (int i =0 ; i < tags.length; i++) { ITaggedValue tag = tags[i]; if ("jude.java.strictfp".equals(tag.getKey())) { if ("true".equals(tag.getValue())) { return true; } } } return false; }
Set Java language information to project and class, then set strictfp to class
Set project language information
public void testJavaAttributeStereotypeInClass() throws InvalidEditingException, ClassNotFoundException { BasicModelEditor bme = ModelEditorFactory.getBasicModelEditor(); try { TransactionManager.beginTransaction(); bme.setLanguageJava(project, true); IElement element = getElement(project.getOwnedElements(), "Class0"); element.addStereotype("Java Class"); bme.createTaggedValue(element, "jude.java.strictfp", "true"); TransactionManager.endTransaction(); } catch (InvalidEditingException e) { TransactionManager.abortTransaction(); fail(); } }