forum.bitel.ru http://forum.bitel.ru/ |
|
Получить Contract http://forum.bitel.ru/viewtopic.php?f=19&t=12369 |
Страница 1 из 2 |
Автор: | mhollow [ 07 апр 2017, 16:09 ] |
Заголовок сообщения: | Получить Contract |
Подскажите пожалуйста как сейчас правильно получать Contract по id, а то смотрю, то не использовать, то использовать.. трудно по началу разобраться. Один единственный, по id полученному из event. Спасибо. |
Автор: | skyb [ 07 апр 2017, 16:26 ] |
Заголовок сообщения: | Re: Получить Contract |
Код: Connection con = connectionSet.getConnection(); ContractManager cm = new ContractManager(con); Contract contract = cm.getContractById(cid); плюсик слева, а то опять фрикер перехватит )))) |
Автор: | mhollow [ 07 апр 2017, 16:28 ] |
Заголовок сообщения: | Re: Получить Contract |
дык вроде как он возвращает не кошерный Contract По возможности не использовать. Использовать Contract. Есть трудности с переводом на новый бин из-за tariffOptions и tts, до тех пор пока к ним обращаються сюда, перевести полностью не получится. |
Автор: | skyb [ 07 апр 2017, 16:45 ] |
Заголовок сообщения: | Re: Получить Contract |
а ссыль? а то о каких версиях непонятно |
Автор: | mhollow [ 07 апр 2017, 16:47 ] |
Заголовок сообщения: | Re: Получить Contract |
https://bgbilling.ru/v7.0/javadoc/index ... nager.html |
Автор: | Phricker [ 07 апр 2017, 16:51 ] |
Заголовок сообщения: | Re: Получить Contract |
Код: Connection con = connectionSet.getConnection(); ContractDao contractDao = new ContractDao(con, User.USER_SERVER); Contract contract = contractDao.get(CONTRACT_ID); p.s. ваши программисты пишущие кошерный динамически подгружаемый код Java не смогли разобраться в API? O.o Или апи тоже через жопу написанное? |
Автор: | skyb [ 07 апр 2017, 16:52 ] |
Заголовок сообщения: | Re: Получить Contract |
даошки ненада жеж ) а что не так то? Код: getContractById
public Contract getContractById(int cid) Возвращает договор по его коду Parameters: cid - код договора Returns: |
Автор: | Phricker [ 07 апр 2017, 16:53 ] |
Заголовок сообщения: | Re: Получить Contract |
Ну тогда ContractService. Минуту щас найду где оно у меня. |
Автор: | Phricker [ 07 апр 2017, 16:55 ] |
Заголовок сообщения: | Re: Получить Contract |
Код: ServerContext context = ServerContext.get(); ContractService contractService = context.getService(ContractService.class, 0); contractService.contractGet(CONTRACT_ID); Лень IDE запускать, написал навскидку. Но кажись оно. |
Автор: | Phricker [ 07 апр 2017, 16:59 ] |
Заголовок сообщения: | Re: Получить Contract |
skyb писал(а): а что не так то? Там два Contract Первый типа устарел все дела. https://bgbilling.ru/v7.0/javadoc/bitel ... tract.html Цитата: По возможности не использовать. Использовать Contract. Есть трудности с переводом на новый бин из-за tariffOptions и tts, до тех пор пока к ним обращаються сюда, перевести полностью не получится. и в нем же есть ссылка на второй https://bgbilling.ru/v7.0/javadoc/ru/bi ... tract.html Я юзаю какой придется, т.к. про ContractService не всегда вспоминаю, а большая часть отчетов переписывается со старых в которых используется ContractManager. |
Автор: | mhollow [ 07 апр 2017, 17:00 ] |
Заголовок сообщения: | Re: Получить Contract |
Итого три способа)) Не многовато ли?)) Дык какой предпочтительный? Dao? Уважаемые разработчики? Эм? |
Автор: | Phricker [ 07 апр 2017, 17:06 ] |
Заголовок сообщения: | Re: Получить Contract |
Старый способ через ContractManager. Использовался в том числе и в богохульном BGBS. Новый способ - через ContractService. Появился в 6.2 и выше кажись. В новом способе внутри используется ContractDao, так что можно с осторожностью использовать даошку если нет другого варианта, не забывая закрывать и прочее. Код: private ContractDao getDao() {
if(this.contractDao == null) { this.contractDao = new ContractDao(this.getConnection(), this.userId); } return this.contractDao; } ... @PreDestroy private void destroy() { try { if(this.contractDao != null) { this.contractDao.close(); this.contractDao = null; } } catch (Exception var2) { logger.error(var2.getMessage(), var2); } } ... public Contract contractGet(int contractId) throws BGException { return (Contract)this.getDao().get(contractId); } |
Автор: | Phricker [ 07 апр 2017, 17:09 ] |
Заголовок сообщения: | Re: Получить Contract |
Если что старый способ оставлен для обратной совместимости. А то мало ли скажете, что все сделано для того, чтобы вас запутать. |
Автор: | mhollow [ 07 апр 2017, 17:51 ] |
Заголовок сообщения: | Re: Получить Contract |
И я Вас тоже люблю ![]() А можно ссылочку на ServerContext ? Чет не могу найти в API 7.0. А то ведь запутаюсь не ровен час )) |
Автор: | mhollow [ 07 апр 2017, 18:39 ] |
Заголовок сообщения: | Re: Получить Contract |
Как после изменения обновить Contract? Причем контракт который ru.bitel.bgbilling.kernel.contract.api.common.bean.Contract Например, после contract.setTitle() Что нужно сделать чтобы обновилось и в базе и желательно в сразу в интерфейсе? Спасибо. |
Автор: | skn [ 07 апр 2017, 18:57 ] |
Заголовок сообщения: | Re: Получить Contract |
https://bgbilling.ru/v7.0/javadoc/ru/bi ... ctDao.html метод update(...) в интерфейсе не поменяется, пока не кликнете по кнопке обновить |
Автор: | mhollow [ 07 апр 2017, 19:02 ] |
Заголовок сообщения: | Re: Получить Contract |
Спасибо. И никакого события нет чтобы до создания договора отработало и новый договор был создан уже с новым title? Чтобы не обновлять |
Автор: | barguzin2 [ 07 апр 2017, 19:39 ] |
Заголовок сообщения: | Re: Получить Contract |
напишите дин.сервис, который будет расширять штатный ContractService, в нём формируете нужный вам title и вызываете super. на вики есть пример. Ы... ![]() |
Автор: | Amir [ 07 апр 2017, 20:08 ] |
Заголовок сообщения: | Re: Получить Contract |
Может, если просто создаете новый договор, все-таки достаточно стандартных шаблонов номера договора? |
Автор: | mhollow [ 07 апр 2017, 20:19 ] |
Заголовок сообщения: | Re: Получить Contract |
Не, мне надо контрольную цифру считать. Шаблонные имена к сожалению имеют слишком ограниченный функционал. |
Автор: | mhollow [ 07 апр 2017, 20:33 ] |
Заголовок сообщения: | Re: Получить Contract |
Так Dao сказали не пользоваться. Или как? Обновить Contract это как раз тот случай "когда нет другого варианта"? И можно ссылку на метод update(), а то я уже начинаю подозревать что Phricker был прав говоря про способ написания API) |
Автор: | skn [ 07 апр 2017, 21:15 ] |
Заголовок сообщения: | Re: Получить Contract |
mhollow писал(а): Так Dao сказали не пользоваться. Или как? Обновить Contract это как раз тот случай "когда нет другого варианта"? И можно ссылку на метод update(), а то я уже начинаю подозревать что Phricker был прав говоря про способ написания API) ru.bitel.common.dao.AbstractDao.update(...) это один из предков ContractDao что и как использовать зависит от конкретного случая, иногда можно и напрямую в БД править. |
Автор: | Amir [ 07 апр 2017, 21:24 ] |
Заголовок сообщения: | Re: Получить Contract |
Старый пример, но можно оттуда что-нибудь взять: http://wiki.bitel.ru/index.php/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0#.D0.92.D1.81.D1.82.D0.B0.D0.B2.D0.BA.D0.B0_.D0.BA.D0.BE.D0.BD.D1.82.D1.80.D0.BE.D0.BB.D1.8C.D0.BD.D0.BE.D0.B9_.D1.81.D1.83.D0.BC.D0.BC.D1.8B_.D0.B2_.D0.BD.D0.BE.D0.BC.D0.B5.D1.80_.D0.B4.D0.BE.D0.B3.D0.BE.D0.B2.D0.BE.D1.80.D0.B0 Если изменение номера договора будет в скрипте на создание договора - то ничего обновлять в клиенте не надо. |
Автор: | Phricker [ 07 апр 2017, 21:46 ] |
Заголовок сообщения: | Re: Получить Contract |
я бы дал готовый скрипт в динкоде, но... вы же испытываете к скриптам неприязнь ![]() |
Автор: | mhollow [ 07 апр 2017, 21:56 ] |
Заголовок сообщения: | Re: Получить Contract |
Да, обновлять ничего не надо, я проверил. Это хорошо. >>ru.bitel.common.dao.AbstractDao.update(...) это один из предков ContractDao Дык описание где? в API 7.0 нет, равно как и ServerContext. Как пользователь предполагается узнает об этих классах и параметров методов? От доброго дядюшки Phricker'a на форуме? Сейчас обновляю Contract полученные через ServerContext и ContractService так: ContractDao contractDao = new ContractDao(dbConn.getConnection(), User.USER_SERVER); contractDao.update(contract); Нужно ли потом вызывать contractDao.close(); и прочие танцы с бубном? Или все-таки dao AutoCloseable ? |
Автор: | mhollow [ 07 апр 2017, 23:59 ] |
Заголовок сообщения: | Re: Получить Contract |
откуда я знаю можно или нельзя если это нигде не написано |
Автор: | mhollow [ 08 апр 2017, 01:18 ] |
Заголовок сообщения: | Re: Получить Contract |
А вообще конечно разброд и шатание. Один контракт устарел "По возможности не использовать". Замечательно, я стараюсь быть послушным мальчиком и использовать новые классы. Беру нужный мне ContractCreatedEvent и очень хочу получить из него Contract. Вижу: очень удобно - он содержит метод, который сразу позволяет получить Contract - getContract(). Но тут... сюрприииз угадайте какой Contract он возвращает? Правильно, тот который "по возможности не использовать". Как мне кажется, если разработчики объявляют какой-то класс deprecated, то в первую очередь они первые должны обеспечить все возможности и удобства для перехода на новые классы, не? А тут приходится хитро изголяться, чтобы получить "новый" Contract через Id договора и через "новые" API которые внезапно еще и нигде не описаны. В результате какой-то левый гемор и 3 строчки нелогичного кода вместо одной. Ведь всего этого разговора бы просто не было если бы getContract() у Eventa возвращал бы новый "правильный" Contract. Да я понимаю, обратная совместимость и все такое, но сделайте же тогда новый метод getContract2() возвращающий новый Contract ну? Делов то на 15 минут а пользователям будет приятно)) |
Автор: | barguzin2 [ 08 апр 2017, 09:06 ] |
Заголовок сообщения: | Re: Получить Contract |
Л - Логика. Комрад, если вам сам биллинг подкидывает в ивенте так называемый некошерный Contract (который, кстати, вовсе не устарел, т.к. не Depricated и много еще где используется), то, спрашивается, нахрена усложнять себе задачу и дергать кашерный, который для ваших целей ничем не лутьше. Юзайте то, что дают + ContractManager - и будет вам щщастье. P.S. Это не разброд и шатание, это постоянное изменение и улучшение биллинга, а с вашей стороны - банальное фи и отсутствие понимания, которое приходит с опытом. А у вас даже нет желания его получать, т.к. вы на каждый чих пишите на форум, и вам пока все достаточно доброжелательно отвечают и разжевывают. Вы не гонитесь сразу за кошерностью, делайте подручными средствами и минимальными усилиями, а там уже допилите. А пока от вас сильно скепсисом веет. Чтоб вам с CarbonBilling работать... |
Автор: | mhollow [ 08 апр 2017, 10:31 ] |
Заголовок сообщения: | Re: Получить Contract |
Видимо, комрад, у нас с Вами слишком разное понимание выражение "По возможности не использовать". По мне так "deprecated" и "По возможности не использовать" это синонимы. Если Вы видите тонкую грань между этими категориями, с удовольствием выслушаю. А так то да, Вы правы, конечно. "Жрите что дают" давно пора сделать главным девизом фирмы bitel. Тёма Лебедев со своим "Долго, дорого, о#@$нно" одобряэ..) На счет разжёвывают, ДА, за что всем огромное спасибо. Я это очень ценю, нет, правда! Особенно господину Фрикеру. Ему вообще надо дать какой-нибудь орден за то, насколько доброжелательно он это делает) Скепсис мой в основном сводится только к одному: "Плохое качество документации". И это объективно так. И это я кому хочешь обосную, сколько бы вы тут не гоняли меня ссаными тряпками. Документация отвратительная. Она плоха и для "Администратора" и я конечно был готов к чему-то подобному когда открывал API но такое... А отсутствие документации вынуждает меня обращаться сюда. Если Вы думаете, что я получаю огромное удовольствие выпрашивая тут интересующие меня вещи на форуме и вступая с вами в подобные склоки, Вы сильно ошибаетесь. Мне очень жалко и мое время и ваше, уважаемое коммьюнити. Я всего-лишь выполняю свою работу которая в данном случае мне доставляет мало удовольствия. Разбираться в достаточно комплексном проекте, без хорошей доки не очень интересно, так что уж простите мои претензии. Это "накипает" )) Я скажу так. Если бы каждый участник только веток которые создаю я, потратил то же количество времени, которое потратил на разжевывание и флейм, на доработку документации, многие бы разделы форума можно было закрывать. Мне не нужно разжевывание, я конечно дурак, но не полный идиот, и пока еще могу читать руководства, но это тяжело когда их нет... |
Страница 1 из 2 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |