Имеется следующий скрипт
Код:
import java.util.*;
import java.lang.*;
import java.text.*;
import java.util.regex.*;
import java.util.regex.*;
import bitel.billing.server.script.bean.*;
import bitel.billing.server.util.telnet.*;
import bitel.billing.server.phone.bean.*;
import bitel.billing.server.contract.bean.*;
import com.stalker.CGPro.*;
String ats_addr="10.9.0.18";
int ats_port=106;
String ats_login="ххх";
String ats_password="yyy";
CGProCLI cli;
Hashtable num_acc_table= new Hashtable();
public class NumNotFoundEx extends Exception{
NumNotFoundEx(String message){
super(message);
}
}
public void setAccount(String phone,boolean state){
cli=new CGProCLI(ats_addr,ats_port,ats_login,ats_password);
String account=FindAccount(phone);
String[ ] parts=account.split("@");
String domain=parts[parts.length-1];
//Create settings hashtable
SimpleDateFormat formatter = new SimpleDateFormat("[dd/MM/yyyy HH:mm]");
String date = formatter.format(new Date());
Hashtable settings = new Hashtable(1);
if (state)
settings.put("Status","OPEN "+date + " by billing");
else
settings.put("Status","CLOSED "+date+ " by billing");
//find groups
String group = "group."+account;
try {
Hashtable GroupTable = cli.getGroup(group);
Vector members=(Vector)GroupTable.get("Members");
for(Enumeration e = members.elements(); e.hasMoreElements();) {
String key=(String)e.nextElement();
cli.updateAccountSettings(key+"@"+domain, settings);
print("group: "+key+"@"+domain + settings);
}
if (state) {
String account_wo_domain = account.replaceAll("@.*","");
cli.sendCommand("updateAccountSignalRule "+account+" DELETE _CLOSED");
print("updateAccountSignalRule "+account+" DELETE _CLOSED");
}else {
cli.sendCommand("updateAccountSignalRule "+account+" (100010,\"_CLOSED\",(),((\"Redirect to\",\"#block_play\")))");
print("updateAccountSignalRule "+account+" (100010,\"_CLOSED\",(),((\"Redirect to\",\"#block_play\")))");
}
}catch(CGProException e) {
cli.updateAccountSettings(account, settings);
print(account + settings);
if (state) {
cli.sendCommand("updateAccountSignalRule "+account+" DELETE _CLOSED");
print("updateAccountSignalRule "+account+" DELETE _CLOSED");
} else {
cli.sendCommand("updateAccountSignalRule "+account+" (100010,\"_CLOSED\",(),((\"Redirect to\",\"#block_play\")))");
print("updateAccountSignalRule "+account+" (100010,\"_CLOSED\",(),((\"Redirect to\",\"#block_play\")))");
}
}
cli.logout();
}
public FindAllAccount(){
cli=new CGProCLI(ats_addr,ats_port,ats_login,ats_password);
String target_accout= "null";
String tel="";
Vector domains=cli.listDomains();
for(Iterator e = domains.iterator(); e.hasNext();) {
String domain=(String)e.next();
Hashtable accounts=cli.listAccounts(domain);
Enumeration k = accounts.keys();
while (k.hasMoreElements()) {
String key = (String) k.nextElement();
Vector telnums =cli.getAccountTelnums(key + "@" + domain);
for(Iterator t = telnums.iterator(); t.hasNext();) {
tel=(String)t.next();
target_accout = key + "@" + domain;
num_acc_table.put(tel,key + "@" + domain);
}
}
}
cli.logout();
}
public String FindAccount(String phonenumber){
String target_accout= "null";
Enumeration k = num_acc_table.keys();
while (k.hasMoreElements()) {
String tel=(String) k.nextElement();
Pattern myPattern = Pattern.compile(phonenumber);
Matcher myMatcher = myPattern.matcher(tel);
if (myMatcher.find()) {
target_accout = num_acc_table.get(tel);
return target_accout;
}
}
throw(new NumNotFoundEx("Phone numer not found: "+phonenumber));
}
public void onEvent(event,setup,con,conSlave){
try {
int cid=event.getContractID();
int status=event.getStatus().getStatus();
FindAllAccount();
ClientItemManager clim = new ClientItemManager(con,14);
List points = clim.getItemList(cid);
for(Iterator it=points.iterator(); it.hasNext();){
ClientItem point=it.next();
List numbers=point.getClientNumbers();
Calendar currentDate=Calendar.getInstance();
Calendar beforeDate=point.getDate1();
Calendar afterDate=point.getDate2();
if (((beforeDate == null) || (currentDate.compareTo(beforeDate)>=0)) &&
((afterDate == null) || (currentDate.compareTo(afterDate)<=0))){
num_it=numbers.iterator();
while(num_it.hasNext()){
try{
if(status == 0)
setAccount(num_it.next(),true);
else
setAccount(num_it.next(),false);
}catch(NumNotFoundEx x){
if(cli!=null)
cli.logout();
error(x.getMessage());
}
}
}
}
}catch(Exception x) {
if(cli!=null)
cli.logout();
error(x.getMessage());
}
return;
}
Он прекрастно работал на 5.0, а вот после обновления на 5.1 работаь перестал, с вот таким выхлопом:
Код:
Contract ХХХ
GENERATE_TIME: 31.01.12 14:33:19
EXECUTION_STOP_TIME: 31.01.12 14:33:54
PROCESS_TIME: 35891
OUT:
222хххх@domain.ru{Status=CLOSED [31/01/2012 14:33] by billing}
updateAccountSignalRule 222xxxx@domain.ru (100010,"_CLOSED",(),(("Redirect to","#block_play")))
WARNINGS:Function [id:14; title:Communigate]: using deprecated method [public int bitel.billing.server.script.bean.event.Event.getContractID()]
Подскажите плиз что не так а то я в яве не бум бум...