From 318121c44100a6d09f505b924b26022f077a9ac7 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 29 Jan 2013 00:37:12 +0100 Subject: [PATCH 1/3] added hamcrest as bundle dependency to gwt.ui.test to make maven build succeed --- .../bin/freg_html_export_sample.html | 23 ------------------- .../META-INF/MANIFEST.MF | 3 ++- 2 files changed, 2 insertions(+), 24 deletions(-) delete mode 100755 java/com.sap.sailing.freg.resultimport.test/bin/freg_html_export_sample.html diff --git a/java/com.sap.sailing.freg.resultimport.test/bin/freg_html_export_sample.html b/java/com.sap.sailing.freg.resultimport.test/bin/freg_html_export_sample.html deleted file mode 100755 index ec635ea5d62..00000000000 --- a/java/com.sap.sailing.freg.resultimport.test/bin/freg_html_export_sample.html +++ /dev/null @@ -1,23 +0,0 @@ - - -Coupe Nationale 5O5 - - - - - - -

Coupe Nationale 5O5

Societe des Regates Rochelaises
08/07/2011 au 11/07/2011

Résultat du Lundi 11 Juillet 2011 à 13.30 h.

Groupe COUPE NATIONALE 5O5 après 8 courses (7 retenues) (75 inscrits) -
- -
-
(Cliquez sur les noms soulignés pour accéder à la fiche du coureur)

RgsIdentConcurrentsP RetP totc.1c.2c.3c.4c.5c.6c.7c.8Club / Pays
1

GER 9070

BOGACKI Morten
 JESS Holger 

9.00 12.003
3.00
1
1.00
1
1.00
1
1.00
1
1.00
1
1.00
3
3.00
1
1.00

KYC/DYC

2

AUS 9036

QUIRK Michael
 REFFOLD Simon 

20.00 44.002
2.00
3
3.00
3
3.00
24
24.00
4
4.00
2
2.00
2
2.00
4
4.00

RPEYC

3

FRA 9067

LOYAL Bertrand
 NEVO Laurent 

27.00 41.004
4.00
2
2.00
14
14.00
2
2.00
5
5.00
4
4.00
7
7.00
3
3.00

C N MESCHERS
S R ROCHELAISES

4

GBR 9032

PINNELL Ian
 PUINELL Ian 

44.00 58.001
1.00
4
4.00
7
7.00
8
8.00
3
3.00
14
14.00
14
14.00
7
7.00

HISC

5

FRA 8902

BOITE Philippe
 THOMAS Benjamin 

52.00 67.0012
12.00
5
5.00
6
6.00
9
9.00
9
9.00
5
5.00
6
6.00
15
15.00

C V ST QUENTIN
S R HAVRE

6

SUI 8543

BART Cedric
 GROB Laurent 

55.00 74.0010
10.00
6
6.00
2
2.00
19
19.00
10
10.00
12
12.00
5
5.00
10
10.00

CNB

7

GBR 9012

SMITH Andy
 NEEDHAM Tim 

60.00 80.005
5.00
8
8.00
20
20.00
18
18.00
8
8.00
3
3.00
1
1.00
17
17.00

NOTTS COUNTY SC

8

GER 8975

HOLZAPFEL Alexander
 WORM Stefan 

60.00 74.0011
11.00
7
7.00
9
9.00
5
5.00
13
13.00
7
7.00
8
8.00
14
14.00

ALLEMAGNE

9

GBR 9057

LEWNS Chris
 PARSONS Oan 

64.00 140.009
9.00
9
9.00
10
10.00
4
4.00
14
14.00
9
9.00
9
9.00
DNF
76.00

WHITSTABLE

10

DEN 8958

HOFFMANNBUHL Nikolas
 BUHL Henrik 

72.00 102.007
7.00
DPI
30.00
5
5.00
13
13.00
7
7.00
8
8.00
24
24.00
8
8.00

STETTEN BACHKLUB

11

SUI 8569

DETSCHEN Rene
 HOLLINGER Lionel 

74.00 94.006
6.00
16
16.00
19
19.00
20
20.00
6
6.00
6
6.00
10
10.00
11
11.00

CNB

12

FRA 8900

GUBRI Serge
 DI PEDE Thibault 

96.00 125.0018
18.00
13
13.00
4
4.00
7
7.00
26
26.00
29
29.00
19
19.00
9
9.00

C V SEINE-PORT
C V SEINE-PORT

13

GBR 8935

RUS 
 LAFORTUNE Geraud 

97.00 116.0015
15.00
12
12.00
16
16.00
14
14.00
12
12.00
15
15.00
13
13.00
19
19.00

GRANDE-BRETAGNE
C V SEINE-PORT

14

FRA 8752

MARTIN Nicolas
 LAFORTUNE Julien 

98.00 132.0034
34.00
17
17.00
8
8.00
3
3.00
23
23.00
24
24.00
21
21.00
2
2.00

C V SEINE-PORT
C V SEINE-PORT

15

FRA 8515

CROCE Nicolas
 FAUCHEUX Florian 

98.00 124.0014
14.00
11
11.00
22
22.00
17
17.00
11
11.00
11
11.00
12
12.00
26
26.00

C N CANET PERPIGNAN
C N CANET PERPIGNAN

16

SUI 8954

STAUFFER Florian
 JACOT Philippe 

118.00 194.00DNF
76.00
DNF
76.00
11
11.00
10
10.00
2
2.00
10
10.00
4
4.00
5
5.00

CLUB DE VOILE DE NEUCHATEL

17

FRA 8948

GUILLOU Nicolas
 FEREC Alain 

144.00 220.008
8.00
14
14.00
32
32.00
40
40.00
21
21.00
18
18.00
11
11.00
DNC
76.00

