IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

boucle sur des calendars


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 86
    Points : 44
    Points
    44
    Par défaut boucle sur des calendars
    Bonjour,

    je fais comparison entre deux calendars et le classement du jour en utilisant day_of_week_in_month et j'aimerais parcourrir tous les mois entre deux calendars,voici un morceau de mon code dans lequel je dois préciser sur quel mois je compare.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ((jourDeSemaineOper).equals(jourDeSemaineStat)
    							&& (jourOper.get(Calendar.DAY_OF_WEEK_IN_MONTH)) == (jourStat
    									.get(Calendar.DAY_OF_WEEK_IN_MONTH))
    jourOper,jourStat :deux calendars
    jourDeSemaineOper,jourDeSemaineStat:les jours de la semaine:lundi....dimanche

    les deux calendars à parcourrir sont ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Calendar debutPeriodeOperCalendar = Calendar.getInstance();
    					Calendar finPeriodeOperCalendar = Calendar.getInstance();
    debutPeriodeOperCalendar.setTime(debutPeriodeOper);
    finPeriodeOperCalendar.setTime(finPeriodeOper);
    merci d'avance.

    Cdt,

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Et quelle est la question?
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 86
    Points : 44
    Points
    44
    Par défaut
    désolé,j'étais pas clair,

    la question est que j'aimerais ajouter dans la premiere boucle une condition pour s'assurer que je parcoure tous les mois du jourOper entre debutPeriodeOper (date)et finPeriodeOper (date)

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Dans le code que tu donnes dans ton premier post, je ne vois pas la moindre boucle...
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  5. #5
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 86
    Points : 44
    Points
    44
    Par défaut
    exactement,j'ai pas de boucle mais j'aimerais l'inclure avec cette condition:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ((jourDeSemaineOper).equals(jourDeSemaineStat)
    							&& (jourOper.get(Calendar.DAY_OF_WEEK_IN_MONTH)) == (jourStat
    									.get(Calendar.DAY_OF_WEEK_IN_MONTH))
    simplement,j'aimerais que le mois associé au jourOper parcourt tous les mois entre DebutPeriodeOperCalendar et finPeriodeOperCalendar.

    Merci pour votre aide.

    Cdt,

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Pour tes conditions de boucle, tu peux utiliser les méthodes before() et after ...
    Pour "faire tourner" ta boucle utilises add ou roll ...

    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while(date1.before(date2){
      // ...
      calendar.add(Calendar.MONTH,1);
      date1 = calendar.getTime();
    }
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  7. #7
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 86
    Points : 44
    Points
    44
    Par défaut
    j'ai essayé votre proposition mais ça me donne pas le résultat attendu.merci

  8. #8
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par coquero Voir le message
    j'ai essayé votre proposition mais ça me donne pas le résultat attendu.merci
    Ce n'était pas une solution toute faite, simplement une piste ...
    Si tu veux de l'aide, il ne faut pas être avare en précisions.

    • Qu'as tu fais ?
    • Qu'est ce que le résultat attendu ?
    • qu'est ce que le résultat obtenu à la place ?


    Me semble être un minimum ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  9. #9
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 86
    Points : 44
    Points
    44
    Par défaut précisions
    bonjour,

    mon programme doit prendre des voyages d'une base de données statistiques et les mettre dans une BD opérationnelle mais doit respecter pas mal de choses:
    1.garder le même jour de départ du voyage
    2.le même classement du jour: si le train part le premier lundi ,dans ce cas là il faut le mettre le premier lundi dans la période opérationnelle(période dans laquelle on insère dans BD operationnelle).
    3.le même horaire de départ.

    jusqu'à maintenant,j'ai pu respecter le même jour et le même classement et le même horaire mais mon problème est que l'insertion se fait sur un seul mois dans la période opérationnelle et dés que j'ai des voyages qui ne sont pas insérés,j'aimerais forcer l'insertion sur tous les mois de la période opérationnelle.

    voici le code:
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
     
    	public List<IVoyage> remiseIdentiqueAvecBaseStatistique(ILieu origine,
    			ILieu destination, String clientOrigine, String clientDestination,
    			Date debutPeriode, Date finPeriode, Date debutPeriodeOper,
    			Date finPeriodeOper, int nbReel) throws ServiceException {
    		List<IVoyage> listVoyageReelle = null;
    		List<IVoyage> listeVoyagesAdmis = new ArrayList<IVoyage>();
     
    		Calendar jourStat = Calendar.getInstance();
     
    		if (extraireJourDate(debutPeriode.toString()).equals("MONDAY")) {
    			jourStat.setFirstDayOfWeek(Calendar.MONDAY);
    			jourStat.setFirstDayOfWeek(1);
    			jourStat.setMinimalDaysInFirstWeek(1);
    			System.out.println("lundi stat :" + jourStat.getFirstDayOfWeek());
    		} else {
    			if (extraireJourDate(debutPeriode.toString()).equals("TUESDAY")) {
    				jourStat.setFirstDayOfWeek(Calendar.TUESDAY);
    				jourStat.setFirstDayOfWeek(1);
    				jourStat.setMinimalDaysInFirstWeek(1);
    				System.out.println("mardi stat :"
    						+ jourStat.getFirstDayOfWeek());
    			} else {
    				if (extraireJourDate(debutPeriode.toString()).equals(
    						"WEDNESDAY")) {
    					jourStat.setFirstDayOfWeek(Calendar.WEDNESDAY);
    					jourStat.setFirstDayOfWeek(1);
    					jourStat.setMinimalDaysInFirstWeek(1);
    					System.out.println("mercredi stat :"
    							+ jourStat.getFirstDayOfWeek());
    				} else {
    					if (extraireJourDate(debutPeriode.toString()).equals(
    							"THURSADY")) {
    						jourStat.setFirstDayOfWeek(Calendar.THURSDAY);
    						jourStat.setFirstDayOfWeek(1);
    						jourStat.setMinimalDaysInFirstWeek(1);
    						System.out.println("jeudi stat:"
    								+ jourStat.getFirstDayOfWeek());
    					} else {
    						if (extraireJourDate(debutPeriode.toString()).equals(
    								"FRIDAY")) {
    							jourStat.setFirstDayOfWeek(Calendar.FRIDAY);
    							jourStat.setFirstDayOfWeek(1);
    							jourStat.setMinimalDaysInFirstWeek(1);
    							System.out.println("vendredi stat :"
    									+ jourStat.getFirstDayOfWeek());
    						}
    					}
    				}
    				if (extraireJourDate(debutPeriode.toString())
    						.equals("SATURDAY")) {
    					jourStat.setFirstDayOfWeek(Calendar.SATURDAY);
    					jourStat.setFirstDayOfWeek(1);
    					jourStat.setMinimalDaysInFirstWeek(1);
    					System.out.println("samedi stat :"
    							+ jourStat.getFirstDayOfWeek());
    				}
    			}
    			if (extraireJourDate(debutPeriode.toString()).equals("SUNDAY")) {
    				jourStat.setFirstDayOfWeek(Calendar.SUNDAY);
    				jourStat.setFirstDayOfWeek(1);
    				jourStat.setMinimalDaysInFirstWeek(1);
    				System.out.println("dimanche stat :"
    						+ jourStat.getFirstDayOfWeek());
    			}
    		}
    		Calendar jourOper = Calendar.getInstance();
    		if (extraireJourDate(debutPeriodeOper.toString()).equals("MONDAY")) {
    			jourOper.setFirstDayOfWeek(Calendar.MONDAY);
    			jourOper.setFirstDayOfWeek(1);
    			jourOper.setMinimalDaysInFirstWeek(1);
    			System.out.println("lundi oper :" + jourOper.getFirstDayOfWeek());
    		} else {
    			if (extraireJourDate(debutPeriodeOper.toString()).equals("TUESDAY")) {
    				jourOper.setFirstDayOfWeek(Calendar.TUESDAY);
    				jourOper.setFirstDayOfWeek(1);
    				jourOper.setMinimalDaysInFirstWeek(1);
    				System.out.println("mardi oper :"
    						+ jourOper.getFirstDayOfWeek());
    			} else {
    				if (extraireJourDate(debutPeriodeOper.toString()).equals(
    						"WEDNESDAY")) {
    					jourOper.setFirstDayOfWeek(Calendar.WEDNESDAY);
    					jourOper.setFirstDayOfWeek(1);
    					jourOper.setMinimalDaysInFirstWeek(1);
    					System.out.println("mercredi oper :"
    							+ jourOper.getFirstDayOfWeek());
    				} else {
    					if (extraireJourDate(debutPeriodeOper.toString()).equals(
    							"THURSADY")) {
    						jourOper.setFirstDayOfWeek(Calendar.THURSDAY);
    						jourOper.setFirstDayOfWeek(1);
    						jourOper.setMinimalDaysInFirstWeek(1);
    						System.out.println("jeudi oper :"
    								+ jourOper.getFirstDayOfWeek());
    					} else {
    						if (extraireJourDate(debutPeriodeOper.toString())
    								.equals("FRIDAY")) {
    							jourOper.setFirstDayOfWeek(Calendar.FRIDAY);
    							jourOper.setFirstDayOfWeek(1);
    							jourOper.setMinimalDaysInFirstWeek(1);
    							System.out.println("vendredi oper :"
    									+ jourOper.getFirstDayOfWeek());
    						}
    					}
    				}
    				if (extraireJourDate(debutPeriodeOper.toString()).equals(
    						"SATURDAY")) {
    					jourOper.setFirstDayOfWeek(Calendar.SATURDAY);
    					jourOper.setFirstDayOfWeek(1);
    					jourOper.setMinimalDaysInFirstWeek(1);
    					System.out.println("samedi oper :"
    							+ jourOper.getFirstDayOfWeek());
    				}
    			}
    			if (extraireJourDate(debutPeriodeOper.toString()).equals("SUNDAY")) {
    				jourOper.setFirstDayOfWeek(Calendar.SUNDAY);
    				jourOper.setFirstDayOfWeek(1);
    				jourOper.setMinimalDaysInFirstWeek(1);
    				System.out.println("dimanche oper :"
    						+ jourOper.getFirstDayOfWeek());
    			}
    		}
    		try {
    			daoFactory.startTransaction();
    			int nbExistantDansBD = daoFactory.getVoyageDao()
    					.findCountVoyagesOperationnelles(origine, destination,
    							clientOrigine, clientDestination, debutPeriodeOper,
    							finPeriodeOper, null, null);
    			String ligneId = "";
    			BigDecimal nbMois = daoFactory.getVoyageDao()
    					.findCountNbMoisEntreDeuxDates(debutPeriodeOper,
    							finPeriodeOper);
     
    			if (nbExistantDansBD == nbReel && nbExistantDansBD != 0) {
    				ligneId = daoFactory.getVoyageDao().findIdVoyageASupprimer(
    						origine, destination, clientOrigine, clientDestination,
    						debutPeriodeOper, finPeriodeOper, nbReel);
    				if (!ligneId.equals(""))
    					daoFactory.getVoyageDao().deleteVoyagesPrev(origine,
    							destination, clientOrigine, clientDestination,
    							debutPeriodeOper, finPeriodeOper, nbReel);
    			} else {
    				if (nbExistantDansBD < nbReel && nbExistantDansBD != 0) {
    					ligneId = daoFactory.getVoyageDao().findIdVoyageASupprimer(
    							origine, destination, clientOrigine,
    							clientDestination, debutPeriodeOper,
    							finPeriodeOper, nbExistantDansBD);
    					if (!ligneId.equals(""))
    						daoFactory.getVoyageDao().deleteVoyagesPrev(origine,
    								destination, clientOrigine, clientDestination,
    								debutPeriodeOper, finPeriodeOper,
    								nbExistantDansBD);
    				} else {
    					if (nbExistantDansBD > nbReel && nbExistantDansBD != 0) {
    						ligneId = daoFactory.getVoyageDao()
    								.findIdVoyageASupprimer(origine, destination,
    										clientOrigine, clientDestination,
    										debutPeriodeOper, finPeriodeOper,
    										nbReel);
    						if (!ligneId.equals(""))
    							daoFactory.getVoyageDao().deleteVoyagesPrev(
    									origine, destination, clientOrigine,
    									clientDestination, debutPeriodeOper,
    									finPeriodeOper, nbReel);
    					} else {
    						if (nbExistantDansBD == 0) {
    						}
    					}
    				}
    			}
     
    			ArrayList<ArrayList<Calendar>> listeCompleteJoursExact = calculNbJourDisponibles(
    					debutPeriodeOper, finPeriodeOper);
    			listVoyageReelle = daoFactory.getVoyageDao()
    					.remiseIdentiqueAvecBaseStatistique(origine, destination,
    							clientOrigine, clientDestination, debutPeriode,
    							finPeriode, nbReel);
    			for (IVoyage objetVoyage : listVoyageReelle) {
     
    				for (int i = 1; i <= 7; i++) {
     
    					if ((listeCompleteJoursExact.get(i) != null)
    							&& (listeCompleteJoursExact.get(i).size() != 0)) {
    						jourOper = calculNbJourDisponibles(debutPeriodeOper,
    								finPeriodeOper).get(i)
    								.get(Calendar.DAY_OF_WEEK);
    					}
    					jourStat.setTime(objetVoyage.getDateHeureDepart());
    					String jourDeSemaineOper = extraireJourDate(jourOper
    							.getTime().toString());
    					String jourDeSemaineStat = extraireJourDate(jourStat
    							.getTime().toString());
    					Calendar debutPeriodeOperCalendar = Calendar.getInstance();
    					Calendar finPeriodeOperCalendar = Calendar.getInstance();
    					debutPeriodeOperCalendar.setTime(debutPeriodeOper);
    					finPeriodeOperCalendar.setTime(finPeriodeOper);
    					if ((jourDeSemaineOper).equals(jourDeSemaineStat)
    							&& (jourOper.get(Calendar.DAY_OF_WEEK_IN_MONTH)) == (jourStat
    									.get(Calendar.DAY_OF_WEEK_IN_MONTH))
    							&& (nbMois.compareTo(new BigDecimal(1)) != 0)) {
    						jourOper.set(Calendar.HOUR,
    								jourStat.get(Calendar.HOUR) + 12);
    						jourOper.set(Calendar.MINUTE, jourStat
    								.get(Calendar.MINUTE));
    						jourOper.set(Calendar.SECOND, jourStat
    								.get(Calendar.SECOND));
    						System.out.println("couple jourStat,jourOper" + "("
    								+ jourStat.getTime() + "," + jourOper.getTime()
    								+ ")");
    						objetVoyage.setDateHeureDepart(jourOper.getTime());
    						objetVoyage.setEstAnnule(0);
    						objetVoyage.setEstPrevision(1);
    						listeVoyagesAdmis.add(objetVoyage);
    						System.out.println("voyage accepté est:"
    								+ objetVoyage.getIdVoyage());
    					}
    				}
    			}
    			for (int k = 0; k < listeVoyagesAdmis.size(); k++) {
    				if (listeVoyagesAdmis.get(k) != null) {
    					daoFactory.getVoyageDao().insertTest(
    							listeVoyagesAdmis.get(k));
    					System.out.println("ce voyage vient d'être inséré:"
    							+ listeVoyagesAdmis.get(k).getIdVoyage());
    					nombreInsertionIdentique++;
    				}
    			}
     
    			if (nombreInsertionIdentique < nbReel) {
    				System.out
    						.println("Attention :nombreInsertionIdentique < nbReel :"
    								+ nombreInsertionIdentique);
     
    			}
    			if (nombreInsertionIdentique > nbReel) {
    				System.out
    						.println("Attention :nombreInsertionIdentique > nbReel : "
    								+ nombreInsertionIdentique);
    			}
    			if (nombreInsertionIdentique == nbReel) {
    				System.out
    						.println("Bien Réussi :nombreInsertionIdentique = nbReel :"
    								+ nombreInsertionIdentique);
    			}
    			daoFactory.commitTransaction();
    		} catch (DaoException e) {
    			throw new ServiceException(e);
    		} finally {
    			try {
     
    				daoFactory.endTransaction();
    			} catch (DaoException e) {
    				throw new ServiceException(e);
    			}
    		}
    		return listeVoyagesAdmis;
    	}

    je m'exuse pour cette longueur mais j'ai essayé d'être le plus précis possible,merci pour vos propositions.

    Cdt,

Discussions similaires

  1. boucle sur des noms de répertoires
    Par machmalabala dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 29/08/2007, 11h34
  2. Boucle sur des lignes et colonnes
    Par Livet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/08/2007, 19h45
  3. boucle sur des contrôles
    Par xawax34 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/05/2007, 19h06
  4. Boucle sur des boutons radios
    Par jmarey dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/05/2006, 11h03
  5. [FLASH MX2004] Boucle sur des clips est-ce possible ?
    Par vbcasimir dans le forum Flash
    Réponses: 4
    Dernier message: 09/02/2006, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo