Получение "внешних" Массивов

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#1
драма со счастливым концом
эпиграф:не то что бы это раздражало, но бесит!

прелюдия:началось все тихо и мирно, в рамках поисков решения извечного вопроса - что делать работы с большими файлами эхеля (Excel) я взялся написать кода и заодно посчупать незнакомый доселе струмент IntelliJ (вместо "стандартного" Ecplipse).
Направление мысли было - использовать POI и его вариант SAX, в таком сочетании обойтись только кодом на LS никак не получится (событийное управление через бридж LS2J, в моем понятии, не осуществимо).
Получил код, и надо отдать должное IDE (опробованной) - она мне показалась удобной (в части подсказок и рефакторинга, за что - спасибо разработчикам)

Сюжет в полном окрасе
Получили java код, кот. прекрасно работает в нативе, теперь нужно увязать с LS.
Вставляем код в ДД (домино дизайнер) компилицо, делаем обвязку, в кот. возвращаем массивы из java: String[] и Integer[] (можно и int[] но не суть)
со стрингом - все замечательно <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"получили его в Variant"</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'> public String[] getArrPathMap() {
//String[] res=new String[arrPathMap.size()];
//arrPathMap.toArray(res);
return arrPathMap.toArray(new String[0]);
}[/CODE]
Код:
	Property Get arrPathMap
Dim routineName As String
routineName="arrPathMap"
On Error GoTo ErrH
'your code here
arrPathMap=me.csvobj.getArrPathMap()
Quit:
Exit Property
ErrH:
Error Err, RaiseError
Resume Quit
End Property
казалось бы - все замечательно и можно жить, но возврат индексов от файлов (в виде массива - Integer)<!--shcode--><pre><code class='java'> public Integer[] getArrData(){
return arrdata.toArray(new Integer[0]);
}[/CODE]внезапно укладывает на лопатки нотусятину
Код:
	Dim arr As Variant
arr=csv.ArrMap()
Print {pos for element #0:} &CStr(arr(0).intValue())
WTF... звучит законный русский вопрос
пробуем<!--shcode--><pre><code class='java'>return new Integer[3]{1,2,3};[/CODE]все окейно - получаем свою адын (1)
чешем репу, меняем типы (на int и получаем напрямую arr(0)) и т.п., в случае в отдачей массива по-полной (весь список) получаем шванец, а случай<!--shcode--><pre><code class='java'> Integer[] ret=new Integer[arrmap.size()];
ret[0]=new Integer(arrmap.size());[/CODE]посылает меня нах, с это просьбой, в форме - java object is Null
тут меня высаживает конкретно
лезу выводить в IDE - размерчик-то... сантиметров 20 не считая з... 2,5 ляма элементов, тихо стекаю вспоминая недобрым словом разрабов нотусятины:
Bounds of a dimension -32,768 to 32,767 (the range of values of the Integer data type)
мля, ну почему низя вывести это сообщение вместо непонятного поведения (падение или java...Null)?!
Ну и развязка - класть индексы в хэш (HashMap) кажный на свой файл (а была мысля в один массив пихать)

ЗЫЖ возврат массивов, в LS, из внешних источников (к коим относится и КОМ) может давать непредсказуемые ошибки, в случае превышения лимитов
см. отрывок с Владовским http://yesterdaylive.ru/yesterday-live-%D0...BA-%E2%84%96-5/ - как выбраться из капкана (см. там середину где-то)
 

savl

Lotus team
28.10.2011
2 136
105
#3
IntelliJ - лучшая IDE для Java, но только для неё. Так что если надо писать только на Java - следует брать именно её.
Да и в большинстве java-контор она как стандарт идет (со слов знакомы/друзей/товарищей)
К Ecplipse можно прикрутить кучу языков, удобно, если надо работать сразу с разными языками и не хочется иметь кучу IDE.

Что касается данной ситуации: не проще ли было полностью на java все сделать и без LS2J?
Да, там есть оговорки при работе с ней, но все же. Так ли важен был в данном случае мост?
Переписывать проект, конечно, никто не хочет, но может в данном случае игра стоит этого?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#4
на самом деле с 13 версии добавились языки (их поддержка расширилась), у меня есть план - scala
все писать на джава - оно может и здорово, но увязывать с остальным ЛС кодом нужно - формы/кнопки.
И потом - у местной общественности джава вызывает испуг ;)
если посмотреть на вопросы по КОМ - вывод напрашивается...
а так - если писать для xPages - то ЛС точно не нужен :eek:fftop:

Добавлено: Есть и нюансы менеджмента памяти для jvm в нотусах, добавим не всегда хорошую реализацию нотусевых объектов (заморочки с recycle)

Добавлено: по джетбрэйну http://www.jetbrains.com/idea/features/scala.html
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#6
что подтверждает мои устремления :eek:fftop:
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#8
они не так лаконичны (результирующем коде) и помедленнее.. (больше оберток)
динамика грува несет в себе нагрузку на рантайм, кот. сильно замедляет работу, а без динамики пропадает смысл его использования, притом - "бардак" с типизацией
питон - как-то не сложились мои отношения с ним... не могу себя убедить в отказе от скобок и форматирование табами, отсут. типизации
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#9
тут сравнение по полноте таблиц не могу сказать (не хватает кругозора)
и вот каррирование см. для питона и скалы, как по мне - у скала очевидный синтаксис
и в пику шарпею (C#) - там ваще что-то глазодробительное
 

savl

Lotus team
28.10.2011
2 136
105
#10
;)
lmike
Hope... С таким синтаксисом название очень даже подходящее...