Дин.код для синхронизации pairing с внешнего cas
Материал из BiTel WiKi
Версия от 13:10, 12 декабря 2014; DimOn (Обсуждение | вклад)
Скрипт предназначен для синхронизации значения pairing_module в БД со значением уже установленным в CAS-сервере. Показывается пример того, как можно работать с API активаторов каждого протокола (см. DigitalTVServiceActivator) из скрипта. Данный пример предназначено для ручного запуска из редактора дин.кода. Каждый перезапуск пересинхронизирует и пересохраняет заново.
package ru.bitel.bgbilling.modules.cerbercrypt; import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import java.sql.Connection; import java.util.Calendar; import ru.bitel.bgbilling.kernel.module.common.bean.User; import ru.bitel.bgbilling.modules.cerbercrypt.common.bean.Card; import ru.bitel.bgbilling.modules.cerbercrypt.server.DigitalTVServiceActivator; import ru.bitel.bgbilling.modules.cerbercrypt.server.DigitalTVServiceActivator.ServiceActivationResult; import ru.bitel.bgbilling.modules.cerbercrypt.server.bean.CardManager; import ru.bitel.bgbilling.server.util.ModuleSetup; import ru.bitel.bgbilling.server.util.Setup; public class PairingSynchronizer extends GlobalScriptBase { private static final int CERBERCRYPT_MID = 666; @Override public void execute( Setup setup, ConnectionSet connectionSet ) throws Exception { Connection con = connectionSet.getConnection(); ModuleSetup moduleSetup = Setup.getSetup().getModuleSetup(CERBERCRYPT_MID); DigitalTVServiceActivator sa = DigitalTVServiceActivator.newInstance( moduleSetup, con, CERBERCRYPT_MID, Calendar.getInstance() ); // CardManager cm = new CardManager(con, CERBERCRYPT_MID, User.USER_SERVER); for( Long number : cm.getAllCardNumbers() ) { System.out.println("=>card: "+number); ServiceActivationResult result = sa.getPairing(number.longValue()); if(result.isResult()) { String caspairing = result.getMessage(); Card card = cm.getCard(number); String dbpairing = card.getPairingModule(); if(caspairing!=null) { System.out.println("\tpairing (cas): "+caspairing); if(!caspairing.equals(dbpairing)) { card.setPairingModule(caspairing); cm.updateCard(card); System.out.println("\tupdate card pairing (db): "+dbpairing+"->"+caspairing); } else { System.out.println("\tnot need to update"); } } else { System.out.println("\tpairing (cas): none"); } } else { System.out.println("\terror: "+result.getMessage()); } } } }
Внимание! Данное решение/метод/статья относится к версии 6.1 и для других версий может быть неактуальна! Вам нужно самостоятельно поправить решение под свои нужды или воспользоваться помощью на форуме. Будем признательны, если внизу страницы или отдельной статьёй вы разместите исправленное решение для другой версии или подсказки что надо исправить.