Subversion Repositories eFlore/Applications.del

Rev

Rev 1393 | Rev 1543 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1393 Rev 1531
1
package org.tela_botanica.del.client.composants.metadonnees;
1
package org.tela_botanica.del.client.composants.metadonnees;
2
 
-
 
3
import java.text.ParseException;
-
 
4
import java.text.SimpleDateFormat;
-
 
5
import java.util.Date;
2
 
6
import org.tela_botanica.del.client.cache.CacheClient;
3
import org.tela_botanica.del.client.cache.CacheClient;
7
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
4
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
8
import org.tela_botanica.del.client.config.Config;
5
import org.tela_botanica.del.client.config.Config;
9
import org.tela_botanica.del.client.gestionhistorique.GestionnaireHistorique;
-
 
10
import org.tela_botanica.del.client.modeles.InformationsRecherche;
6
import org.tela_botanica.del.client.modeles.InformationsRecherche;
11
import org.tela_botanica.del.client.modeles.ModeRecherche;
7
import org.tela_botanica.del.client.modeles.ModeRecherche;
12
import org.tela_botanica.del.client.modeles.Observation;
8
import org.tela_botanica.del.client.modeles.Observation;
13
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
9
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
14
import org.tela_botanica.del.client.navigation.evenement.detailsimage.EvenementRechercheImage;
10
import org.tela_botanica.del.client.navigation.evenement.detailsimage.EvenementRechercheImage;
15
import org.tela_botanica.del.client.navigation.evenement.rechercheobservation.EvenementRechercheObservation;
11
import org.tela_botanica.del.client.navigation.evenement.rechercheobservation.EvenementRechercheObservation;
16
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
-
 
17
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
12
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
18
 
13
 
19
import com.google.gwt.event.dom.client.ClickEvent;
14
import com.google.gwt.event.dom.client.ClickEvent;
20
import com.google.gwt.event.dom.client.ClickHandler;
15
import com.google.gwt.event.dom.client.ClickHandler;
21
import com.google.gwt.event.dom.client.HasClickHandlers;
16
import com.google.gwt.event.dom.client.HasClickHandlers;
22
import com.google.gwt.i18n.client.DateTimeFormat;
17
import com.google.gwt.i18n.client.DateTimeFormat;
23
import com.google.gwt.user.client.History;
18
import com.google.gwt.user.client.History;
24
import com.google.gwt.user.client.Window;
19
import com.google.gwt.user.client.Window;
25
import com.google.gwt.user.client.ui.HasText;
20
import com.google.gwt.user.client.ui.HasText;
26
import com.google.gwt.user.client.ui.HasWidgets;
21
import com.google.gwt.user.client.ui.HasWidgets;
27
import com.google.gwt.user.client.ui.IsWidget;
22
import com.google.gwt.user.client.ui.IsWidget;
28
 
23
 
