Тренируюсь на
кошкахтестовом сервере переносить базу со старого биллинга.
В скрипте есть такой момент
Код:
........
public void main( setup, con, conSlave )
{
ContractRemover cr = new ContractRemover( Setup.getSetup(), con, null );
// удаление ранее загруженных договоров
query = "SELECT id FROM contract WHERE gr & (1<<?) != 0 ";
ps = con.prepareStatement( query );
ps.setInt( 1, LOADED_GROUP );
rs = ps.executeQuery();
int count = 0;
while ( rs.next() )
{
int cid = rs.getInt( 1 );
cr.deleteContract( cid );
count ++;
}
ps.close();
//
print( "Removed " + count + " contracts.." );
loadFile( "/opt/BG/fst.csv", setup, con, PATTERN_ID );
}
private void loadFile( file, setup, con, PATTERN_ID )
{
....
blablabla
...
}
В первый раз скрипт отрабатывает на отлично. Все договора из csv файла импортируются, видны в биллинге и т.п.
Цитата:
OUT:
Removed 0 contracts..
Loading /opt/BG/fst.csv
Process time: 36 s.
Но во второй раз, при запуске на этом же файле
Цитата:
OUT:
Removed 22 contracts..
Loading /opt/BG/fst.csv
EXCEPTIONS:
Method Invocation cim.realUpdate
Method Invocation cim.realUpdate : at Line: 191 : in file: импорт базы фасткома : cim .realUpdate ( 0 , newPhone , true , context , true )
Called from method: main : at Line: -1 : in file: <Called from Java Code> : <Compiled Java Code>
Target exception: ru.bitel.bgbilling.common.BGException: Обнаружен конфликт номеров/портов с договор(ами) TITLE_NOT_FOUND
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
Смотрю в таблице phone_client_item_{mid}, а все загруженные номера на месте.
Собственно вопрос. Как корректно в скрипте удалять договора, чтобы за этим следовало удаление всех его сущностей аналогично удалению через клиент биллинга?