S N P H
S N P H

18

FRA 8870

SILVESTRE Christian
 AUBERGER Nicolas 

144.00 193.0019
19.00
34
34.00
12
12.00
22
22.00
17
17.00
19
19.00
49
49.00
21
21.00

Y C ILE DE FRANCE
Y C Grenoble Chara

19

FRA 9044

DEVAUX Mathieu
 DUBUC Philippe 

146.00 180.0024
24.00
22
22.00
25
25.00
6
6.00
22
22.00
34
34.00
29
29.00
18
18.00

S R FECAMP
S R FECAMP

20

FRA 8869

BOYER Etienne
 BOYER Emmanuel 

147.00 182.0020
20.00
27
27.00
29
29.00
33
33.00
16
16.00
16
16.00
35
35.00
6
6.00

C V BORDEAUX
C V BORDEAUX

21

GBR 8881

DEANE Roger
 TURNER Dave 

147.00 188.0017
17.00
41
41.00
13
13.00
25
25.00
15
15.00
37
37.00
15
15.00
25
25.00

ROCK SC

22

FRA 8716

MARTIN Aline
 TOUPET Fabrice 

150.00 226.00DNF
76.00
10
10.00
15
15.00
11
11.00
19
19.00
28
28.00
51
51.00
16
16.00

C V SEINE-PORT
C V ST QUENTIN

23

GBR 8905

TURNBULL Stuart
 LUNN Jason 

151.00 196.0035
35.00
21
21.00
17
17.00
45
45.00
20
20.00
17
17.00
17
17.00
24
24.00

BURTON SAILING CLUB

24

FRA 8961

VIBERT Marc
 LAPEYRE Bertrand 

163.00 199.0021
21.00
19
19.00
28
28.00
15
15.00
36
36.00
30
30.00
20
20.00
30
30.00

C.V.M.L
S N P H

25

GER 9026

GUY Hubert
 DETAPPE Xavier 

165.00 241.0013
13.00
DPI
38.00
RDG
26.00
RDG
26.00
18
18.00
13
13.00
DNF
76.00
31
31.00

ABYC
A S CHEMINOTS ROCH

26

FRA 8909

DOERENBECHER Francis
 WOLFF Philippe 

170.00 207.0022
22.00
25
25.00
35
35.00
37
37.00
28
28.00
20
20.00
27
27.00
13
13.00

C N DE SCIEZ
AC ALSACE LORRAINE

27

SUI 9060

HOURIET Catherine
 DONZE Gil 

181.00 238.0032
32.00
35
35.00
23
23.00
12
12.00
35
35.00
57
57.00
32
32.00
12
12.00

YCG

28

FRA 8908

FOURCADET Amaury
 FERTIN Vincent 

182.00 215.0030
30.00
28
28.00
18
18.00
32
32.00
33
33.00
25
25.00
22
22.00
27
27.00

BLAYE NAUTIQUE
Y C C

29

FRA 9024

GACHET Claude
 VALERY Kleber 

185.00 221.0036
36.00
20
20.00
21
21.00
16
16.00
29
29.00
35
35.00
31
31.00
33
33.00

Y C Grenoble Chara
Y C Grenoble Chara

30

FRA 9010

LAFORTUNE Baptiste
 CARVALLO Gilles 

188.00 246.0028
28.00
18
18.00
31
31.00
58
58.00
24
24.00
26
26.00
26
26.00
35
35.00

C V SEINE-PORT
C N HAUTE SEINE

31

FRA 9068

DE LISLE Francois
 BRILLAUD Herve 

189.00 234.0045
45.00
26
26.00
44
44.00
29
29.00
27
27.00
22
22.00
18
18.00
23
23.00

C N FERRET
C N FERRET

32

BEL 9066

DE PAUW Geert
 JOURQUIN Koen 

195.00 246.0016
16.00
31
31.00
41
41.00
51
51.00
25
25.00
31
31.00
23
23.00
28
28.00

BELGIQUE

33

GBR 8925

WEDGE Martin
 ALLEN Scott 

209.00 285.0023
23.00
24
24.00
30
30.00
36
36.00
32
32.00
23
23.00
DNF
76.00
41
41.00

RTYC

34

GBR 8749

MILTON Alastair
 MILTON Laurence 

213.00 265.0031
31.00
42
42.00
39
39.00
21
21.00
43
43.00
21
21.00
16
16.00
52
52.00

HELENSBURGH SC

35

FRA 7941

BRENET Veronique
 PETER Jean-pierre 

217.00 293.0025
25.00
30
30.00
DSQ
76.00
23
23.00
37
37.00
40
40.00
42
42.00
20
20.00

AC ALSACE LORRAINE
AC ALSACE LORRAINE

36

FRA 8729

TOSELLO Alain
 NIDDAM Yves 

224.00 269.0029
29.00
29
29.00
38
38.00
41
41.00
30
30.00
45
45.00
28
28.00
29
29.00

LES VOILES D ANTIBES
Y C BEAULIEU

37

FRA 8885

DUPONT Jean baptiste
 ANCELOT Jean claude 

248.00 302.0039
39.00
39
39.00
26
26.00
31
31.00
41
41.00
54
54.00
33
33.00
39
39.00

C .V. de PARIS
S N O NANTES

38

SUI 8614

JACOT Valéry
 BATTAGLIA Corsin 

250.00 326.0050
50.00
DNS
76.00
24
24.00
35
35.00
31
31.00
32
32.00
56
56.00
22
22.00

CERCLE DE VOILE DE NEUCHATEL

39

FRA 8486

VIAUD Pascal
 MICHEL Nicolas 

252.00 308.0026
26.00
33
33.00
46
46.00
56
56.00
40
40.00
33
33.00
36
36.00
38
38.00

S R ROCHELAISES
C V A N NANTES

40

FRA 8427

MONNIER Frederic
 PLATHIER Yann 

255.00 298.0037
37.00
37
37.00
40
40.00
30
30.00
39
39.00
36
36.00
43
43.00
36
36.00

Y C Grenoble Chara
S A LYONNAIS

41

ITA 8671

PIACQUADIO Giacinto
 MESSINA Anrea 

280.00 339.0042
42.00
32
32.00
43
43.00
34
34.00
59
59.00
53
53.00
34
34.00
42
42.00

YACHTING CLUB CERN

42

BEL 9

VANDERSTEN Philippe
 GENNART Genevieve 

295.00 371.0040
40.00
47
47.00
36
36.00
39
39.00
44
44.00
48
48.00
41
41.00
DNC
76.00

SNEH

43

FRA 8567

COULMIN Pierre-jerome
 PETER Vincent 

298.00 374.0047
47.00
45
45.00
58
58.00
62
62.00
34
34.00
27
27.00
25
25.00
DNF
76.00

WIND 14
WIND 14

44

FRA 8565

DUMAS Bruno
 DAVID Michel 

301.00 377.0048
48.00
36
36.00
27
27.00
27
27.00
48
48.00
39
39.00
DNF
76.00
DNC
76.00

C V ARCACHON
C V ARCACHON

45

FRA 8800

LAFORTUNE Claude
 LAFORTUNE Adrien 

301.00 350.0049
49.00
46
46.00
33
33.00
43
43.00
47
47.00
49
49.00
39
39.00
44
44.00

C V SEINE-PORT
C V SEINE-PORT

46

FRA 8899

KARADJIAN Alain
 LAFORTUNE Jordane 

308.00 384.0041
41.00
38
38.00
45
45.00
38
38.00
64
64.00
50
50.00
DNF
76.00
32
32.00

C V ST QUENTIN
C V SEINE-PORT

47

FRA 8695

PUISSANT Jean-guy
 LE GUEN Bernard 

308.00 384.0061
61.00
44
44.00
34
34.00
42
42.00
42
42.00
47
47.00
38
38.00
DNC
76.00

CV LAC 3 PROVINCES
DAUPHINS WIND JOCON.

48

FRA 8

DAGUZAN Thierry
 POIRIER Arnaud 

317.00 382.0033
33.00
54
54.00
63
63.00
65
65.00
38
38.00
41
41.00
40
40.00
48
48.00

S R ROCHELAISES
EV ROCHELAISE

49

FRA 8699

DUCROS Jean philippe
 VICTOR Antoine 

333.00 394.0038
38.00
49
49.00
61
61.00
48
48.00
51
51.00
51
51.00
50
50.00
46
46.00

C.V.M.L
C.V.M.L

50

FRA 9050

VASSOR Eric
 CHENE Pierre yves 

342.00 418.0054
54.00
51
51.00
62
62.00
55
55.00
46
46.00
44
44.00
30
30.00
DNF
76.00

USAM VOILE
USAM VOILE

51

FRA 8711

MAUPAY Jerome
 CAMINADE Francois 

342.00 396.0046
46.00
43
43.00
52
52.00
50
50.00
52
52.00
52
52.00
54
54.00
47
47.00

Y C Grenoble Chara
Y C Grenoble Chara

52

FRA 8980

BOIRY Michel
 HUBERT Jean-baptiste 

347.00 409.0062
62.00
48
48.00
42
42.00
47
47.00
62
62.00
55
55.00
53
53.00
40
40.00

C .V. de PARIS
C V SEINE-PORT

53

FRA 8187

GRACIES Bruno
 THIBAUD Cyril 

352.00 428.00DNF
76.00
40
40.00
54
54.00
44
44.00
49
49.00
46
46.00
DNF
76.00
43
43.00

EV ROCHELAISE
G S LA ROCHELLE

54

FRA 8773

CONVERSY Gael
 FERROIS Melissa 

362.00 418.0055
55.00
55
55.00
48
48.00
54
54.00
55
55.00
56
56.00
46
46.00
49
49.00

Y C BEAULIEU
YC POINTE ROUGE

55

GBR 8907

BERRY Jim
 BARNES David 

375.00 451.0027
27.00
DNF
76.00
47
47.00
57
57.00
54
54.00
38
38.00
DNF
76.00
DNF
76.00

GRANDE-BRETAGNE

56

FRA 8949

JEAN Jeremy
 DUQUESNE Philippe 

380.00 456.00DNF
76.00
DNS
76.00
37
37.00
28
28.00
68
68.00
58
58.00
DNS
76.00
37
37.00

S N O NANTES
S N O NANTES

57

FRA 8704

NEIDHART Elisabeth
 GOUGEON Matthieu 

381.00 457.0044
44.00
DNF
76.00
49
49.00
26
26.00
DNF
76.00
DNS
76.00
DNF
76.00
34
34.00

C.V.M.L
C.V.M.L

58

FRA 8623

DAUGEY Gerard
 ROUANNE Dominique 

396.00 472.00DNF
76.00
DNS
76.00
56
56.00
52
52.00
DNF
76.00
43
43.00
48
48.00
45
45.00

C.V.M.L
Y C CAVALAIRE

59

FRA 8826

DEBRY Tristan
 DEBRY Alain 

407.00 483.0052
52.00
DNF
76.00
51
51.00
61
61.00
60
60.00
60
60.00
47
47.00
DNF
76.00

Y.C.DINARD
Y.C.DINARD

60

FRA 8431

DECHAUFFOUR Jacques
 DECHAUFFOUR Sabine 

417.00 493.0058
58.00
53
53.00
66
66.00
63
63.00
65
65.00
68
68.00
44
44.00
DNF
76.00

