Bonjour,

je fais appel à une méthode getListeVoyages qui fait appel à deux autres méthodes :choixHasardDansListe & calculNbJourDisponibles.

mais je reçois un msg d'erreur qui m'indique que la liste renvoyée par choixHasardDansListe est vide,j'ai débugé le prg mais j'ai pas trouvé la source du pb.Pourriez vous jeter un coup d'oeil sur les codes sources ci -dessous,merci d'avance.

Cdt,


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
private Calendar choixHasardDansListe(ArrayList<Calendar> listeJours) {
		listeJours = new ArrayList<Calendar>();
		System.out.println("la taille de listeJours est:" + listeJours.size());
		int position = (int) Math.floor(Math.random()) * listeJours.size();
		System.out.println("la position est:" + position);
		return (Calendar) listeJours.get(position).clone();
	}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
public ArrayList<ArrayList<Calendar>> calculNbJourDisponibles(Date dateMin,
			Date dateMax) {
 
		Calendar c = Calendar.getInstance();
		c.setTime(dateMin);
		ArrayList<ArrayList<Calendar>> listeJours = new ArrayList<ArrayList<Calendar>>();
		listeJours.add(0, null);
		for (int i = 1; i <= 7; i++) {
			listeJours.add(i, new ArrayList<Calendar>());
		}
 
		while (c.getTime().before(dateMax)) {
			listeJours.get(Calendar.DAY_OF_WEEK).add((Calendar) c.clone());
 
			c.add(Calendar.DAY_OF_MONTH, 1);
		}
		return listeJours;
 
	}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
public List<IVoyage> getListeVoyages(ILieu origine, ILieu destination,
			String clientOrigine, String clientDestination,
			Date debutPeriodeStat, Date finPeriodeStat, Date debutPeriodeOper,
			Date finPeriodeOper, int nombre) throws ServiceException {
 
		List<IVoyage> listeRecursive = null;
		String numeroFictif = "";
 
		if (nombre > 0) {
 
			ArrayList<ArrayList<Calendar>> listeCompleteJours = calculNbJourDisponibles(
					debutPeriodeOper, finPeriodeOper);
			System.out.println("debutPeriodeOper est :" + debutPeriodeOper);
			System.out.println("finPeriodeOper est :" + finPeriodeOper);
			System.out.println("la taille de la liste listeCompleteJours : "
					+ listeCompleteJours.size());
 
			if (listeCompleteJours.size() != 0 && listeCompleteJours != null) {
				for (int k = 0; k < listeCompleteJours.size(); k++) {
					System.out.println("" + listeCompleteJours.get(k));
 
				}
			}
			try {
				listeRecursive = (ArrayList<IVoyage>) daoFactory.getVoyageDao()
						.findVoyagesStatistiques(origine, destination,
								clientOrigine, clientDestination,
								debutPeriodeStat, finPeriodeStat, nombre);
				System.out.println("ma liste:" + listeRecursive);
				if (listeRecursive.size() != nombre)
					listeRecursive.addAll((ArrayList<IVoyage>) daoFactory
							.getVoyageDao().findVoyagesStatistiques(origine,
									destination, clientOrigine,
									clientDestination, debutPeriodeStat,
									finPeriodeStat,
									nombre - listeRecursive.size()));
 
				for (IVoyage objetVoyage : listeRecursive) {
					Calendar jourStat = Calendar.getInstance();
					jourStat.setTime(objetVoyage.getDateHeureDepart());
					System.out.println("la positionde listeJours:"
							+ jourStat.get(Calendar.DAY_OF_WEEK));
					ArrayList<Calendar> listeJours = listeCompleteJours
							.get(jourStat.get(Calendar.DAY_OF_WEEK));
					if (listeJours.isEmpty()) {
						// ERREUR
					}
					Calendar jourOper = choixHasardDansListe(listeJours);
					jourOper.set(Calendar.HOUR, jourStat.get(Calendar.HOUR));
					jourOper
							.set(Calendar.MINUTE, jourStat.get(Calendar.MINUTE));
					jourOper
							.set(Calendar.SECOND, jourStat.get(Calendar.SECOND));
 
					if (objetVoyage != null) {
						numeroFictif = daoFactory.getVoyageDao().getSeq(
								"s_num_wagon");
						System.out.println(numeroFictif);
						objetVoyage.setNumeroWagon(numeroFictif);
						objetVoyage.setEstPrevision(1);
						objetVoyage.setEstAnnule(0);
						objetVoyage.setDateHeureDepart(jourOper.getTime());
						daoFactory.getVoyageDao().insertTest(objetVoyage);
						System.out.println("ce voyage vient d'être inséré:"
								+ objetVoyage.getIdVoyage());
 
					}
				}
			} catch (DaoException e) {
				throw new ServiceException(e);
			}
		}
		return listeRecursive;
	}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	at java.util.ArrayList.RangeCheck(ArrayList.java:547)
	at java.util.ArrayList.get(ArrayList.java:322)
 
la ligne ou il y'a pb :return (Calendar) listeJours.get(position).clone();