Имеем след. анкету:
public void commandAnketa(IcqProtocol proc, String uin, Vector v, String mmsg){
try{
int step = 0;
String cmd = "";
Users uss = srv.us.getUser(uin);
if (comMap.containsKey(uin)){
step = Integer.parseInt(comMap.get(uin).getMsg());
cmd = comMap.get(uin).getCmd();
v = comMap.get(uin).getData();
}
int len = mmsg.length();
switch (step){
case 0:
proc.mq.add(uin, "Введите ваше имя :)/>");
comMap.put(uin, new CommandExtend(uin, cmd,"1",v, 60*1000));
break;
case 1:
if (!(len>15)){
v.add(0,mmsg);
uss.fname=mmsg;
srv.us.updateUser(uss);
proc.mq.add(uin,"Отлично "+ uss.fname +", теперь укажите Ваш город");
comMap.put(uin, new CommandExtend(uin, cmd,"2",v, 60*1000));
}else{
proc.mq.add(uin,"Слишком длинное имя (>15).");
comMap.put(uin, new CommandExtend(uin, cmd,"1",v, 60*1000));
return;
}
break;
case 2:
if (!(len>15)){
v.add(1,mmsg);
uss.city=mmsg;
srv.us.updateUser(uss);
proc.mq.add(uin,"Отлично "+ uss.fname +", теперь укажите Ваш пол:\n1 - женский;\n2 - мужской.");
comMap.put(uin, new CommandExtend(uin, cmd,"3",v, 60*1000));
}else{
proc.mq.add(uin,"Это чё деревня такая? Напишите короче... (>15).");
comMap.put(uin, new CommandExtend(uin, cmd,"2",v, 60*1000));
return;
}
break;
case 3:
if(mmsg.equals("1") || mmsg.equals("2")){
v.add(2,mmsg);
uss.gender=Integer.parseInt(mmsg);
srv.us.updateUser(uss);
proc.mq.add(uin,"Отлично "+ uss.fname +", введите год рождения, например 1980");
comMap.put(uin, new CommandExtend(uin, cmd,"4",v, 60*1000));
}else{
proc.mq.add(uin,"Введи только цифру");
comMap.put(uin, new CommandExtend(uin, cmd,"3",v, 60*1000));
return;
}
break;
case 4:
int birthyear=0;
try{
birthyear=Integer.parseInt(mmsg);
}catch(Exception ex){
proc.mq.add(uin, "Вводить нужно только цифры! Повторите");
comMap.put(uin, new CommandExtend(uin, cmd,"4",v, 60*1000));
return;
}
if(birthyear>0 && birthyear<2500){
v.add(3,mmsg);
uss.birthyear=birthyear;
srv.us.updateUser(uss);
proc.mq.add(uin,"Отлично "+ uss.fname +", введите месяц рождения, например 2");
comMap.put(uin, new CommandExtend(uin, cmd,"5",v, 60*1000));
}else{
proc.mq.add(uin,"Ну не ври, а то шас обижусь...");
comMap.put(uin, new CommandExtend(uin, cmd,"4",v, 60*1000));
return;
}
break;
case 5:
int birthmonth=0;
try{
birthmonth=Integer.parseInt(mmsg);
}catch(Exception ex){
proc.mq.add(uin, "Вводить нужно только цифры! Повторите");
comMap.put(uin, new CommandExtend(uin, cmd,"5",v, 60*1000));
return;
}
if(birthmonth>0 && birthmonth<13){
v.add(4,mmsg);
uss.birthmonth=birthmonth;
srv.us.updateUser(uss);
proc.mq.add(uin,"Отлично "+ uss.fname +", введите день рождения, например 12");
comMap.put(uin, new CommandExtend(uin, cmd,"6",v, 60*1000));
}else{
proc.mq.add(uin,"Ну не ври, а то шас обижусь...");
comMap.put(uin, new CommandExtend(uin, cmd,"5",v, 60*1000));
return;
}
break;
case 6:
int birthday=0;
try{
birthday=Integer.parseInt(mmsg);
}catch(Exception ex){
proc.mq.add(uin, "Вводить нужно только цифры! Повторите");
comMap.put(uin, new CommandExtend(uin, cmd,"6",v, 60*1000));
return;
}
if(birthday>0 && birthday<32){
v.add(5,mmsg);
uss.birthday=birthday;
srv.us.updateUser(uss);
proc.mq.add(uin,"Отлично "+ uss.fname +", напишите что-нибудь о себе (до 250 символов)");
comMap.put(uin, new CommandExtend(uin, cmd,"7",v, 60*1000));
}else{
proc.mq.add(uin,"Ну не ври, а то шас обижусь...");
comMap.put(uin, new CommandExtend(uin, cmd,"6",v, 60*1000));
return;
}
break;
case 7:
if (!(len>250)){
v.add(6,mmsg);
uss.email=mmsg;
srv.us.updateUser(uss);
proc.mq.add(uin,uss.fname+", анкета заполнена!");
comMap.remove(uin);
}else{
proc.mq.add(uin,"Слишком длинная инфо (>250)");
comMap.put(uin, new CommandExtend(uin, cmd,"7",v, 60*1000));
return;
}
break;
}
}catch(Exception ex){
ex.printStackTrace();
proc.mq.add(uin,"Ошибка: "+ex.getMessage());
}
}
При вводе команды:
nick (12:51:38 20/02/2010)
!анкета
chat-test (12:51:38 20/02/2010)
Введите ваше имя
nick (12:51:42 20/02/2010)
Петрушко
nick (12:53:03 20/02/2010)
!анкета
chat-test (12:53:03 20/02/2010)
Отлично !анкета, теперь укажите Ваш город
Логи пустуют, подскажите где ошибка