0

我正在使用 EA 创建 PIM。当我直接生成java代码时,我会在我想要的地方获得正确的数据类型 - 我在关联属性上设置限定符的映射,据我所知,这将是一个映射。这按预期工作。但是,当我进行 MDA 转换和生成代码时 - 属性被转换为 List(这是不好的)错误设置器和获取器方法继续使用 Map,如下例所示:

public class Check {

private List< Comp> comps;
private List< Gratuity> gratuities;

public Check(){

}

public Map<String, Comp> getcomps(){
    return comps;
}

public Map<String, Gratuity> getgratuities(){
    return gratuities;
}

我正在使用 Java 的默认转换包。我尝试将以下行添加到连接器的 Java 转换是源部分

%connectorType%
%PI="\n  "%
{
%TRANSFORM_CURRENT()%
%TRANSFORM_REFERENCE("Connector",connectorGUID)%
Source
{
%TRANSFORM_REFERENCE("Class",connectorSourceElemGUID)%
access=%qt%%connectorSourceAccess == "Public" ? "Private" : value%%qt%
qualifier=%connectorSourceQualifier%
%TRANSFORM_CURRENT("Source","access")% 
}
Target
{
%TRANSFORM_REFERENCE("Class",connectorDestElemGUID)%
access=%qt%%connectorDestAccess == "Public" ? "Private" : value%%qt%
%TRANSFORM_CURRENT("Target","access")%
%PI="\n"%
}
}

但这似乎没有帮助

4

2 回答 2

0

这是一个不完整的答案,但是评论太长了。

我不相信连接器源限定符确定使用哪个集合类(地图、列表)。这里涉及三件事:MDA 转换模板、代码生成模板和集合类选项。

检查工具——选项——源代码工程——Java。在那里您会找到默认集合类和附加集合类的设置(这些用于属性),以及(通过单击集合类按钮)关联的集合类设置。检查这些。

此外,检查 Java 代码生成的链接属性声明模板。在我看来,这不会检查限定符,但会检查 %linkAttCollectionClass%。

于 2013-10-13T20:51:27.950 回答
0

我收到了 Enterprise Architect 支持的回复表格,上面说这是错误 - 原始消息:

很抱歉,它不起作用,因为连接器“限定符”的转换存在问题。

转换模板 '%TRANSFORM_CURRENT()%' (以及您新添加的 'qualifier="tr: String')都是正确的,但问题是它无法转换该限定符值。

我们将在 EA 的未来版本中解决此问题。不幸的是,我无法提供发布的时间表。

问题 ID:13106266

于 2013-10-22T11:07:55.343 回答