📄 service.java
字号:
/**
* Class : short description
* @author Michele 'Miccar' Cardinale miccar@gmail.com
* @author Natale Vinto ebballon@interfree.it
* @version 1.0
*/
/*
* goText : text messaging over GPRS
* Copyright (C) 2006 Natale Vinto <ebballon@interfree.it>
* OpenJLab Group www.openjlab.org
* Copyright (C) 2006 Michele Cardinale 'Miccar' <miccar@gmail.com>
* www.miccar.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
import javax.microedition.rms.*;
import java.util.*;
public class Service{
public static final int MAX_MEM_SERVICES=20;
private static final int INDEX_NAME=0;
private static final int INDEX_ADDRESS=1;
private static final int INDEX_NEED_USER=2;
private static final int INDEX_USER=3;
private static final int INDEX_NEED_PASS=4;
private static final int INDEX_PASS=5;
private static final int INDEX_NEED_NICK=6;
private static final int INDEX_NICK=7;
private static final int INDEX_MAX_RECIPIENTS=8;
private static final int INDEX_MAX_CHARS=9;
private static final int INDEX_MAX_MSG=10;
private static final int INDEX_SENT_MSG=11;
private static final int INDEX_IS_NUMERIC_RECIPIENT=12;
private static final int INDEX_SIGN=13;
static String token=";";
static String RN="_services";
private String serviceString;
/** Creates a new instance of Service */
public Service(String stringa) {
this.setString(stringa);
}
private void setString(String stringa){
this.serviceString=stringa;
}
public String getString(){
return this.serviceString;
}
public String getName(){
return utils.splitString(this.serviceString, token)[this.INDEX_NAME];
}
public String getAddress(){
return utils.splitString(this.serviceString, token)[this.INDEX_ADDRESS];
}
public int getNeedUser(){
return Integer.parseInt(utils.splitString(this.serviceString, token)[this.INDEX_NEED_USER]);
}
public String getUser(){
return utils.splitString(this.serviceString, token)[this.INDEX_USER];
}
public int getNeedPass(){
return Integer.parseInt(utils.splitString(this.serviceString, token)[this.INDEX_NEED_PASS]);
}
public String getPass(){
return utils.splitString(this.serviceString, token)[this.INDEX_PASS];
}
public int getNeedNick(){
return Integer.parseInt(utils.splitString(this.serviceString, token)[this.INDEX_NEED_NICK]);
}
public String getNick(){
return utils.splitString(this.serviceString, token)[this.INDEX_NICK];
}
public int getMaxRecipients(){
return Integer.parseInt(utils.splitString(this.serviceString, token)[this.INDEX_MAX_RECIPIENTS]);
}
public int getMaxChars(){
return Integer.parseInt(utils.splitString(this.serviceString, token)[this.INDEX_MAX_CHARS]);
}
public int getMaxCharsWithSign(){
return getMaxChars()-(getSign().length()>0?getSign().length()+1:0);
}
public int getMaxMsg(){
return Integer.parseInt(utils.splitString(this.serviceString, token)[this.INDEX_MAX_MSG]);
}
public int getSentMsg(){
return Integer.parseInt(utils.splitString(this.serviceString, token)[this.INDEX_SENT_MSG]);
}
public int getIsNumericRecipient(){
return Integer.parseInt(utils.splitString(this.serviceString, token)[this.INDEX_IS_NUMERIC_RECIPIENT]);
}
public String getSign(){
return utils.splitString(this.serviceString, token)[this.INDEX_SIGN];
}
public int set(String name,String address,int needuser,String user,int needpass,String pass,int neednick,String nick,int maxrecipients,int maxchars,int maxmsg,int sentmsg,int isnumericrecipient,String sign){
/*
* Permette di modificare i parametri del servizio.
* Restituisce il risultato della chiamata a modService (0 o -1 ERRORE,
* un qualunque numero maggiore di 0 OK).
*/
String nuova=name+token;
nuova+=address+token;
nuova+=needuser+token;
nuova+=user+token;
nuova+=needpass+token;
nuova+=pass+token;
nuova+=neednick+token;
nuova+=nick+token;
nuova+=maxrecipients+token;
nuova+=maxchars+token;
nuova+=maxmsg+token;
nuova+=sentmsg+token;
nuova+=isnumericrecipient+token;
nuova+=sign;
return Service.modService(nuova, this.getRmsId());
}
public int increaseSentMsg(int incr){
/*
* Incrementa di uno il num di messaggi inviati per il servizio
* selezionato. Ritorna il nuovo numero di mess inviati oppure -1 nel
* caso di errore.
*/
int sentmsg=this.getSentMsg()+incr;
String nuova=this.getName()+token;
nuova+=this.getAddress()+token;
nuova+=this.getNeedUser()+token;
nuova+=this.getUser()+token;
nuova+=this.getNeedPass()+token;
nuova+=this.getPass()+token;
nuova+=this.getNeedNick()+token;
nuova+=this.getNick()+token;
nuova+=this.getMaxRecipients()+token;
nuova+=this.getMaxChars()+token;
nuova+=this.getMaxMsg()+token;
nuova+=sentmsg+token;
nuova+=this.getIsNumericRecipient()+token;
nuova+=this.getSign();
if(Service.modService(nuova, this.getRmsId())>0)
return this.getSentMsg();
else
return -1;
}
public int resetSentMsg(){
/*
* Resetta il num di messaggi inviati per il servizio selezionato.
* Ritorna il nuovo numero di mess inviati oppure -1 nel caso di errore.
*/
int sentmsg=0;
String nuova=this.getName()+token;
nuova+=this.getAddress()+token;
nuova+=this.getNeedUser()+token;
nuova+=this.getUser()+token;
nuova+=this.getNeedPass()+token;
nuova+=this.getPass()+token;
nuova+=this.getNeedNick()+token;
nuova+=this.getNick()+token;
nuova+=this.getMaxRecipients()+token;
nuova+=this.getMaxChars()+token;
nuova+=this.getMaxMsg()+token;
nuova+=sentmsg+token;
nuova+=this.getIsNumericRecipient()+token;
nuova+=this.getSign();
if(Service.modService(nuova, this.getRmsId())>0)
return this.getSentMsg();
else
return -1;
}
public int getRmsId(){
RecordStore rs=null;
try{
rs=RecordStore.openRecordStore(RN, true);
RecordEnumeration e=rs.enumerateRecords(new RSUtils().new FilterByRegionString(this.serviceString),null,true);
if(e.hasNextElement()){
return e.nextRecordId();
} else {
return -1;
}
} catch (Exception e){
return -2;
} finally {
try{
rs.closeRecordStore();
} catch (Exception e){}
}
}
public boolean isConfigured(){
if ((this.getNeedUser()==1)&&(this.getUser().length()<1))
return false;
if ((this.getNeedPass()==1)&&(this.getPass().length()<1))
return false;
if ((this.getNeedNick()==1)&&(this.getNick().length()<1))
return false;
return true;
}
// STATICI
private static Service[] servicesArray() {
if(Service.servicesList()==null) {
return null;
} else {
Service[] services_array=new Service[Service.servicesList().size()];
Service.servicesList().copyInto(services_array);
return services_array;
}
}
private static Vector servicesList() {
Vector services_list=new Vector();
RecordStore rs=null;
try{
rs=RecordStore.openRecordStore(RN, true);
RecordEnumeration e=rs.enumerateRecords(null,null,true);
while(e.hasNextElement()){
services_list.addElement(new Service(new String(e.nextRecord())));
}
} catch (Exception e){
} finally {
try{
rs.closeRecordStore();
} catch (Exception e){
}
}
return services_list;
}
private static boolean isValidServiceString(String stringa){
/*
* Effettua il check della stringa passata per creare/modificare un
* servizio. Ritorna TRUE se la stringa
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -