2012-01-10 2 views
5

Я пытаюсь написать генератор кода для сопоставления между любыми двумя классами с использованием Eclipse. Идея состоит в том, чтобы представить Мастер, в котором пользователи выбирают два класса, свойства которых должны быть сопоставлены. Затем отобразите все возможные совпадения, и если пользователь в порядке, создайте класс ClassMapper, где у нас будет только одна карта методов, которая будет выполнять необходимый Class1.setXXX (Class2.getXXX());Генератор кода Eclipse для генерации mapper Класс

Любые указатели на то, как мы можем это сделать?

Благодаря

+0

Вы уверены, что структура каркаса bean, как Dozer (http://dozer.sourceforge.net/), не будет работать для вас? – Daff

+0

смешно .. Я собирался написать программу качания, чтобы сделать именно это. Так как я не нашел никаких плагинов для eclipse. Человек .. количество раз, когда вы должны установить это из-за этого. Так много набрав .. Но остановилось, так как это не стоило проблем .. Дайте мне знать, если найдете его. – sethu

+0

Dozer, похоже, делает то, что мы оба они нуждаются. Но это статическое сопоставление от одного класса к другому .. Если вам нужно сопоставить переменные между несколькими классами, вам нужно будет написать/сгенерировать код – sethu

ответ

2

Это то, что вы собираетесь делать предлагает схожую функциональность, как Dozer, но статический код имеет это преимущество, что он быстрее, он содержит логик только в коде, и это легче найти использование поля через иерархию вызовов в среде IDE.

Как правило, плагин Eclipse будет лучшим способом запуска, поскольку вы можете проектировать только графический интерфейс, а отображение выполняется самим Eclipse, а также вы получаете доступ к своим замечательным инструментам для работы с Java-кодом.

Я думаю, однако, худшая часть будет конфигурационной. У Dozer есть свой примитивный mapper (примитив в том, как он преобразуется между примитивными и родными типами java;), который обрабатывает наиболее типичные преобразования между стандартными типами, однако необходимо настроить его. Например, строки, представляющие булевы, могут быть либо «t» и «f», либо «true» и «false», либо «1» и «0», либо слова с другого языка. Даты могут иметь различные форматы и т. Д. Таким образом, вам нужно будет настроить в этом плагине различные картографы, которые можно использовать с помощью определения собственных фрагментов кода для обработки определенного преобразования.

Однако, если вы сделаете это, вы будете очень признательны. Я недавно искал что-то, что сделало бы еще больше, я имею в виду, что он может создавать как сопоставление, так и dto, с которым будет сопоставляться код, с возможностью объединения иерархии классов для дизайна, когда подтипы объектов представлены различными классами, плоский одиночный класс, лучше для json-транспорта, однако, без результата.

Смежные вопросы