S N O NANTES
S N O NANTES

61

FRA 8366

PICOU Dominique
 BOUTON Fabrice 

421.00 497.00DNF
76.00
DNS
76.00
68
68.00
69
69.00
53
53.00
42
42.00
37
37.00
DNC
76.00

S R ROCHELAISES
S R ROCHELAISES

62

FRA 9033

HUE Patrice
 HUE Pierre francois 

426.00 502.0059
59.00
DNF
76.00
50
50.00
53
53.00
50
50.00
62
62.00
DNS
76.00
DNF
76.00

C V ANGERS
S N P H

63

FRA 8880

MOUCLIER Emmanuel
 THIBERGE Olivier 

428.00 504.0057
57.00
50
50.00
69
69.00
70
70.00
61
61.00
DNF
76.00
45
45.00
DNF
76.00

C.V.M.L
C .V. de PARIS

64

GER 8052

FEVERHAKE Jurgen
 NEHRENBERG Anne 

435.00 511.0056
56.00
52
52.00
55
55.00
66
66.00
66
66.00
64
64.00
DNF
76.00
DNF
76.00

YCSB

65

FRA 8748

CARVALLO Samuel
 RAULY Sebastien 

441.00 517.0051
51.00
DPI
71.00
70
70.00
73
73.00
58
58.00
66
66.00
52
52.00
DNF
76.00

C N HAUTE SEINE
C N HAUTE SEINE

66

FRA 8564

MENDES Jose
 LOZOUET Jean-paul 

453.00 529.00DNF
76.00
DNS
76.00
65
65.00
49
49.00
70
70.00
67
67.00
DNF
76.00
50
50.00

C.V.M.L
C .V. de PARIS

67

FRA 8362

MAGRET Olivier
 GLADE Mathieu 

460.00 536.0053
53.00
DNF
76.00
57
57.00
46
46.00
DNF
76.00
DNF
76.00
DNS
76.00
DNC
76.00

C N T LACYDON
S N DE SANARY

68

FRA 8705

VOCANSON Luc
 MUNIGLIA Thierry 

461.00 537.0043
43.00
DNF
76.00
53
53.00
68
68.00
69
69.00
DNF
76.00
DNS
76.00
DNF
76.00

C.V.M.L
C.V.M.L

69

FRA 9019

LEHMANN Robert
 EDEL Bernard 

469.00 545.00DNF
76.00
DNS
76.00
59
59.00
60
60.00
57
57.00
65
65.00
DNS
76.00
DNF
76.00

AC ALSACE LORRAINE
AC ALSACE LORRAINE

70

FRA 8676

DECHAUFFOUR Valentin
 GENDRY Pierre 

469.00 545.00DNC
76.00
DNF
76.00
60
60.00
59
59.00
63
63.00
59
59.00
DNF
76.00
DNF
76.00

S N O NANTES
S N O NANTES

71

FRA 898

NOURAUD Daniel
 FINOT Thibault 

475.00 551.0060
60.00
DNS
76.00
64
64.00
67
67.00
56
56.00
DNF
76.00
DNS
76.00
DNF
76.00

S R ROCHELAISES
S N O NANTES

72

FRA 8401

RENOUX Alain
 LAMARQUE Frederic 

479.00 555.00DNF
76.00
DNF
76.00
71
71.00
71
71.00
71
71.00
63
63.00
DNS
76.00
51
51.00

C V ANGOULEME
V LACANAU GUYENNE

73

FRA 8541

BARON Jean
 DUBERNET Louis 

492.00 568.00DNF
76.00
DNF
76.00
67
67.00
DPI
76.00
45
45.00
DNF
76.00
DNS
76.00
DNF
76.00

U N P CAP BRETON
U N P CAP BRETON

74

FRA 8717

PUGET Mathieu
 LACOTTE Nicolas 

500.00 576.00DNF
76.00
DNC
76.00
DNF
76.00
DNF
76.00
72
72.00
69
69.00
55
55.00
DNF
76.00

USAM VOILE
USAM VOILE

75

NED 8287

KALF Mark
 KALF Mak 

500.00 576.00DNF
76.00
DNS
76.00
72
72.00
72
72.00
67
67.00
61
61.00
DNF
76.00
DNC
76.00

HOLLANDE

Pénalités et réparations : 92 (9 DNC; 59 DNF; 17 DNS; 4 DPI; 1 DSQ; 2 RDG; )
[Retour début de page] -

LORBER Yves
Président du Comité de Course

DESFORGES Roland
Président du Jury


