|
|
|
Unitils + DBUnit + replace (sysdate & sequence values)
|
|||
|---|---|---|---|
|
#18+
Решал ли кто-нибудь при использовании Unitils задачу, аналогичную описанной здесь ? Суть в замене псевдозначений реальными значениями последовательностей Oracle, т.е. некоторая предварительная обработка содержимого XMLс данными. При попытке использовать в Unitils такой же подход, как для DBUtils натыкаемся на проблему несовместимости возвращаемых типов при чтении XML-файла. У типа, возвращаемого методом, который используется в Unitils, нет возможности изменить данные. К сожалению, пока своими силами не удается решить проблему... Поиск пока не помог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2012, 13:28:13 |
|
||
|
Unitils + DBUnit + replace (sysdate & sequence values)
|
|||
|---|---|---|---|
|
#18+
Вы пишете много про Unitils, но всего одно скомканое предложение о самой проблеме. Что за "несовместимости "? Какая ошибка конкретно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2012, 13:50:30 |
|
||
|
Unitils + DBUnit + replace (sysdate & sequence values)
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за сумбурное изложение... Чуть подробнее: В DBUnit (без unitils) IDataSet получаем через FlatXmlDataSetBuilder (тип org.dbunit.dataset.xml.FlatXMLDataSet) В приведенном по ссылке примере было показано, как организовать обработку полученных данных, заменяя нужные псевдозначения реальными. В нашем примере это выглядело так: Код: java 1. 2. 3. 4. 5. 6. 7. При использовании unitils прописываем аннотацию типа @DataSet({"NewTest.xml"}) При обработке данных из XML в переопределенном DBUnitModule.insertDataSet(MultiSchemaDataSet multiSchemaDataSet, DataSetLoadStrategy dataSetLoadStrategy) данные возвращаются таким образом: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Когда получаем IDataSet schemaDataSet = multiSchemaDataSet.getDataSetForSchema(schemaName); и пытаемся передать в replaceSequence(), в отладчике видно, что используется тип org.dbunit.dataset.ReplacementDataSet. При попытке изменить элемент данных в процедуре обработки значений последовательностей (на основе примера по ссылке) Код: java 1. Получаем ошибку: java.lang.ClassCastException: org.dbunit.dataset.ReplacementTable cannot be cast to org.dbunit.dataset.DefaultTable И пока не нашел, как ее обойти. Может, есть какой-то способ изменить содержимое ReplacementTable, но соответствующего метода setValue для него нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2012, 15:40:35 |
|
||
|
Unitils + DBUnit + replace (sysdate & sequence values)
|
|||
|---|---|---|---|
|
#18+
Деев И., Опишите задачу, а не метод её решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2012, 18:53:15 |
|
||
|
Unitils + DBUnit + replace (sysdate & sequence values)
|
|||
|---|---|---|---|
|
#18+
Есть XML, в котором описаны данные, загружаемые через DBUnit в таблицы базы данных Oracle. Вместо некоторых значений стоят псевдозначения, которые сначала нужно получить из последовательностей в Oracle и только после этого занести данные в базу. Для DBUnit есть решение, приведенное по указанной в первом посте ссылке. Для Unitils тоже самое сделать не удается в силу особенностей представления читаемых из XML данных. Вопрос - какое наиболее простое решение задачи при использовании unitils? Если кто-то сталкивался с этой проблемой - буду рад получить совет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2012, 19:14:02 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38000671&tid=2130758]: |
0ms |
get settings: |
13ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 278ms |
| total: | 435ms |

| 0 / 0 |
