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

Тема в разделе "Lotus - Программирование", создана пользователем lmike, 30 июл 2014.

  1. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    драма со счастливым концом
    эпиграф:не то что бы это раздражало, но бесит!

    прелюдия:началось все тихо и мирно, в рамках поисков решения извечного вопроса - что делать работы с большими файлами эхеля (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]
    Код (LotusScript):
        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]внезапно укладывает на лопатки нотусятину
    Код (LotusScript):
        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 ляма элементов, тихо стекаю вспоминая недобрым словом разрабов нотусятины:
    мля, ну почему низя вывести это сообщение вместо непонятного поведения (падение или java...Null)?!
    Ну и развязка - класть индексы в хэш (HashMap) кажный на свой файл (а была мысля в один массив пихать)

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
  3. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    IntelliJ - лучшая IDE для Java, но только для неё. Так что если надо писать только на Java - следует брать именно её.
    Да и в большинстве java-контор она как стандарт идет (со слов знакомы/друзей/товарищей)
    К Ecplipse можно прикрутить кучу языков, удобно, если надо работать сразу с разными языками и не хочется иметь кучу IDE.

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    на самом деле с 13 версии добавились языки (их поддержка расширилась), у меня есть план - scala
    все писать на джава - оно может и здорово, но увязывать с остальным ЛС кодом нужно - формы/кнопки.
    И потом - у местной общественности джава вызывает испуг ;)
    если посмотреть на вопросы по КОМ - вывод напрашивается...
    а так - если писать для xPages - то ЛС точно не нужен :eek:fftop:

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

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

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    что подтверждает мои устремления :eek:fftop:
     
  7. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Почему не Groovy или Jython?
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    они не так лаконичны (результирующем коде) и помедленнее.. (больше оберток)
    динамика грува несет в себе нагрузку на рантайм, кот. сильно замедляет работу, а без динамики пропадает смысл его использования, притом - "бардак" с типизацией
    питон - как-то не сложились мои отношения с ним... не могу себя убедить в отказе от скобок и форматирование табами, отсут. типизации
     
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    тут сравнение по полноте таблиц не могу сказать (не хватает кругозора)
    и вот каррирование см. для питона и скалы, как по мне - у скала очевидный синтаксис
    и в пику шарпею (C#) - там ваще что-то глазодробительное
     
  10. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    ;)
    lmike
    Hope... С таким синтаксисом название очень даже подходящее...
     
Загрузка...

Поделиться этой страницей