powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с таблицей произвольной структуры
23 сообщений из 23, страница 1 из 1
Работа с таблицей произвольной структуры
    #38999989
alister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно строить гриды на таблицах, чья структура хранится в виде метаданных и наперед неизвестна.
Сейчас обращение к таблицам построено через классы Entity в persistence, а источник данных описан не jBossе.
Как альтернатива описаны hibernate dynamic model, но пока непонятно как генерировать такой map в runtime
https://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/persistent-classes.html#persistent-classes-dynamicmodels
Persistent entities do not necessarily have to be represented as POJO classes or as JavaBean objects at runtime. Hibernate also supports dynamic models (using Maps of Maps at runtime) and the representation of entities as DOM4J trees. With this approach, you do not write persistent classes, only mapping files.
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000178
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alisterНужно строить гриды на таблицах, чья структура хранится в виде метаданных и наперед неизвестна.
в общем случае, такая постановка - глупость.
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000213
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alister,

А вопрос-то какой? Соглашусь с Petro123. С такой задачей хорошо бы подумать а есть ли польза от ORM вообще?
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000380
alister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczalister,

А вопрос-то какой? Соглашусь с Petro123. С такой задачей хорошо бы подумать а есть ли польза от ORM вообще?
Спасибо за конструктивизм :)
Petro123 вообще постановка задачи не нравится , с ORM или без, просто не нравится и все, причем настолько, что он, только чтобы выразить сей важный и многозначительный факт, что ему это не нравится, даже зашел на форум и откомментил мой пост :)
Насчет есть ли польза в этой задаче от ORM, тоже склоняюсь к тому же.
Смущают только эти динамические модели, может быть с их помощью задача бы имела решение.
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000394
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alisterСмущают только эти динамические модели, может быть с их помощью задача бы имела решение.
могу сказать ещё короче - БРЕД))).
Если бы ты был первый, с такой постановкой). Но увы.
..
ОРМ\динамические модели\ИИ (искусственный интеллект) - это средства.
О задачах и целях ИС ты пока не говорил.
Похоже это нужно только тебе - программисту.
Удачи!
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000416
alister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123alisterСмущают только эти динамические модели, может быть с их помощью задача бы имела решение.
ОРМ\динамические модели\ИИ (искусственный интеллект) - это средства.
О задачах и целях ИС ты пока не говорил.
Может это немножко неожиданно на этом форуме, но меня интересуют именно средства.
Задачи и цели я также мог бы обсудить, если кому нибудь это вдруг оказалось интересно.
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000432
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alister,
у 1-ой Цели-задачи есть 100 путей решения.
Если ты строишь админку к национальной СУБД по импортузамещения))
https://slon.ru/posts/53511
- это одно.
Если ETL, это другое (есть готовое).
Ты же не из программистов вроде. А из DBA.
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000440
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alister,
т.к. метаданные о таблах в сиквеле и оракле всё равно статичны и точно описаны, то делается 2 уровня Модели. Нижняя (ядро-ERP) и верхняя.
Это дорого и долго.
IMHO
Удачи!
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000447
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alisterМожет это немножко неожиданно на этом форуме, но меня интересуют именно средства.
Задачи и цели я также мог бы обсудить, если кому нибудь это вдруг оказалось интересно.
Средства для работы с таблицами неопределенного формата, логики неопределенного назначение, решающих задачу неопределенной постановки.

Средств мета-программирования масса. Но только постановки задачи всё ещё не видно. Зачем нужна выборка из таблицы неопределенного формата? Ведь в ней данные неопределенного происхождения и неопределенного предназначения?

Здесь обсуждение
http://rsdn.ru/forum/philosophy/5659632.flat
Здесь ссылка на одно из относительно не старых средств такой разработки
http://rsdn.ru/forum/java/5385555.flat
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000465
alister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо, ознакомлюсь.
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000523
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alister,

Если так хочется "через классы Entity в persistence", то рефлексией, наверное. А вообще лучше на лысом JDBC, ну там PreparedStatement.getMetaData()...
Вот говнокод на Скалке, накиданый для говнопроекта на скорую руку. Перевести на жабу, думаю, смогёте.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
import anorm._
import anorm.SqlParser._
import play.api.db._
import scala.util._
import play.api.Play.current
import utils.Utils._

case class ViewEntry(id: Long, data: List[String])
case class ViewColumn(id: Int, name: String, _type: String)

