anna182
19-05-2004, 08:50
salve ho un piccolo problema con java ho creato un codice in grado di verificare se un dato Ibutton ha l'accesso o meno ad una porta...
il codice si presenta nel seguente modo: riceve come parametri IDutente e IDPorta e ritorna un boolean...true se l'utente ha l'accesso false se l'utente non ha l'accesso... la mia funzione dovrebbe leggere un file chiamato accesso.txt che e strutturato nel seguente modo:
IDPORTA1;IDPORTA2;...
IDUtente1;IDUtente2;IDutente3;...
255;0;255;
La terza riga del file equivale al permesso dell'utente...le porte comandate da TINI sono 8 (io ora provo il file su una porta sola...) quindi evidentemente se l'utente1 ha come permesso 255 potra entrare in tutte le porte...mentre se il permesso equivale a 0 non potra entrare in nessuna porta e via di seguito...il problema e che qls permesso io metta nella terza riga la mia funzione ritorna TRUE... ce qlc che sa perche??? potete aiutarmi??? non so piu cosa fare....:muro:
import java.lang.*;
import java.util.*;
import java.io.*;
import java.util.StringTokenizer;
public class GestioneAccessi{
private static String FileName;
String s="";
BufferedReader input = null;
int posporta;
int posutente;
boolean accessoOK = false;
public static void main (String []args){
int posporta;
int posutente;
if (verificaAccessi(args[0], args[1])) {
System.out.println("puo entrare");
}
else
{
System.out.println(" non puo entrare");
}
}
public static String getAccessFile(){
return(FileName);
}
public static void setAccessFile(String FileName){
FileName = "accesso.txt";
}
public static boolean verificaAccessi(String IDUtente, String IDPorta){
int mask;
int accesso;
int posporta;
int posutente;
String token="-1000";
boolean accessoOK = false;
int posaccesso = 0;
String s="";
BufferedReader input = null;
try{
input = new BufferedReader(new FileReader("accesso.txt"));
}
catch(FileNotFoundException E1)
{
E1.printStackTrace();
}
try{
s = input.readLine();
}
catch(Exception E2)
{
E2.printStackTrace();
}
posporta = Fposizione(IDPorta,s);
try{
s = input.readLine();
}
catch(Exception E2)
{
E2.printStackTrace();
}
posutente = Fposizione(IDUtente,s);
try{
s = input.readLine();
}
catch(Exception E2)
{
E2.printStackTrace();
}
System.out.println("prova s1: "+s);
StringTokenizer st = new StringTokenizer(s);
System.out.println("prova s2: "+s);
int i=0;
while (st.hasMoreTokens() && i <= posutente)
{
token = st.nextToken(";");
i++;
}
int accCode = Integer.parseInt(token);
System.out.println("Token: "+token);
System.out.println("Codice accesso: "+accCode);
System.out.println("Pos utente "+posutente);
System.out.println("Pos porta "+posporta);
accessoOK = (accCode & (0x1 << posporta)) != 0;
return accessoOK;
}
public static int Fposizione(String IDButton, String s){
int i = 0;
StringTokenizer st = new StringTokenizer(s);
while (st.hasMoreTokens())
{
String token = st.nextToken(";");
if(token.equals(IDButton)){
return i;
}
else{
i++;
}
}
return -1;
}
}
FILE ACCESSO.TXT
5B0000018A1B5409;
0E0000008F33A802;0B00000034D4D602;
0;255;
il codice si presenta nel seguente modo: riceve come parametri IDutente e IDPorta e ritorna un boolean...true se l'utente ha l'accesso false se l'utente non ha l'accesso... la mia funzione dovrebbe leggere un file chiamato accesso.txt che e strutturato nel seguente modo:
IDPORTA1;IDPORTA2;...
IDUtente1;IDUtente2;IDutente3;...
255;0;255;
La terza riga del file equivale al permesso dell'utente...le porte comandate da TINI sono 8 (io ora provo il file su una porta sola...) quindi evidentemente se l'utente1 ha come permesso 255 potra entrare in tutte le porte...mentre se il permesso equivale a 0 non potra entrare in nessuna porta e via di seguito...il problema e che qls permesso io metta nella terza riga la mia funzione ritorna TRUE... ce qlc che sa perche??? potete aiutarmi??? non so piu cosa fare....:muro:
import java.lang.*;
import java.util.*;
import java.io.*;
import java.util.StringTokenizer;
public class GestioneAccessi{
private static String FileName;
String s="";
BufferedReader input = null;
int posporta;
int posutente;
boolean accessoOK = false;
public static void main (String []args){
int posporta;
int posutente;
if (verificaAccessi(args[0], args[1])) {
System.out.println("puo entrare");
}
else
{
System.out.println(" non puo entrare");
}
}
public static String getAccessFile(){
return(FileName);
}
public static void setAccessFile(String FileName){
FileName = "accesso.txt";
}
public static boolean verificaAccessi(String IDUtente, String IDPorta){
int mask;
int accesso;
int posporta;
int posutente;
String token="-1000";
boolean accessoOK = false;
int posaccesso = 0;
String s="";
BufferedReader input = null;
try{
input = new BufferedReader(new FileReader("accesso.txt"));
}
catch(FileNotFoundException E1)
{
E1.printStackTrace();
}
try{
s = input.readLine();
}
catch(Exception E2)
{
E2.printStackTrace();
}
posporta = Fposizione(IDPorta,s);
try{
s = input.readLine();
}
catch(Exception E2)
{
E2.printStackTrace();
}
posutente = Fposizione(IDUtente,s);
try{
s = input.readLine();
}
catch(Exception E2)
{
E2.printStackTrace();
}
System.out.println("prova s1: "+s);
StringTokenizer st = new StringTokenizer(s);
System.out.println("prova s2: "+s);
int i=0;
while (st.hasMoreTokens() && i <= posutente)
{
token = st.nextToken(";");
i++;
}
int accCode = Integer.parseInt(token);
System.out.println("Token: "+token);
System.out.println("Codice accesso: "+accCode);
System.out.println("Pos utente "+posutente);
System.out.println("Pos porta "+posporta);
accessoOK = (accCode & (0x1 << posporta)) != 0;
return accessoOK;
}
public static int Fposizione(String IDButton, String s){
int i = 0;
StringTokenizer st = new StringTokenizer(s);
while (st.hasMoreTokens())
{
String token = st.nextToken(";");
if(token.equals(IDButton)){
return i;
}
else{
i++;
}
}
return -1;
}
}
FILE ACCESSO.TXT
5B0000018A1B5409;
0E0000008F33A802;0B00000034D4D602;
0;255;