Дин.код для синхронизации pairing с внешнего cas

Материал из BiTel WiKi

Перейти к: навигация, поиск

Скрипт предназначен для синхронизации значения 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");
					// здесь можно сделать очищение pairing в бд, если его нет в cas
				}
			}
			else
			{
				System.out.println("\terror: "+result.getMessage());
			}
		}
	}
}

--dimOn 13:11, 12 декабря 2014 (UTC)

Внимание! Данное решение/метод/статья относится к версии 6.1 и для других версий может быть неактуальна! Вам нужно самостоятельно поправить решение под свои нужды или воспользоваться помощью на форуме. Будем признательны, если внизу страницы или отдельной статьёй вы разместите исправленное решение для другой версии или подсказки что надо исправить.

Личные инструменты