![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Необходимо по завершению приложения сохранить все свойства объекта.
А после повторного запуска восстановить их. Я использую для этого xml-файл. Но что-то сам себу усложняю жизнь У каждого объекта существует имя и набор свойств. Причем свойства имеют разные названия. Получается, что необходимо анализировать файл по константным названиям свойств. Хотелось бы это все автоматизировать. К примеру использовать класс Properties (к примеру со значениями по-умолчанию). Тоесть прочитать в него все свойства для определенного объекта, а после их восстановить. Или все-таки без анализа констант не обойтись ? Тоесть все-равно куча проверок и if-ов ? |
|||
|
||||
| redrick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: 3 Всего: 5 |
у Properties есть такие вот методы :
public void store(OutputStream out, String comments) throws IOException public void load(InputStream inStream) throws IOException в этом классе как раз все и есть public String getProperty(String key) - никаких вам ифоф... -------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Проблемма в том, что данные надо хранить именно в xml
|
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
-------------------- |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Сложность в том, что помимо обычных свойств в xml будух храниться специфичные данные
Объясню подробнее На одной машине запускается генератор xml файлов. Он отображает в файле какие объекты надо создать и с какими свойствами (а так же данные объекта) На второй машине приложение запускается из командной строки и читает файл. А на основе него создает объекты и заполняет их данными Тоесть надо анализировать xml. Вот поэтому и хотелось это все автоматизировать, так как объектов, свойств и данных может быть много и читать их (при этом анализируя) придется почти вручную. Более того сами свойства для разных объектов разные и их количество тоже отличается. Хотельсь одним махом прочитать свойства объекта, создать его и одним махом задать свойства Или я многого хочу сразу Это сообщение отредактировал(а) zss - 25.1.2005, 21:13 |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Во-первых, если ХМЛ необязателен, можно воспользоваться сериализацией через ObjectOutput/InputStream.
Во-вторых, если через ХМЛ, то для этой цели используется SOAP http://java.sun.com/xml/saaj/index.jsp http://java.sun.com/webservices/index.jsp И вообще это все похоже на веб-сервис. -------------------- |
|||
|
||||
| Шмель |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 16.4.2004 Репутация: 3 Всего: 18 |
Возможно, подойдет библиотека Betwixt от Jakarta Project
--------------------
будешь на Земле - заходи |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Думаю, что не подойдет.
Все должно быть максимально просто (одно из условий) Файл, наверное, будет хранится в БД. Его надо просто брать оттуда и читать |
|||
|
||||
| 3,14 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
А зачем хранить XML файл в БД, как правило это нужно для БОЛЬШИХ обьёмов информации, а если всё должно быть сделано
то зачем усложнять себе этим жизнь? А вообще согласен с Domestic Cat, тут удобней SOAP использовать -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
||||
|
|||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Да не очень бы хотелось привязываться к этому |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Почему? ИМХО очень удобно. -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Точно. -------------------- |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Domestic Cat (3,14), я уже говорил, что не дружу с английским. Я не очень понял идею SOAP.
Нашел описание на русском, но там муть какая-то. Можно в общих чертах об этой технологии. Спасибо Это сообщение отредактировал(а) zss - 26.1.2005, 13:32 |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
М-да, тяжко с доками по SOAP на русском, но кое что нашёл, вот общие сведения по SOAP :
http://www.uneta.org/article.aspx?article=...04-11E346B6D4E3 А вот пременение SOAP с использованием axis (apache-вские либы для разработки веб сервисов): http://www.prefnews.ru/articles/axis/ -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Идея понятна. Спасибо.
А что если этот файл необходимо бет читать сразу нескольким приложениям - тогда придется отсылать каждому ? |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Вообще говоря, есть несколько вариантов, либо отсылаешь каждому, либо сохраняешь в доступном для клиентских приложений ресурсе. -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| zss |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Я вроде нашел решение.
Чтоб избавиться от анализа руками я написал два рекурсивных метода, которые позволяют найти любую ноду во всей иерархии xml документа Два метода потому, что названия нод могут повторяться на одном уровне (если такого нет, то достаточно вызова первого метода) К примеру (повторяются properties)
Так вот если я хочу найти например список всех свойств для 2 объекта, то достаточно вызвать
Сами методы
Здесь осуществляется рекурсия для любого уровня вложенности Правда пока не до конца протестил, но пока вроде пашет (может кому и еще пригодится Это сообщение отредактировал(а) zss - 26.1.2005, 15:48 |
||||||
|
|||||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
А если что-то измениться в описании обьекта весь код будешь переписывать?
-------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Так в твоем случае ведь тоже придется анализировать (или ты хочешь сказать, что это делается атоматом ?)
Ведь отсылая сообщение надо знать описание объекта |
|||
|
||||
| 3,14 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Вообще говоря можно сделать вариант при к-ом не нужно будет прилагать практически никаких усилий даже при смене кода, но ежели надо записать в XML что-то простое - то пожайлуста, вот пример записи в SOAP документ Hasstable-а (немного изменённый вариант кода взятого с http://www-106.ibm.com/developerworks/webs.../ws-soapmap2/):
Результат:
Если тебе интересен вариант типа этого спрашивай, расскажу дальше. Чуть не забыл, для запуска приложения (для компиляции не надо), так же нужны apache-вские mail.jar и activation.jar, пути к ним должны стоять в classpath. Это сообщение отредактировал(а) 3,14 - 28.1.2005, 17:23 -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
||||
|
|||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
3,14, спасибо - попробую разобраться
Кстати, а существует ли иерархический класс в java (что-то вроде иерархическрго списка) |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Чего-то вроде класс Tree нету (хотя разных реализаций по нету выше крыше), вообще говоря класса Map как правило вполне достаточно. К примеру используешь в качестве ключа корневой эл-т а в качестве обьекта хранения - список потомков.
Если же тебе нужно дерево для работы с xml то это совсем другое дело. Это сообщение отредактировал(а) 3,14 - 28.1.2005, 17:22 -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
ага |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Как это нету??? А JTree? Совсем ведь необязательно чтобы оно рисовалось, можно и так им пользоваться. -------------------- |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Лучше ограничится TreeModel, вернее его реализациями, например DefaultTreeModel. zss А зачем тебе отдельное дерево, чем DOM плох? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Я перевожу данные из xml-файла в собственную иерархическую структуру, которая удобна для доступа к данным. Пока уровень вложенности = 3. Но данные преобразуются к определенному виду. Node - имеет имя и список subnode. Subnode - имеет имя и свойства. Свойства двуч видов. Если использовать DOM, то это заново придется анализировать, а так я пока обхожусь ArrayList |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Тогда посмотри DefaultTreeModel, вот тебе готовая древовидная структура. Плюс еще в том, что при желании отобразить ее будет элементарно.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
В общем я долго общался с людьми на счет SOAP, так вот они отказываются от этого и хотят увидеть именно создание xml и доступ к нему по сети.
при этом возникают следующие проблеммы: 1. Необходимо запустить серверное приложение и создать xml 2. На клиентской машине запустить приложение. При этом оно должно знать где находится этот xml. Тоесть либо задавать путь к нему через командную строку, либо удаленно запускать само приложение с указанием пути (больше я ничего не придумал) 3. Прочитать xml с сервера локальной сети (А как это сделать ?) Что Вы можете предложить ? Или может быть есть еще какие варианты ? Особенно интересует пункт 3. |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
1. Создать сервлет к-ый по запросу генерирует требуемый XML документ
2. В качестве указания пути использовать URL доступа к сервлету 3. Если средствами java то
Ну а читать из InputStream ты наверное умеешь Это сообщение отредактировал(а) 3,14 - 2.2.2005, 16:02 -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
Что-то не очень понял |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Что ж тут непонятного? Поднял ты какой-то сервлет, чтоб обратится к нему через браузер ты используешь какой либо URL, к примеру "http://xml_servlet", или же "http://my_server/servlet/my_servlet", вот эту строку и подаёшь в качестве входного параметра для класса URL. -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |