Salve,
ho un programma formato da 4 classi:
-DocMultimediale: 7 variabili d'istanza (tipo, percorso, dimensione, datacreazione, dataultimamodifica, descrizione e formato;
-Utente: 2 var d'istanza (username, percorso del file al quale può accedere);

lo scopo del programma è quello di modellare un documento multimediale, un utente che ha accesso a questo documento e un gestore file che deve compiere le seguenti operazioni:
-stampare una lista di documenti che hanno lo stesso tipo;
-stampare una lista di documenti che hanno lo stesso tipo e modello;
-stampare la lista di documenti a cui possono accedere gli utenti inserendo come input lo username dell'utente.

vi copio il gestore file:

import java.util.Scanner;
import java.util.ArrayList;
import java.io.PrintStream;

public class GestoreFile {
public GestoreFile(Scanner sc, Scanner sc1){

documenti=new ArrayList<DocMultimediale>();
DocMultimediale doc=DocMultimediale.read(sc);
while (doc!=null){
documenti.add(doc);
doc=DocMultimediale.read(sc);
}

utenti=new ArrayList<Utente>();
Utente u=Utente.read(sc1);
while (u!=null){
utenti.add(u);
u=Utente.read(sc1);
}
}
public GestoreFile(ArrayList<DocMultimediale> docs){
documenti=docs;
}
public void printDoc(PrintStream ps){
for (DocMultimediale d: documenti)
ps.println(d);
}
public void printUtente(PrintStream ps){
for (Utente u: utenti)
ps.println(u);
}
//Restituisce una arraylist di file che hanno lo stesso tipo;
public GestoreFile searchForTipo(String tipo){
ArrayList<DocMultimediale> foundDocs=new ArrayList<DocMultimediale>();
for (DocMultimediale d: documenti){
if (tipo.equalsIgnoreCase(d.getTipo()))
foundDocs.add(d);
}
return new GestoreFile(foundDocs);
}
//Restituisce una arraylist di file che hanno lo stesso formato;
public GestoreFile searchForFormato(String formato){
ArrayList<DocMultimediale> foundDocs=new ArrayList<DocMultimediale>();
for (DocMultimediale d: documenti){
if (formato.equalsIgnoreCase(d.getFormato()))
foundDocs.add(d);
}
return new GestoreFile(foundDocs);
}
//Restituisce l'utente che ha l'username inserito nella lista di parametri;
public Utente searchUtenteForUsername(String username){
int i=0;
boolean done=false;

if (utenti==null)
return null;

while (i<utenti.size() && !done){
if (username.equalsIgnoreCase(utenti.get(i).getUserNa me()))
done=true;
else i++;
}
if (done) return utenti.get(i);
return null;
}
//Restituisce la lista di file a cui un utente può accedere partendo dal suo username;
public GestoreFile searchFileForUsername(String username){
//Utilizziamo il metodo precedentemente implementato;
Utente u=searchUtenteForUsername(username);

if (u==null) return null;
String percorso=u.getPercorso();
ArrayList<DocMultimediale> foundDocs=new ArrayList<DocMultimediale>();
for (DocMultimediale d: documenti){
if (percorso.equalsIgnoreCase(d.getPercorso()))
foundDocs.add(d);
}
return new GestoreFile(foundDocs);
}
private ArrayList<Utente> utenti;
private ArrayList<DocMultimediale> documenti;
}




Gli ultimi due metodi non mi funzionano. Non da errore (mai pagina fu più immacolata) ma da errore nell'esecuzione. Credo che l'errore principale sia nel penultimo metodo (searchUtenteForUsername): poco prima di iniziare il ciclo while ho eseguito un controllo con l'if per vedere se la variabile d'istanza clienti (arraylist) era vuota o aveva qualche elemento e credo proprio che sia vuota perchè, quando eseguo il tester, non mi restituisce nulla.
Tutto il resto funziona.
Domani ho un test.
Aiutatemi.