Produit le 11/07/2011 par DESFORGES Roland et logiciel FReg2011 (vers. 15/06/2011) FFVoile © 2001/2010
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.gwt.ui.test/META-INF/MANIFEST.MF index 3becda5acb4..b2f8e43b4b5 100755 --- a/java/com.sap.sailing.gwt.ui.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.gwt.ui.test/META-INF/MANIFEST.MF @@ -6,7 +6,8 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Fragment-Host: com.sap.sailing.gwt.ui -Require-Bundle: com.sap.sailing.server +Require-Bundle: com.sap.sailing.server, + org.hamcrest.core;bundle-version="1.1.0" Bundle-ClassPath: . Import-Package: javax.jms;version="1.1.0", javax.servlet;version="2.5.0", From 61728d53a2554a335b9c9f7bcb647bf02f078263 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 29 Jan 2013 00:53:22 +0100 Subject: [PATCH 2/3] made start-tracking service APIs multi-race capable --- .../ui/test/GwtTestCaseColumnToggling.java | 3 +- .../SwissTimingEventManagementPanel.java | 21 +-- .../SwissTimingReplayConnectorPanel.java | 18 +-- .../TracTracEventManagementPanel.java | 12 +- .../sailing/gwt/ui/client/SailingService.java | 10 +- .../gwt/ui/client/SailingServiceAsync.java | 26 ++-- .../gwt/ui/server/SailingServiceImpl.java | 120 ++++++++++-------- 7 files changed, 111 insertions(+), 99 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/GwtTestCaseColumnToggling.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/GwtTestCaseColumnToggling.java index 02da0ed45c2..6913bc603ea 100644 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/GwtTestCaseColumnToggling.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/GwtTestCaseColumnToggling.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.ui.test; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.List; @@ -82,7 +83,7 @@ public class GwtTestCaseColumnToggling extends GWTTestCase { } private void trackRace(){ - service.trackWithTracTrac(/* regattaToAddTo */null, rrDao, tractracTunnel ? "tcp://" + tractracTunnelHost + ":" + service.trackWithTracTrac(/* regattaToAddTo */null, Collections.singleton(rrDao), tractracTunnel ? "tcp://" + tractracTunnelHost + ":" + TracTracConnectionConstants.PORT_TUNNEL_LIVE : "tcp://" + TracTracConnectionConstants.HOST_NAME + ":" + TracTracConnectionConstants.PORT_LIVE, tractracTunnel ? "tcp://" + tractracTunnelHost + ":" + TracTracConnectionConstants.PORT_TUNNEL_STORED : "tcp://" + TracTracConnectionConstants.HOST_NAME diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingEventManagementPanel.java index 7b263969aed..cc692b8d1a9 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingEventManagementPanel.java @@ -339,24 +339,27 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane private void trackSelectedRaces(boolean trackWind, boolean correctWindByDeclination) { String hostname = hostnameTextbox.getValue(); int port = portIntegerbox.getValue(); - for (final SwissTimingRaceRecordDTO rr : raceList.getList()) { - if (raceTable.getSelectionModel().isSelected(rr)) { - sailingService.trackWithSwissTiming(/* regattaToAddTo */ null, // TODO allow user to select a pre-defined regatta - rr, hostname, port, /* canSendRequests */false, - trackWind, correctWindByDeclination, new AsyncCallback() { + final List selectedRaces = new ArrayList(); + for (final SwissTimingRaceRecordDTO race : this.raceList.getList()) { + if (raceTable.getSelectionModel().isSelected(race)) { + selectedRaces.add(race); + } + } + sailingService.trackWithSwissTiming( + /* regattaToAddTo */null, // TODO allow user to select a pre-defined regatta + selectedRaces, hostname, port, /* canSendRequests */false, trackWind, correctWindByDeclination, + new AsyncCallback() { @Override public void onFailure(Throwable caught) { - errorReporter.reportError("Error trying to register race " + rr.ID + " for tracking: " + errorReporter.reportError("Error trying to register races " + selectedRaces + " for tracking: " + caught.getMessage()); } - @Override + @Override public void onSuccess(Void result) { regattaRefresher.fillRegattas(); } }); - } - } } private void updatePanelFromSelectedStoredConfiguration() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java index 79285a5a5d0..6b4cef855e2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java @@ -387,14 +387,18 @@ public class SwissTimingReplayConnectorPanel extends AbstractEventManagementPane } } - for (final SwissTimingReplayRaceDTO replayRace : raceList.getList()) { - if (raceTable.getSelectionModel().isSelected(replayRace)) { - sailingService.replaySwissTimingRace(regattaIdentifier, replayRace, trackWind, - correctWindByDeclination, simulateWithStartTimeNow, new AsyncCallback() { + final List selectedRaces = new ArrayList(); + for (final SwissTimingReplayRaceDTO race : this.raceList.getList()) { + if (raceTable.getSelectionModel().isSelected(race)) { + selectedRaces.add(race); + } + } + sailingService.replaySwissTimingRace(regattaIdentifier, selectedRaces, trackWind, correctWindByDeclination, + simulateWithStartTimeNow, new AsyncCallback() { @Override public void onFailure(Throwable caught) { - errorReporter.reportError("Error trying to register race " + replayRace.name + " for tracking: " - + caught.getMessage()+". Check live/stored URI syntax."); + errorReporter.reportError("Error trying to register races " + selectedRaces + + " for tracking: " + caught.getMessage() + ". Check live/stored URI syntax."); } @Override @@ -402,8 +406,6 @@ public class SwissTimingReplayConnectorPanel extends AbstractEventManagementPane regattaRefresher.fillRegattas(); } }); - } - } } private void fillRaceListFromAvailableRacesApplyingFilter(String text) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java index 87e14415d65..cb761deee9b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java @@ -662,13 +662,17 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel { } } + final List selectedRaces = new ArrayList(); for (final TracTracRaceRecordDTO race : this.raceList.getList()) { if (selectionModel.isSelected(race)) { - this.sailingService.trackWithTracTrac(regattaIdentifier, race, liveURI, storedURI, trackWind, - correctWind, simulateWithStartTimeNow, new MarkedAsyncCallback() { + selectedRaces.add(race); + } + } + this.sailingService.trackWithTracTrac(regattaIdentifier, selectedRaces, liveURI, storedURI, trackWind, correctWind, + simulateWithStartTimeNow, new MarkedAsyncCallback() { @Override public void handleFailure(Throwable caught) { - reportError("Error trying to register race " + race.name + " for tracking: " + reportError("Error trying to register races " + selectedRaces + " for tracking: " + caught.getMessage() + ". Check live/stored URI syntax."); } @@ -677,8 +681,6 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel { TracTracEventManagementPanel.this.regattaRefresher.fillRegattas(); } }); - } - } } private void updatePanelFromSelectedStoredConfiguration() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 5c85446effb..3f7249c5ff0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -65,12 +65,15 @@ public interface SailingService extends RemoteService { Pair> listTracTracRacesInEvent(String eventJsonURL) throws Exception; - void trackWithTracTrac(RegattaIdentifier regattaToAddTo, TracTracRaceRecordDTO rr, String liveURI, + void trackWithTracTrac(RegattaIdentifier regattaToAddTo, Iterable rrs, String liveURI, String storedURI, boolean trackWind, boolean correctWindByDeclination, boolean simulateWithStartTimeNow) throws Exception; - void trackWithSwissTiming(RegattaIdentifier regattaToAddTo, SwissTimingRaceRecordDTO rr, String hostname, int port, + void trackWithSwissTiming(RegattaIdentifier regattaToAddTo, Iterable rrs, String hostname, int port, boolean canSendRequests, boolean trackWind, boolean correctWindByDeclination) throws Exception; + void replaySwissTimingRace(RegattaIdentifier regattaIdentifier, Iterable replayRaces, + boolean trackWind, boolean correctWindByDeclination, boolean simulateWithStartTimeNow); + void storeTracTracConfiguration(String name, String jsonURL, String liveDataURI, String storedDataURI) throws Exception; void stopTrackingEvent(RegattaIdentifier eventIdentifier) throws Exception; @@ -273,9 +276,6 @@ public interface SailingService extends RemoteService { List listSwissTiminigReplayRaces(String swissTimingUrl); - void replaySwissTimingRace(RegattaIdentifier regattaIdentifier, SwissTimingReplayRaceDTO replayRace, - boolean trackWind, boolean correctWindByDeclination, boolean simulateWithStartTimeNow); - List>> getRankedCompetitorsFromBestToWorstAfterEachRaceColumn(String leaderboardName, Date date) throws NoWindException; List getOverallLeaderboardNamesContaining(String leaderboardName); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index e7736279b42..c3814a99d64 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -83,9 +83,17 @@ public interface SailingServiceAsync { * {@link TracTracRaceRecordDTO#storedURI} from the rr race record. */ void trackWithTracTrac(RegattaIdentifier regattaToAddTo, - TracTracRaceRecordDTO rr, String liveURI, String storedURI, boolean trackWind, boolean correctWindByDeclination, + Iterable rrs, String liveURI, String storedURI, boolean trackWind, boolean correctWindByDeclination, boolean simulateWithStartTimeNow, AsyncCallback callback); + void trackWithSwissTiming(RegattaIdentifier regattaToAddTo, Iterable rrs, + String hostname, int port, boolean canSendRequests, boolean trackWind, boolean correctWindByDeclination, + AsyncCallback asyncCallback); + + void replaySwissTimingRace(RegattaIdentifier regattaIdentifier, Iterable replayRaces, + boolean trackWind, boolean correctWindByDeclination, boolean simulateWithStartTimeNow, + AsyncCallback asyncCallback); + void getPreviousTracTracConfigurations(AsyncCallback> callback); void storeTracTracConfiguration(String name, String jsonURL, String liveDataURI, String storedDataURI, @@ -264,18 +272,6 @@ public interface SailingServiceAsync { void storeSwissTimingConfiguration(String configName, String hostname, int port, boolean canSendRequests, AsyncCallback asyncCallback); - /** - * @param regattaToAddTo - * if null, an existing regatta by the name of the TracTrac event with the boat class name - * appended in parentheses will be looked up; if not found, a default regatta with that name will be - * created, with a single default series and a single default fleet. If a valid {@link RegattaIdentifier} - * is specified, a regatta lookup is performed with that identifier; if the regatta is found, it is used - * to add the races to. Otherwise, a default regatta as described above will be created and used. - */ - void trackWithSwissTiming(RegattaIdentifier regattaToAddTo, SwissTimingRaceRecordDTO rr, String hostname, int port, - boolean canSendRequests, boolean trackWind, boolean correctWindByDeclination, - AsyncCallback asyncCallback); - void sendSwissTimingDummyRace(String racMessage, String stlMesssage, String ccgMessage, AsyncCallback callback); void getCountryCodes(AsyncCallback callback); @@ -420,10 +416,6 @@ public interface SailingServiceAsync { void listSwissTiminigReplayRaces(String swissTimingUrl, AsyncCallback> asyncCallback); - void replaySwissTimingRace(RegattaIdentifier regattaIdentifier, SwissTimingReplayRaceDTO replayRace, - boolean trackWind, boolean correctWindByDeclination, boolean simulateWithStartTimeNow, - AsyncCallback asyncCallback); - void getRankedCompetitorsFromBestToWorstAfterEachRaceColumn(String leaderboardName, Date date, AsyncCallback>>> callback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 597539ba41c..2f25c24b5f7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -1123,29 +1123,32 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public void trackWithTracTrac(RegattaIdentifier regattaToAddTo, TracTracRaceRecordDTO rr, String liveURI, String storedURI, + public void trackWithTracTrac(RegattaIdentifier regattaToAddTo, Iterable rrs, String liveURI, String storedURI, boolean trackWind, final boolean correctWindByDeclination, final boolean simulateWithStartTimeNow) throws Exception { - if (liveURI == null || liveURI.trim().length() == 0) { - liveURI = rr.liveURI; - } - if (storedURI == null || storedURI.trim().length() == 0) { - storedURI = rr.storedURI; - } - final RacesHandle raceHandle = getService().addTracTracRace(regattaToAddTo, new URL(rr.paramURL), - new URI(liveURI), new URI(storedURI), new MillisecondsTimePoint(rr.trackingStartTime), - new MillisecondsTimePoint(rr.trackingEndTime), - MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory), - RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, simulateWithStartTimeNow); - if (trackWind) { - new Thread("Wind tracking starter for race "+rr.regattaName+"/"+rr.name) { - public void run() { - try { - startTrackingWind(raceHandle, correctWindByDeclination, RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS); - } catch (Exception e) { - throw new RuntimeException(e); + for (TracTracRaceRecordDTO rr : rrs) { + if (liveURI == null || liveURI.trim().length() == 0) { + liveURI = rr.liveURI; + } + if (storedURI == null || storedURI.trim().length() == 0) { + storedURI = rr.storedURI; + } + final RacesHandle raceHandle = getService().addTracTracRace(regattaToAddTo, new URL(rr.paramURL), + new URI(liveURI), new URI(storedURI), new MillisecondsTimePoint(rr.trackingStartTime), + new MillisecondsTimePoint(rr.trackingEndTime), + MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory), + RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, simulateWithStartTimeNow); + if (trackWind) { + new Thread("Wind tracking starter for race " + rr.regattaName + "/" + rr.name) { + public void run() { + try { + startTrackingWind(raceHandle, correctWindByDeclination, + RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS); + } catch (Exception e) { + throw new RuntimeException(e); + } } - } - }.start(); + }.start(); + } } } @@ -2356,22 +2359,25 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public void trackWithSwissTiming(RegattaIdentifier regattaToAddTo, SwissTimingRaceRecordDTO rr, String hostname, int port, + public void trackWithSwissTiming(RegattaIdentifier regattaToAddTo, Iterable rrs, String hostname, int port, boolean canSendRequests, boolean trackWind, final boolean correctWindByDeclination) throws Exception { - final RacesHandle raceHandle = getService().addSwissTimingRace(regattaToAddTo, rr.ID, hostname, port, - canSendRequests, - MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory), - RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS); - if (trackWind) { - new Thread("Wind tracking starter for race "+rr.ID+"/"+rr.description) { - public void run() { - try { - startTrackingWind(raceHandle, correctWindByDeclination, RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS); - } catch (Exception e) { - throw new RuntimeException(e); + for (SwissTimingRaceRecordDTO rr : rrs) { + final RacesHandle raceHandle = getService().addSwissTimingRace(regattaToAddTo, rr.ID, hostname, port, + canSendRequests, + MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory), + RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS); + if (trackWind) { + new Thread("Wind tracking starter for race " + rr.ID + "/" + rr.description) { + public void run() { + try { + startTrackingWind(raceHandle, correctWindByDeclination, + RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS); + } catch (Exception e) { + throw new RuntimeException(e); + } } - } - }.start(); + }.start(); + } } } @@ -2392,30 +2398,36 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public void replaySwissTimingRace(RegattaIdentifier regattaIdentifier, SwissTimingReplayRaceDTO replayRaceDTO, + public void replaySwissTimingRace(RegattaIdentifier regattaIdentifier, Iterable replayRaceDTOs, boolean trackWind, boolean correctWindByDeclination, boolean simulateWithStartTimeNow) { Regatta regatta; - if (regattaIdentifier == null) { - String boatClass = replayRaceDTO.boat_class; - for (String genderIndicator : new String[] { "Man", "Woman", "Men", "Women", "M", "W" }) { - Pattern p = Pattern.compile("(( - )|-| )"+genderIndicator+"$"); - Matcher m = p.matcher(boatClass.trim()); - if (m.find()) { - boatClass = boatClass.trim().substring(0, m.start(1)); - break; + for (SwissTimingReplayRaceDTO replayRaceDTO : replayRaceDTOs) { + if (regattaIdentifier == null) { + String boatClass = replayRaceDTO.boat_class; + for (String genderIndicator : new String[] { "Man", "Woman", "Men", "Women", "M", "W" }) { + Pattern p = Pattern.compile("(( - )|-| )" + genderIndicator + "$"); + Matcher m = p.matcher(boatClass.trim()); + if (m.find()) { + boatClass = boatClass.trim().substring(0, m.start(1)); + break; + } } + regatta = getService().createRegatta( + replayRaceDTO.rsc, + boatClass.trim(), + RegattaImpl.getFullName(replayRaceDTO.rsc, replayRaceDTO.boat_class), + Collections.singletonList(new SeriesImpl("Default", /* isMedal */false, Collections + .singletonList(new FleetImpl("Default")), /* race column names */ + new ArrayList(), getService())), false, + baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT)); + } else { + regatta = getService().getRegatta(regattaIdentifier); } - regatta = getService().createRegatta(replayRaceDTO.rsc, boatClass.trim(), - RegattaImpl.getFullName(replayRaceDTO.rsc, replayRaceDTO.boat_class), - Collections.singletonList(new SeriesImpl("Default", /* isMedal */false, Collections - .singletonList(new FleetImpl("Default")), /* race column names */new ArrayList(), - getService())), - false, baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT)); - } else { - regatta = getService().getRegatta(regattaIdentifier); + SwissTimingReplayService replayService = SwissTimingReplayServiceFactory.INSTANCE + .createSwissTimingReplayService(); + replayService.loadRaceData(replayRaceDTO.link, getService().getSwissTimingDomainFactory(), regatta, + getService()); } - SwissTimingReplayService replayService = SwissTimingReplayServiceFactory.INSTANCE.createSwissTimingReplayService(); - replayService.loadRaceData(replayRaceDTO.link, getService().getSwissTimingDomainFactory(), regatta, getService()); } @Override From 4939086c0bb391ea7b7b7439e0914506da65ea3b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 29 Jan 2013 01:26:35 +0100 Subject: [PATCH 3/3] also made stopping tracking multi-selection aware --- .../adminconsole/LeaderboardConfigPanel.java | 13 ++++++---- .../TrackedRaceChangedListener.java | 2 +- .../TrackedRacesListComposite.java | 26 ++++++++++--------- .../sailing/gwt/ui/client/SailingService.java | 2 +- .../gwt/ui/client/SailingServiceAsync.java | 2 +- .../gwt/ui/server/SailingServiceImpl.java | 6 +++-- 6 files changed, 29 insertions(+), 22 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java index 45d78450264..0c421f5176a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java @@ -870,13 +870,16 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye } @Override - public void changeTrackingRace(RegattaAndRaceIdentifier regattaAndRaceIdentifier, boolean isTracked) { - for (Pair raceColumnAndFleetName : raceColumnAndFleetList.getList()) { - if (raceColumnAndFleetName.getA().getRaceColumnName().equals(regattaAndRaceIdentifier.getRaceName())) { - raceColumnAndFleetName.getA().setRaceIdentifier(raceColumnAndFleetName.getB(), regattaAndRaceIdentifier); + public void changeTrackingRace(Iterable regattaAndRaceIdentifiers, boolean isTracked) { + for (RegattaAndRaceIdentifier regattaAndRaceIdentifier : regattaAndRaceIdentifiers) { + for (Pair raceColumnAndFleetName : raceColumnAndFleetList.getList()) { + if (raceColumnAndFleetName.getA().getRaceColumnName().equals(regattaAndRaceIdentifier.getRaceName())) { + raceColumnAndFleetName.getA().setRaceIdentifier(raceColumnAndFleetName.getB(), + regattaAndRaceIdentifier); + } } + raceColumnAndFleetList.refresh(); } - raceColumnAndFleetList.refresh(); } private void createFlexibleLeaderboard() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRaceChangedListener.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRaceChangedListener.java index 814f964c5af..d4adeece676 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRaceChangedListener.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRaceChangedListener.java @@ -3,5 +3,5 @@ package com.sap.sailing.gwt.ui.adminconsole; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; public interface TrackedRaceChangedListener { - void changeTrackingRace(RegattaAndRaceIdentifier regattaAndRaceIdentifier, boolean isTracked); + void changeTrackingRace(Iterable regattaAndRaceIdentifiers, boolean isTracked); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java index d59c5c822f8..ca09056294d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java @@ -1,5 +1,7 @@ package com.sap.sailing.gwt.ui.adminconsole; +import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -50,20 +52,24 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite this.raceIsTrackedRaceChangeListener.add(listener); } - private void stopTrackingRace(final RaceDTO race) { - final RegattaAndRaceIdentifier regattaAndRaceIdentifier = race.getRaceIdentifier(); - sailingService.stopTrackingRace(regattaAndRaceIdentifier, new AsyncCallback() { + private void stopTrackingRaces(final Iterable races) { + final List racesToStopTracking = new ArrayList(); + for (RaceDTO race : races) { + if (race.isTracked) { + racesToStopTracking.add(race.getRaceIdentifier()); + } + } + sailingService.stopTrackingRaces(racesToStopTracking, new AsyncCallback() { @Override public void onFailure(Throwable caught) { - errorReporter.reportError("Exception trying to stop tracking race " + race.name + "in event " - + race.getRegattaName() + ": " + caught.getMessage()); + errorReporter.reportError("Exception trying to stop tracking races " + races + ": " + caught.getMessage()); } @Override public void onSuccess(Void result) { regattaRefresher.fillRegattas(); for (TrackedRaceChangedListener listener : raceIsTrackedRaceChangeListener) { - listener.changeTrackingRace(regattaAndRaceIdentifier, false); + listener.changeTrackingRace(racesToStopTracking, false); } } }); @@ -83,7 +89,7 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite public void onSuccess(Void result) { regattaRefresher.fillRegattas(); for (TrackedRaceChangedListener listener : raceIsTrackedRaceChangeListener) { - listener.changeTrackingRace(regattaNameAndRaceName, false); + listener.changeTrackingRace(Collections.singleton(regattaNameAndRaceName), false); } } }); @@ -108,11 +114,7 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite btnUntrack.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent click) { - for (RaceDTO selectedRace : getSelectedRaces()) { - if (selectedRace.isTracked) { - stopTrackingRace(selectedRace); - } - } + stopTrackingRaces(getSelectedRaces()); } }); btnUntrack.setEnabled(false); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 3f7249c5ff0..eb7d24018f6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -78,7 +78,7 @@ public interface SailingService extends RemoteService { void stopTrackingEvent(RegattaIdentifier eventIdentifier) throws Exception; - void stopTrackingRace(RegattaAndRaceIdentifier regattaAndRaceIdentifier) throws Exception; + void stopTrackingRaces(Iterable racesToStopTracking) throws Exception; void removeAndUntrackRace(RegattaAndRaceIdentifier regattaAndRaceidentifier) throws Exception; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index c3814a99d64..3f4beab2aad 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -101,7 +101,7 @@ public interface SailingServiceAsync { void stopTrackingEvent(RegattaIdentifier eventIdentifier, AsyncCallback callback); - void stopTrackingRace(RegattaAndRaceIdentifier raceIdentifier, AsyncCallback asyncCallback); + void stopTrackingRaces(Iterable racesToStopTracking, AsyncCallback asyncCallback); /** * Untracks the race and removes it from the regatta. It will also be removed in all leaderboards diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 2f25c24b5f7..4e715f3f028 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -1182,8 +1182,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public void stopTrackingRace(RegattaAndRaceIdentifier regattaAndRaceIdentifier) throws Exception { - getService().apply(new StopTrackingRace(regattaAndRaceIdentifier)); + public void stopTrackingRaces(Iterable regattaAndRaceIdentifiers) throws Exception { + for (RegattaAndRaceIdentifier regattaAndRaceIdentifier : regattaAndRaceIdentifiers) { + getService().apply(new StopTrackingRace(regattaAndRaceIdentifier)); + } } @Override