29
public class MetadonneesPresenteur extends Presenteur {
24
public class MetadonneesPresenteur extends Presenteur {
30
 
25
 
31
	public abstract interface Vue extends IsWidget {
26
	public abstract interface Vue extends IsWidget {
32
		public HasText getNomRetenu();
27
		public HasText getNomRetenu();
33
 
28
 
34
		public HasClickHandlers getLienNomRetenu();
29
		public HasClickHandlers getLienNomRetenu();
35
 
30
 
36
		public HasText getNomCommun();
31
		public HasText getNomCommun();
37
 
32
 
38
		public HasText getFamille();
33
		public HasText getFamille();
39
 
34
 
40
		public HasText getLocalite();
35
		public HasText getLocalite();
41
 
36
 
42
		public HasText getLieuDit();
37
		public HasText getLieuDit();
43
 
38
 
44
		public HasText getMilieu();
39
		public HasText getMilieu();
45
 
40
 
46
		public HasText getCommentaire();
41
		public HasText getCommentaire();
47
 
42
 
48
		public HasText getAuteur();
43
		public HasText getAuteur();
49
 
44
 
50
		public HasText getDateTransmission();
45
		public HasText getDateTransmission();
51
 
46
 
52
		public HasText getMotsClefs();
47
		public HasText getMotsClefs();
53
 
48
 
54
		public HasText getNumNomenclatural();
49
		public HasText getNumNomenclatural();
55
 
50
 
56
		public HasText getDateReleve();
51
		public HasText getDateReleve();
57
 
52
 
58
		public HasClickHandlers getLienFamille();
53
		public HasClickHandlers getLienFamille();
59
 
54
 
60
		public HasClickHandlers getLienAuteur();
55
		public HasClickHandlers getLienAuteur();
61
 
56
 
62
		public HasClickHandlers getLienDateTransmission();
57
		public HasClickHandlers getLienDateTransmission();
63
 
58
 
64
		public HasClickHandlers getLienDateReleve();
59
		public HasClickHandlers getLienDateReleve();
65
 
60
 
66
		public HasClickHandlers getLienLocalite();
61
		public HasClickHandlers getLienLocalite();
67
 
62
 
68
		public HasClickHandlers getLienMotsClefs();
63
		public HasClickHandlers getLienMotsClefs();
69
 
64
 
70
		public HasClickHandlers getLienNumNomenclatural();
65
		public HasClickHandlers getLienNumNomenclatural();
71
 
66
 
72
		public HasClickHandlers getLienNomCommun();
67
		public HasClickHandlers getLienNomCommun();
73
 
68
 
74
		public HasClickHandlers getLienMilieu();
69
		public HasClickHandlers getLienMilieu();
75
 
70
 
76
		public HasClickHandlers getLienCommentaire();
71
		public HasClickHandlers getLienCommentaire();
77
		
72
		
78
		public void setStation(String station) ;
73
		public void setStation(String station) ;
79
		
74
		
80
		public void masquerChampsVides();
75
		public void masquerChampsVides();
81
		
76
		
82
		public void activerLiens();
77
		public void activerLiens();
83
		
78
		
84
		public void activerLienAuteur();
79
		public void activerLienAuteur();
-
 
80
		
-
 
81
		public void activerLienNomRetenu();
85
		
82
		
86
		public void setLienIdentiplante(String id);
83
		public void setLienIdentiplante(String id);
87
 
84
 
88
		void desactiverLienAuteur();
85
		void desactiverLienAuteur();
89
 
86
 
90
		public HasText getReferentiel();
87
		public HasText getReferentiel();
91
	}
88
	}
92
 
89
 
93
	private Vue vue;
90
	private Vue vue;
94
	private Observation observation;
91
	private Observation observation;
95
	private ModeRecherche modeRecherche;
92
	private ModeRecherche modeRecherche;
96
	private boolean avecLiens;
93
	private boolean avecLiens;
97
	
94
	
98
	public MetadonneesPresenteur(Vue vue, Observation observation, ModeRecherche modeRecherche, boolean avecLiens) {
95
	public MetadonneesPresenteur(Vue vue, Observation observation, ModeRecherche modeRecherche, boolean avecLiens) {
99
		this.vue = vue;
96
		this.vue = vue;
100
		this.modeRecherche = modeRecherche;
97
		this.modeRecherche = modeRecherche;
101
		setObservation(observation);
98
		setObservation(observation);
102
		this.avecLiens = avecLiens;
99
		this.avecLiens = avecLiens;
103
	}
100
	}
104
 
101
 
105
	public void setObservation(Observation observation) {
102
	public void setObservation(Observation observation) {
106
		this.observation = observation;
103
		this.observation = observation;
107
	}
104
	}
108
 
105
 
109
	public void chargerMetaDonnees() {
106
	public void chargerMetaDonnees() {
110
		vue.getNomRetenu().setText(observation.getNomRetenu());
107
		vue.getNomRetenu().setText(observation.getNomRetenu());
111
		vue.getNomCommun().setText(observation.getNomCommun());
108
		vue.getNomCommun().setText(observation.getNomCommun());
112
		vue.getReferentiel().setText(observation.getReferentiel());
109
		vue.getReferentiel().setText(observation.getReferentiel());
113
		vue.getFamille().setText(observation.getFamille());
110
		vue.getFamille().setText(observation.getFamille());
114
		vue.getLocalite().setText(observation.getLocaliteAvecIdFormatee());
111
		vue.getLocalite().setText(observation.getLocaliteAvecIdFormatee());
115
		vue.getLieuDit().setText(observation.getLieuDit());
112
		vue.getLieuDit().setText(observation.getLieuDit());
116
		vue.setStation(observation.getStation());
113
		vue.setStation(observation.getStation());
117
		vue.getMilieu().setText(observation.getMilieu());
114
		vue.getMilieu().setText(observation.getMilieu());
118
		vue.getCommentaire().setText(observation.getCommentaire());
115
		vue.getCommentaire().setText(observation.getCommentaire());
119
		vue.getAuteur().setText(observation.getAuteur());
116
		vue.getAuteur().setText(observation.getAuteur());
120
		
117
		
121
		vue.getDateTransmission().setText(formaterDate(observation.getDateTransmission()));
118
		vue.getDateTransmission().setText(formaterDate(observation.getDateTransmission()));
122
		
119
		
123
		vue.getDateReleve().setText(formaterDate(observation.getDateReleve()));
120
		vue.getDateReleve().setText(formaterDate(observation.getDateReleve()));
124
		vue.masquerChampsVides();
121
		vue.masquerChampsVides();
125
	}
122
	}
126
 
123
 
127
	public String formaterDate(String dateNonFormatee) {
124
	public String formaterDate(String dateNonFormatee) {
128
		try {
125
		try {
129
			String dateFormatee =  DateTimeFormat.getFormat("dd/MM/yyyy").format(UtilitairesServiceResultat.parserDateObservation(dateNonFormatee));
126
			String dateFormatee =  DateTimeFormat.getFormat("dd/MM/yyyy").format(UtilitairesServiceResultat.parserDateObservation(dateNonFormatee));
130
			dateFormatee = (dateFormatee == "01/01/1970") ? "???" : dateFormatee ;
127
			dateFormatee = (dateFormatee == "01/01/1970") ? "???" : dateFormatee ;
131
			return dateFormatee;
128
			return dateFormatee;
132
		} catch (IllegalArgumentException e) {
129
		} catch (IllegalArgumentException e) {
133
			return "";
130
			return "";
134
		}
131
		}
135
	}
132
	}
136
	
133
	
137
	@Override
134
	@Override
138
	public void go(HasWidgets composite) {
135
	public void go(HasWidgets composite) {
139
		composite.add(vue.asWidget());
136
		composite.add(vue.asWidget());
140
		chargerMetaDonnees();
137
		chargerMetaDonnees();
141
		//if (this.avecLiens) {
138
		//if (this.avecLiens) {
142
			gererEvenements();
139
			gererEvenements();
143
		//}
140
		//}
144
	}
141
	}
145
 
142
 
146
	@Override
143
	@Override
147
	protected void gererEvenements() {
144
	protected void gererEvenements() {
148
		
145
		
149
		if (this.avecLiens) {
146
		if (this.avecLiens) {
150
			if(!observation.getIdAuteur().equals("0")) {
147
			if(!observation.getIdAuteur().equals("0")) {
151
				vue.getLienAuteur().addClickHandler(new ClickHandler() {
148
				vue.getLienAuteur().addClickHandler(new ClickHandler() {
152
		
149
		
153
					@Override
150
					@Override
154
					public void onClick(ClickEvent arg0) {
151
					public void onClick(ClickEvent arg0) {
155
						
152
						
156
						InformationsRecherche informationsRecherche = new InformationsRecherche();
153
						InformationsRecherche informationsRecherche = new InformationsRecherche();
157
						informationsRecherche.setAuteur(vue.getAuteur().getText());
154
						informationsRecherche.setAuteur(vue.getAuteur().getText());
158
						setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
155
						setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
159
						History.fireCurrentHistoryState();
156
						History.fireCurrentHistoryState();
160
					}
157
					}
161
				});
158
				});
162
			}
159
			}
163
		
160
		
164
			vue.getLienDateReleve().addClickHandler(new ClickHandler() {
161
			vue.getLienDateReleve().addClickHandler(new ClickHandler() {
165
	
162
	
166
				@Override
163
				@Override
167
				public void onClick(ClickEvent arg0) {
164
				public void onClick(ClickEvent arg0) {
168
					InformationsRecherche informationsRecherche = new InformationsRecherche();
165
					InformationsRecherche informationsRecherche = new InformationsRecherche();
169
					informationsRecherche.setDate(vue.getDateReleve().getText());
166
					informationsRecherche.setDate(vue.getDateReleve().getText());
170
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
167
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
171
					History.fireCurrentHistoryState();
168
					History.fireCurrentHistoryState();
172
				}
169
				}
173
			});
170
			});
174
	
171
	
175
			vue.getLienDateTransmission().addClickHandler(new ClickHandler() {
172
			vue.getLienDateTransmission().addClickHandler(new ClickHandler() {
176
	
173
	
177
				@Override
174
				@Override
178
				public void onClick(ClickEvent arg0) {
175
				public void onClick(ClickEvent arg0) {
179
					InformationsRecherche informationsRecherche = new InformationsRecherche();
176
					InformationsRecherche informationsRecherche = new InformationsRecherche();
180
					informationsRecherche.setDate(vue.getDateReleve().getText());
177
					informationsRecherche.setDate(vue.getDateReleve().getText());
181
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
178
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
182
					History.fireCurrentHistoryState();
179
					History.fireCurrentHistoryState();
183
				}
180
				}
184
			});
181
			});
185
	
182
	
186
			vue.getLienFamille().addClickHandler(new ClickHandler() {
183
			vue.getLienFamille().addClickHandler(new ClickHandler() {
187
	
184
	
188
				@Override
185
				@Override
189
				public void onClick(ClickEvent arg0) {
186
				public void onClick(ClickEvent arg0) {
190
					InformationsRecherche informationsRecherche = new InformationsRecherche();
187
					InformationsRecherche informationsRecherche = new InformationsRecherche();
191
					informationsRecherche.setFamille(vue.getFamille().getText());
188
					informationsRecherche.setFamille(vue.getFamille().getText());
192
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
189
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
193
					History.fireCurrentHistoryState();
190
					History.fireCurrentHistoryState();
194
				}
191
				}
195
			});
192
			});
196
	
193
	
197
			vue.getLienLocalite().addClickHandler(new ClickHandler() {
194
			vue.getLienLocalite().addClickHandler(new ClickHandler() {
198
	
195
	
199
				@Override
196
				@Override
200
				public void onClick(ClickEvent arg0) {
197
				public void onClick(ClickEvent arg0) {
201
					InformationsRecherche informationsRecherche = new InformationsRecherche();
198
					InformationsRecherche informationsRecherche = new InformationsRecherche();
202
					informationsRecherche.setCommune(vue.getLocalite().getText());
199
					informationsRecherche.setCommune(vue.getLocalite().getText());
203
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
200
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
204
					History.fireCurrentHistoryState();
201
					History.fireCurrentHistoryState();
205
				}
202
				}
206
			});
203
			});
207
	
204
	
208
			vue.getLienMotsClefs().addClickHandler(new ClickHandler() {
205
			vue.getLienMotsClefs().addClickHandler(new ClickHandler() {
209
	
206
	
210
				@Override
207
				@Override
211
				public void onClick(ClickEvent arg0) {
208
				public void onClick(ClickEvent arg0) {
212
					InformationsRecherche informationsRecherche = new InformationsRecherche();
209
					InformationsRecherche informationsRecherche = new InformationsRecherche();
213
					informationsRecherche.setMotClef(vue.getMotsClefs().getText());
210
					informationsRecherche.setMotClef(vue.getMotsClefs().getText());
214
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
211
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
215
					History.fireCurrentHistoryState();
212
					History.fireCurrentHistoryState();
216
				}
213
				}
217
			});
214
			});
218
	
215
	
219
			vue.getLienNomCommun().addClickHandler(new ClickHandler() {
216
			vue.getLienNomCommun().addClickHandler(new ClickHandler() {
220
	
217
	
221
				@Override
218
				@Override
222
				public void onClick(ClickEvent arg0) {
219
				public void onClick(ClickEvent arg0) {
223
					InformationsRecherche informationsRecherche = new InformationsRecherche();
220
					InformationsRecherche informationsRecherche = new InformationsRecherche();
224
					informationsRecherche.setRechercheLibre(vue.getNomCommun().getText());
221
					informationsRecherche.setRechercheLibre(vue.getNomCommun().getText());
225
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
222
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
226
					History.fireCurrentHistoryState();
223
					History.fireCurrentHistoryState();
227
				}
224
				}
228
			});
225
			});
229
	
226
	
230
			vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
227
			vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
231
	
228
	
232
				@Override
229
				@Override
233
				public void onClick(ClickEvent arg0) {
230
				public void onClick(ClickEvent arg0) {
234
					InformationsRecherche informationsRecherche = new InformationsRecherche();
231
					InformationsRecherche informationsRecherche = new InformationsRecherche();
235
					informationsRecherche.setRechercheLibre(vue.getNomRetenu().getText());
232
					informationsRecherche.setRechercheLibre(vue.getNomRetenu().getText());
236
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
233
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
237
					History.fireCurrentHistoryState();
234
					History.fireCurrentHistoryState();
238
				}
235
				}
239
			});
236
			});
240
	
237
	
241
			vue.getLienMilieu().addClickHandler(new ClickHandler() {
238
			vue.getLienMilieu().addClickHandler(new ClickHandler() {
242
	
239
	
243
				@Override
240
				@Override
244
				public void onClick(ClickEvent arg0) {
241
				public void onClick(ClickEvent arg0) {
245
					InformationsRecherche informationsRecherche = new InformationsRecherche();
242
					InformationsRecherche informationsRecherche = new InformationsRecherche();
246
					informationsRecherche.setRechercheLibre(vue.getMilieu().getText());
243
					informationsRecherche.setRechercheLibre(vue.getMilieu().getText());
247
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
244
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
248
					History.fireCurrentHistoryState();
245
					History.fireCurrentHistoryState();
249
				}
246
				}
250
			});
247
			});
251
	
248
	
252
			vue.getLienCommentaire().addClickHandler(new ClickHandler() {
249
			vue.getLienCommentaire().addClickHandler(new ClickHandler() {
253
	
250
	
254
				@Override
251
				@Override
255
				public void onClick(ClickEvent arg0) {
252
				public void onClick(ClickEvent arg0) {
256
					InformationsRecherche informationsRecherche = new InformationsRecherche();
253
					InformationsRecherche informationsRecherche = new InformationsRecherche();
257
					informationsRecherche.setRechercheLibre(vue.getCommentaire().getText());
254
					informationsRecherche.setRechercheLibre(vue.getCommentaire().getText());
258
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
255
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
259
					History.fireCurrentHistoryState();
256
					History.fireCurrentHistoryState();
260
				}
257
				}
261
			});
258
			});
262
	
259
 
263
			final Observation monobservation = this.observation;
-
 
264
			vue.setLienIdentiplante(this.observation.getId());
260
			vue.setLienIdentiplante(this.observation.getId());
265
			vue.activerLiens();
261
			vue.activerLiens();
266
			
262
			
267
			if(observation.getIdAuteur().equals("0")) {
263
			if(observation.getIdAuteur().equals("0")) {
268
				vue.desactiverLienAuteur();
264
				vue.desactiverLienAuteur();
269
			}
265
			}
270
		} else {
266
		} else {
271
			if(!observation.getIdAuteur().equals("0")) {
267
			if (! observation.getIdAuteur().equals("0")) {
272
				vue.getLienAuteur().addClickHandler(new ClickHandler() {
268
				vue.getLienAuteur().addClickHandler(new ClickHandler() {
273
					@Override
269
					@Override
274
					public void onClick(ClickEvent event) {
270
					public void onClick(ClickEvent event) {
275
						Config config = new Config();
271
						Config config = new Config();
276
						Window.open(config.getUrl("annuaire") + observation.getIdAuteur(), "Consultation de l'annuaire", null);
272
						Window.open(config.getUrl("annuaire") + observation.getIdAuteur(), "Consultation de l'annuaire", null);
277
					}
273
					}
278
				});
274
				});
279
				
275
				
280
				vue.activerLienAuteur();
276
				vue.activerLienAuteur();
281
			}
277
			}
-
 
278
 
-
 
279
			if (observation.getNumNomenclatural() != null && ! observation.getNumNomenclatural().equals("0") && ! observation.getNumNomenclatural().equals("")) {
-
 
280
				vue.activerLienNomRetenu();
-
 
281
				vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
-
 
282
					@Override
-
 
283
					public void onClick(ClickEvent arg0) {
-
 
284
						Config config = new Config();
-
 
285
						String efloreUrlFicheTpl = config.getUrl("efloreTaxon");
-
 
286
						String efloreUrlFiche = efloreUrlFicheTpl.replaceAll("referentiel-nn-num_nom", observation.getReferentiel().substring(0,5) + "-nn-" + observation.getNumNomenclatural());
-
 
287
						Window.open(efloreUrlFiche, "Fiche eflore", null);
-
 
288
					}
-
 
289
				});
-
 
290
			}
