- Simple XML Framework — пишем API для работы с диаграммами DIA
- Пару слов про DIA и начало истории
- Формат хранения диаграмм в Dia и его особенности
- «Cтратегия» в Simple Framework, начинаем писать DiaTreeStrategy
- Ради чего это всё и как этим пользоваться?
- Заключение
- Мастер диаграмм 1.5.0
- Шесть программ для создания диаграмм
- yEd Graph Editor
- Pencil Project
- LibreOffice Draw
- Diagram Designer
- PlantUML
- Dia Diagram Editor 0.97.2-2
- Программа Dia Diagram Editor экспортирует готовую схему в форматы:
- Dia — Редактор диаграмм
- Характеристики
- Комментарии:
Simple XML Framework — пишем API для работы с диаграммами DIA
Dia Diagram Editor
Фреймфорк Simple XML — известен многим, при своей простоте, он способен потягаться возможностями с большим «интерпрайзным» JAXB, и при этом совместим с Андроид.
Статей по его использованию не «навалом», но хватает. Фреймфорк упоминался на Хабре, есть статья на ibm developerworks, в конце концов, на официальном сайте есть хорошие примеры и руководство.
В общем и целом, как использовать фреймворк ясно. Но бывает, встречаются структуры, для которых уже не хватает методов, описанных в мануалах и туториалах. Именно такую структуру XML я обнаружил, когда начал разбираться с тем, как DIA хранит свои диаграммы.
В данной статье будет рассказано о том, как научить Simple Framework работать в такой ситуации. Мы создадим собственную «стратегию» для Simple Framework; мы отнаследуемся от класса TreeStrategy и опишем «хитрую логику» того, как надо сопоставлять элементы xml-файла DIA к Java классам.
И да, я предполагаю, что читатель знаком с основами использования Simple XML Framework.
Пару слов про DIA и начало истории
Думаю, редактор диаграмм DIA известен практически всем. В своем роде, это «классика жанра».
Создан он достаточно давно, но более-менее внятного и полного описания формата файла нет. Известно, что файл .dia — это zip-архив xml-файла с расширением .dia (к слову, редактор диаграмм умеет работать с несжатыми файлами, активировать сохранение без сжатия можно в настройках).
А дальше… дальше, мол, «разберётесь сами, там не сложно».
В почтовой рассылке пару лет назад упоминалось ссылки на некие более-менее связанные описания, но ныне они мертвы.
Про наличие какого либо программного интерфейса для генерации или редактирования диаграмм, речи тоже нет. Есть список редакторов диаграмм, способных экспортировать в формат Dia, но ничего пригодного для себя я не нашел.
«Программы — это хорошо», подумал я, «но мне нужен API. Готовый к использованию. Желательно на Java».
В итоге, я решился делать свой велосипед. Удобный мне, формой под моё седалище,
с рулем под форму моих рук, с колесами по форме выбоин тропинок, которыми хожу я.
Формат хранения диаграмм в Dia и его особенности
Не будем сейчас разбирать полностью всю структуру, а перейдем сразу к «проблемным особенностям».
В .dia, структура хранения любого элемента диаграммы унифицирована: это тег object, который «обрамляет» перечень тегов attribute, в которых описываются все характеристики объекта.
Основная проблема тут в том, что все типы элементов описываются одним тегом.
В итоге, не понятно как сказать Simple Framework, что
— надо разбирать в объект класса Line, а
— в объект класса Box. В штатном наборе инструментария Simple Framework я не нашел как решать эту задачу. Именно поэтому была описана «стратегия» DiaTreeStrategy, история создания которой приведена ниже.
Проблема кроется в том, что состав атрибутов объекта диаграммы, которые Dia сохраняет в xml — не постоянен и зависит от того, какие свойства вы меняли у данного объекта.
Из-за этого, при разборе xml структур в .dia, нельзя использовать аннотацию @Xpath с указанием индекса для того, что бы сопоставить свойство класса и описываемый в xml атрибут объекта. Если бы в @Xpath можно было указать имя и значения атрибута, как мы это можем сделать в xpath-запросе — то это сделало бы задачу проще, но увы — в @Xpath можно указать только путь и индекс. Эти обстоятельства привели к появлению у меня в коде не самого удобного механизма заполнения свойств класса из массива атрибутов, но об этом в другой раз.
«Cтратегия» в Simple Framework, начинаем писать DiaTreeStrategy
Класс реализующий «стратегию» (реализующий интерфейс Strategy) в Simple Framework занимается тем, что определяет сопоставление между узлами XML и классами в Java.
У этого интерфейса всего 2 метода — read() и write(). Первый занимается тем, что по переданному xml-узлу пытается понять, какой класс мы сейчас будем заполнять, а второй создает xml-узел, в который мы будем заполнять свойства объекта.
Писать стратегию с нуля — «дело не барское», тем более, что обычный TreeStrategy во всем остальном (кроме незнания как правильно сопоставлять классы и узлы типа object) — вполне хорошо работает. Потому мы его просто подправим. Отнаследуем и подправим.
Читатель наверняка уже догадался, что «всё», что нам надо — это научить «стратегию» читать свойство type у тега object, и откуда-то понимать что «UML — Class» — соответствует классу diaXML.shapes.uml.UmlClass, а «Standard — Box» — классу diaXML.shapes.standart.StdBox.
Информацию о маппинге (type + version => имя класса) я решил хранить в обычном ArrayList:
Как видите, все достаточно прозрачно. Маппинг можно расширить своими классами (если кто напишет свой класс для ещё одного элемента диаграммы) как только будет создан экземпляр DiaTreeStrategy. Пока описано 5 классов (POJO) которые умеют инициализировать свои свойства из атрибутов объекта диаграммы, и один класс универсальный — UncknownShapeObject — в него попадают всё неизвестные нам объекты; он ничего не инициализирует, и хранит массив атрибутов в неизменном виде.
Теперь все что осталось — исправить метод read.
Это, почти всё. Вернее, это был «краеугольный камень преткновения», который не позволял с помощью Simple Framework парсить файлы, которые генерирует DIA.
Естественно, помимо того, что описано в статье, было проведено много другой работы, связанной с аннотированием классов, исследованием того, как в Simple XML работают аннотации-перехватчики событий в процессе сериализации и разбора XML, созданием сервисных классов и тд. и тп., но это уже другой разговор.
Ради чего это всё и как этим пользоваться?
В конце хотел бы привести пару примеров того, как использовать «DiaXML API». Без DiaTreeStrategy оно бы не заработало. И не забудьте перед сборкой подключить к проекту diaXmlApi.jar (брать тут).
Ещё пару примеров можно найти в исходниках проекта (тут).
Заключение
В этой статье я хотел рассказать о том, что такое «стратегия» в Simple XML Framework и как её использовать в ситуации, когда штатных средств уже не хватает и о некоторых ограничениях Simple Framework (например, про то, что в @Xpath-аннотации нельзя использовать выражения для имени и значений атрибутов, как это мы можем делать в @Xpath-запросах).
Решение этих вопросов позволило успешно реализовать ключевые классы проекта «DiaXML API» наименьшими силами. Полный текст исходного кода вы найдете в репозитории проекта.
Источник
Мастер диаграмм 1.5.0
Мастер диаграмм — приложение для построения графиков и диаграмм. Имеется функция сохранения рабочего проекта диаграммы, а так же функция сохранения готовой диаграммы в галерее устройства. Хороший и надежный помощник в создании презентаций, оформлении проектов и любых офисных документов. Анализируйте и сохраняйте данные с помощью Мастера диаграмм.
Возможности приложения Мастер диаграмм:
- круговые диаграммы;
- точечные и обычные графики;
- графики с областями;
- гистограммы;
- биржевые графики.
Главное преимущество — локальная работа, без необходимости подключения интернета. Создавайте ваши диаграммы в дороге, путешествиях и на природе.
Для сохранение диаграмм и графиков на устройстве добавьте для приложения разрешения в настройках устройства.
Источник
Шесть программ для создания диаграмм
Когда-то по работе мне нужно было часто готовить диаграммы по различным поводам. Возможностей Excel часто не хватало и мне приходилось прибегать к более изощрённым способам. Поэтому в этой статье я решил вспомнить молодость и рассказать о шести полезных программах для создания диаграмм.
Dia — бесплатный редактор для создания графиков различной сложности.
Эта программа послужит крутой альтернативой для Microsoft Visio. Простой и понятный интерфейс, сотни фигур, поддержка баз данных и собственных фигур в XML или SVG. А ещё благодаря опенсорсному коду программа доступна на Windows, Mac и Linux.
yEd Graph Editor
yEd Graph Editor
yEd Graph Editor — мощная программа для быстрого создания качественных диаграмм.
Доступно как ручное создание, так и импорт внешних данных. Встроенные алгоритмы программы быстро обрабатывают массив данных и автоматически визуализируют их. Программа доступна на Windows, Unix/Linux и Mac.
Pencil Project
Pencil Project — ещё одна программа с открытым исходным кодом для создания диаграмм.
Pencil Project ориентирован на визуальное создание диаграмм (то есть не из массива данных). Встроенная коллекция форм и шаблонов поможет быстро выбрать нужный формат диаграммы. Ещё у программы большое сообщество энтузиастов, которые всегда готовы помочь с созданием графиков или ответить на вопросы о программе.
LibreOffice Draw
LibreOffice Draw — альтернатива офисному пакету от Microsoft. А значит, тут есть всё.
Действительно, если вы привыкли делать графики в Visio или Excel, то первым делом стоит попробовать альтернативу в виде LibreOffice Draw. Здесь вы найдёте всё те же привычные инструменты и функции, просто в немного другой упаковке.
Diagram Designer
Diagram Designer подойдёт тем, кто хочет дёшево и сердито.
Минималистичный до безобразия интерфейс, единственная цель которого — создать диаграмму. Несмотря на кажущуюся простоту, здесь много функций. Поддерживается импорт и экспорт данных, автоматический расчёт формул и многое другое.
Есть портабельная версия, но поддерживается работа только на Windows системах.
PlantUML
PlantUML не такой, как все и не для всех. Здесь для создания диаграмм применяется простой (ага) и интуитивно понятный язык программирования.
Зато, когда вы разберётесь с языком, вы сможете создавать диаграммы любой сложности.
Источник
Dia Diagram Editor 0.97.2-2
Dia Diagram Editor — редактор диаграмм
Dia Diagram Editor (ДИА Диаграм Эдитор) — бесплатный кроссплатформенный редактор диаграмм с открытым исходным кодом.
Редактор Dia используется для создания различных видов диаграмм: блок-схем алгоритмов программ, древовидных схем, статических структур UML, баз данных, диаграмм сущность-связь, радиоэлектронных элементов, потоковых диаграмм, сетевых диаграмм и прочих схематических изображений.
Приложением поддерживается экспорт в Postscript, загрузка и сохранение в формате XML, а так же возможность описания новых объектов.
Программа Dia Diagram Editor экспортирует готовую схему в форматы:
- SVG (Scalable Vector Graphics)
- EPS (Encapsulated PostScript)
- DXF (Autocad’s Drawing Interchange format)
- JPEG (Joint Photographic Experts Group)
- PNG (Portable Network Graphics)
- WMF (Windows Metafile)
- CGM (Computer Graphics Metafile defined by ISO standards)
- VDX (Microsoft’s XML for Visio Drawing)
Несложные диаграммы можно, так же создавать и в бесплатных офисных пакетах LibreOffice и OpenOffice доступных для загрузки с нашего ресурса.
Загрузить программу бесплатно, Вы можете непосредственно из файлового архива разработчика, по прямой ссылке, приведенной ниже:
Источник
Dia — Редактор диаграмм
Программа Dia редактор диаграмм, при помощи которой без труда можно отредактировать диаграмму.
Программа Dia редактор диаграмм, который умеет рисовать диаграммы: статических структур UML, баз данных, диаграмм сущность-связь, радиоэлектронных элементов, потоковых диаграмм, сетевых диаграмм и других. Переведен на русский язык.
Возможности программы Dia:
- редактирование диаграмм;
- поддержка диаграмм потоков, структурных диаграмм и т. д.;
- экспорт в Postscript;
- загрузка и сохранение в формате XML;
- возможность описания новых объектов.
В программе имеется подробная англоязычная справка. При большом желании разобраться с программой, можно перевести эту справку онлайн переводчиком.
Характеристики
Комментарии:
Дмитрий
28 сентября 2021 г. 20:38
Классный редактор диаграмм, я в нем диаграммы активности для диплома рисовал
Андрей
30 декабря 2017 г. 15:28
dia удобная программка, и радует русский язык, но она что-то перестала развиваться.
mrkaban
2 декабря 2015 г. 15:05
Диа очень простой редактор диаграмм умл, разобраться с ним очень легко. Хорошая база элементов с названиями на русском языке. Очень большой минус в том, что у некоторых элементов нельзя изменить толщину линий, у некоторых других нельзя шрифт поменять. Ради справедливости, могу заметить, что в визио 2007 еще меньше возможностей по редактированию стилей элементов, либо они очень неудобны и найти их не получается. Просто в нем линии изначально очень тонкие, но как их редактировать я вообще не нашел. Хотя шрифт в нем можно редактировать у любого элемента, но тут другая большая проблема. В визио 2007 дико неудобно рисовать линии сообщений, не помню как они правильно называются. Если им нужно где то в свернуть, повернуть, то это можно сделать, но настолько неудобно, что пока будешь соединять элементы будешь долго материться. Еще текстовые сообщения линий связи, или как их в визио называют события, они часто отображаются поверх линии и поменять положение невозможно.
oli999
5 апреля 2015 г. 19:26
Абсолютно гениально. Зачем кому-то тратить тысяч 20 на Microsoft Visio? Dia так же хороша, но бесплатна.
sfhvw2
5 апреля 2015 г. 19:21
Привет, Сначала я боролся, потому что я думал, что форматы бумаги не соответствовали, но устанавливая все края в ноль, тогда все хорошо работает. Отличный инструмент! (Особенно, когда он свободный). Примечание: Мне нравится использовать очень маленькие символы, чтобы заставить многих из них соответствовать на одной странице для блок-схем. Маленькие задние концы стрелы похожи на вращаемый квадрат, но, когда напечатано в PDF они круглы и выглядят хорошо.
tkorting
5 апреля 2015 г. 19:14
Я использую его для создания диаграмм и экспорта в несколько форматов, таких как PNG и EPS. Она проста и легка в использовании.
blairsu
5 апреля 2015 г. 19:13
Прекрасно работает на моем Macbook Air Mountain Lion. Я искал решение для диаграмм на своем Mac, первоначально, я выбирал Libreoffice, но это слишком грубое решение. Тогда я попытался поработать с Dia, и теперь это моя любимая программа.
Источник