/**
 * Спец класс для списочных представлений с фильтрами и пажинацией
 * В качестве аргумента принимает SQL запрос, первой колонкой должен быть id сущности
 */
 case class View(query: String) {

  def queryColumns = DB.withConnection { implicit connection =>
    val stmt = connection.prepareStatement(query)
    val md = stmt.getMetaData
    for (i <- 2 to md.getColumnCount) yield {
      ViewColumn(i, md.getColumnName(i), md.getColumnClassName(i))
    }
  }

  // надо переписать нормально, а то очкую из-за инъекций. Однко внедрить вредный SQL не получилось... 
  def wrappedQuery(limit: Int, offset: Int, order: Int, filter: String) = {
    var orderDirection = if(order < 0) "desc" else "asc"
    val orderExpr = if (order != 0) {
      s" order by  ${math.abs(order)} ${orderDirection} nulls last"
    } else {
      ""
    }

     s"""
    	select * from (${query}) as subquery  where (
    		-- Пользовательские условия --------------------
    		${if (filter.trim.isEmpty) "true" else filter}
    		------------------------------------------------
    	) 
    	${orderExpr} limit ${limit} offset ${offset}""" 

  }

  def entries(limit: Int = 10, offset: Int = 0, order: Int = 1, filter: String = "") = DB.withConnection { implicit connection => 
    val rs = connection.prepareStatement(wrappedQuery(limit, offset, order, filter)).executeQuery()
    val md = rs.getMetaData
    val columns = md.getColumnCount()
    val data = scala.collection.mutable.ArrayBuffer[ViewEntry]()

    while (rs.next) {
      val rowData = scala.collection.mutable.ArrayBuffer[String]()
      val id = try {rs.getLong("id")} catch {case e : Exception => -1}

      for (i <- (if(id == -1) 1 else 2) to columns) {
        md.getColumnClassName(i) match {
          case "java.sql.Date" => rowData.append(formatDate(rs.getDate(i),"dd.MM.yyyy"))
          case _ => rowData.append(rs.getString(i))
        }
      }
      data.append(ViewEntry(id, rowData.toList))
    }
    data.toList
  }

} 
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000541
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonz80,
уже готовых классов XXXXRowSet \ XXXXDataSet уже и так полно.
Которые на
Код: java
1.
'select * from ' + 'table_name'

возьмут данные.
Главное, что потом с этим Г... делать))
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000575
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Главное, что потом с этим Г... делать))

Ой да мало-ли?)))) Ну хочется если сильно, кто ж запретит? Те же ad-hoc отчетики там, или супермегауниверсальныйкоторыйрешитвсенашипроблемы компонент, ему на входе SQL запрос чик, а он все за тебя рисует сам такой оп-па!
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000625
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonz80супермегауниверсальныйкоторыйрешитвсенашипроблемы компонент
он уже есть - XXXXRowSet
И даже ЯП без ограничений и типизации тоже.
"Не пей Иванушка из колодца..."
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000692
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123
И даже ЯП без ограничений и типизации тоже.


А! Теперь понял вашу позицию.
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39000816
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alisterНужно строить гриды на таблицах, чья структура хранится в виде метаданных и наперед неизвестна.
.

Ну вот моя CIS почти по этому принципу построена.
Есть xml в котором описывается grid (поля цвет размер,Edit control).
В этом же xml описывается поля для диалоговых форм для CRUD/
(label,text,combo расположение их на форме и т.д)
В базе описан sql
В базе описан CRUD pl/sql
ADF читает sql и уже знает все метаданные по нему.
Я их использую для прорисовки грида и изменения записей.
(так же грузится класс в котором есть некая интерфейсная логика(ведь не всё состоит из CRUD))


К сожалению это только desktop. на webе ....у меня не получилось такое реализовать.
Слишком консервативным он(web) оказался.(может со временем ...наберусь опыта :-) )
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39001015
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alК сожалению это только desktop. на webе ....у меня не получилось такое реализовать.
Слишком консервативным он(web) оказался.(может со временем ...наберусь опыта :-) )
На web это делается еще проще.
За счет "гибкости" JavaScript можно сделать все что угодно.
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39001738
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,

Ой а как просто это делается на десктопе знает любой, кто хоть раз запуска Excel.

И тебе таблички любой ширины, и фильтры хоть по цвету полей.
И аналитика ...

Но, почему-то бытует у профессионалов мнение, что Excel в такой постановке это глупость. :)


P.S. Недавно было одно т.з. - так и сказали сделать табличку с функционалом не меньшим, чем в Excel.
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39001919
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньевmad_nazgul,
P.S. Недавно было одно т.з. - так и сказали сделать табличку с функционалом не меньшим, чем в Excel.

Помню... Делали...
Внедряли ERP/CRM/BPM (и прочие страшные абревиатуры)
Так для модуля бюджетирования пришлось делать свой как бы Excel.
Даже формулы можно было писать с условным оператором.

Почему нельзя было просто оставить выгрузку в Excel нам наши аналитики внятного ответа не дали.
Точнее ответ был "потому что бабки"!
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39001936
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,

Против выгрузки в Excel обычно не возражают.
Хуже с загрузкой. Уж и ячейки защитишь и то и се. Фиг тебе. половина строк и столбцов удалена, какие-то перенесены, а в столбце количество сакральное "полтора-два".
И считай потом аналитику.
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39002010
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulПочему нельзя было просто оставить выгрузку в Excel нам наши аналитики внятного ответа не дали.
Точнее ответ был "потому что бабки"!
в этом вся соль таких задач от дилетантов
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39002114
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньевmad_nazgul,

Против выгрузки в Excel обычно не возражают.
Хуже с загрузкой. Уж и ячейки защитишь и то и се. Фиг тебе. половина строк и столбцов удалена, какие-то перенесены, а в столбце количество сакральное "полтора-два".
И считай потом аналитику.

Да не выгрузку в Excel как раз не надо было (с готовыми формулами)
"Хотелка" наших "топ-топ"-менеджеров была, чтобы только в "системе".
...
Рейтинг: 0 / 0
Работа с таблицей произвольной структуры
    #39002622
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul"Хотелка" наших "топ-топ"-менеджеров была, чтобы только в "системе".очень хорошая хотелка.


многим пользователям эксель в руки давать нельзя
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с таблицей произвольной структуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]