282
		}
291
		}
283
	}
292
	}
284
 
293
 
285
	public void setInfosRechercheEnCacheEtLancerEvenement(InformationsRecherche informationsRecherche) {
294
	public void setInfosRechercheEnCacheEtLancerEvenement(InformationsRecherche informationsRecherche) {
286
 
295
 
287
		switch (modeRecherche) {
296
		switch (modeRecherche) {
288
		case MODE_IMAGE:
297
		case MODE_IMAGE:
289
			CacheClient.getInstance().setPageCouranteRechercheImages(1);
298
			CacheClient.getInstance().setPageCouranteRechercheImages(1);
290
			CacheClient.getInstance().setInformationsRechercheImage(informationsRecherche);
299
			CacheClient.getInstance().setInformationsRechercheImage(informationsRecherche);
291
			BusEvenementiel.getInstance().fireEvent(new EvenementRechercheImage());
300
			BusEvenementiel.getInstance().fireEvent(new EvenementRechercheImage());
292
			break;
301
			break;
293
 
302
 
294
		case MODE_OBSERVATION:
303
		case MODE_OBSERVATION:
295
			CacheClient.getInstance().setPageCouranteRechercheObservations(1);
304
			CacheClient.getInstance().setPageCouranteRechercheObservations(1);
296
			CacheClient.getInstance().setInformationsRechercheObservation(informationsRecherche);
305
			CacheClient.getInstance().setInformationsRechercheObservation(informationsRecherche);
297
			BusEvenementiel.getInstance().fireEvent(new EvenementRechercheObservation());
306
			BusEvenementiel.getInstance().fireEvent(new EvenementRechercheObservation());
298
 
307
 
299
		default:
308
		default:
300
			break;
309
			break;
301
		}
310
		}
302
 
311
 
303
	}
312
	}
304
}
313
}