Enterprise Architect - MDA конвертировать карту в список

Я использую советник для создания PIM. Когда я генерирую Java-код напрямую, я получаю правильный тип данных там, где я хочу - Map, где я устанавливаю квалификаторы для свойств ассоциации, которые, как я понимаю, означают, что это будет карта. И это работает, как ожидалось. Однако, когда я выполняю преобразование 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"%
}
}

но это не помогает

2 ответа

Я получил ответ от поддержки Enterprise Architect, в котором говорится, что это ошибка - оригинальное сообщение:

Я сожалею, что это не работает, потому что есть проблема, связанная с преобразованием квалификатора Соединителя.

Шаблон преобразования '%TRANSFORM_CURRENT()%' (и ваш новый добавленный 'qualifier="tr: ​​String') полностью верен, но проблема не позволяет преобразовать это значение квалификатора.

Мы собираемся решить эту проблему в будущем выпуске EA. К сожалению, я не могу предоставить сроки выпуска.

ID проблемы: 13106266

Это неполный ответ, но это слишком долго, чтобы идти в комментарии.

Я не уверен, что квалификатор источника соединителя определяет, какой класс коллекции (Map, List) используется. Здесь задействованы три вещи: шаблон преобразования MDA, шаблон генерации кода и параметры класса коллекции.

Инструменты для проверки - Параметры - Разработка исходного кода - Java. Там вы найдете настройки для Класса коллекции по умолчанию и Дополнительные классы коллекции (они используются для атрибутов) и (нажав кнопку Классы коллекции) настройки класса коллекции для ассоциаций. Проверьте это.

Также проверьте шаблон объявления связанных атрибутов для генерации кода Java. Мне кажется, что это не проверяет классификатор, но он проверяет%linkAttCollectionClass%.

Другие вопросы по тегам