mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-22 13:45:42 +00:00
Merge branch 'master' into ubilabs--tracking_app--fiori_design
This commit is contained in:
@@ -14,6 +14,18 @@ The devices have three LEDs whose status works as follows:
|
||||
|
||||
More information on running the WindBots can be found [here](https://igtimi.desk.com/customer/portal/articles/1494533-yachtbot-tracker-basic-operation?b_id=1690).
|
||||
|
||||
# Operating near country borders
|
||||
|
||||
Confirm signal strengths by enabling cell debugging by adding two lines in the “WindBot prerequisites” section right at the top…
|
||||
|
||||
```
|
||||
log file debug raw
|
||||
log debug cell on
|
||||
```
|
||||
|
||||
The device will already switch between carriers if an alternative carriers signal is stronger. We don’t have any control over this – it’s a low level cellular protocol thing. Brent can help with forcing carrier selection using the “CELL OPERATOR <X>” command. It can be a bit hit-and-miss to get <X> right sometimes, but if we send him logs with the debugging on, he should be able to give us a config change that forces the connection to stay with the carrier that we see in the logs.
|
||||
Todo: clarify what to look for in the logs
|
||||
|
||||
# Update Firmware
|
||||
|
||||
[How to update the firmware](https://igtimi.desk.com/customer/portal/articles/1122866-how-to-update-the-firmware-in-the-yachtbot-trackers?b_id=1690)
|
||||
|
||||
+6
-3
File diff suppressed because one or more lines are too long
+63
-59
File diff suppressed because one or more lines are too long
+63
-59
File diff suppressed because one or more lines are too long
+10
-6
File diff suppressed because one or more lines are too long
Executable
+559
@@ -0,0 +1,559 @@
|
||||
<Macro Headers>
|
||||
SetEnvIf Request_Method POST REQUEST_IS_POST=1
|
||||
SetEnvIf Request_URI ^/gateway.* REQUEST_IS_POST=1
|
||||
SetEnvIf Request_URI ^/gwt/RegattaOverview.* REQUEST_IS_POST=1
|
||||
SetEnvIf Request_URI ^/?$ REQUEST_IS_POST=1
|
||||
|
||||
Header set Expires "Sun, 19 Nov 1978 05:00:00 GMT" env=REQUEST_IS_POST
|
||||
Header set Cache-Control no-cache,no-store,must-revalidate,post-check=0,pre-check=0 env=REQUEST_IS_POST
|
||||
|
||||
AddOutputFilterByType DEFLATE text/plain
|
||||
AddOutputFilterByType DEFLATE text/html
|
||||
AddOutputFilterByType DEFLATE text/xml
|
||||
AddOutputFilterByType DEFLATE text/json
|
||||
AddOutputFilterByType DEFLATE application/json
|
||||
AddOutputFilterByType DEFLATE text/css
|
||||
AddOutputFilterByType DEFLATE image/gif
|
||||
AddOutputFilterByType DEFLATE image/png
|
||||
AddOutputFilterByType DEFLATE image/jpeg
|
||||
AddOutputFilterByType DEFLATE application/xml
|
||||
AddOutputFilterByType DEFLATE application/xhtml+xml
|
||||
AddOutputFilterByType DEFLATE application/rss+xml
|
||||
AddOutputFilterByType DEFLATE application/javascript
|
||||
AddOutputFilterByType DEFLATE application/x-javascript
|
||||
|
||||
AllowEncodedSlashes On
|
||||
</Macro>
|
||||
|
||||
<Macro Rewrite $IP $PORT>
|
||||
RewriteRule ^/(.*)$ http://$IP:$PORT/$1 [P,L]
|
||||
ProxyPassReverse / http://$IP:$PORT/
|
||||
</Macro>
|
||||
|
||||
<Macro SSL>
|
||||
SSLEngine On
|
||||
SSLCertificateFile /etc/pki/tls/certs/star_sapsailing_com.crt
|
||||
SSLCertificateKeyFile /etc/pki/tls/private/star_sapsailing_com.key
|
||||
SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
|
||||
</Macro>
|
||||
|
||||
<Macro Status $HOSTNAME $PATH>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
<Location /$PATH>
|
||||
SetHandler server-status
|
||||
Order deny,allow
|
||||
Allow from all
|
||||
</Location>
|
||||
CustomLog logs/services_log combined
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Home $HOSTNAME $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
RewriteEngine on
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Home.html" [L,NE]
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Home-SSL $HOSTNAME $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
RedirectPermanent / https://$HOSTNAME/
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerName $HOSTNAME
|
||||
Use SSL
|
||||
Use Headers
|
||||
RewriteEngine on
|
||||
RewriteRule ^(/)?$ "https://$HOSTNAME/gwt/Home.html" [L,NE]
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Plain $HOSTNAME $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
Use Headers
|
||||
RewriteEngine on
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Plain-SSL $HOSTNAME $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
RedirectPermanent / https://$HOSTNAME/
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerName $HOSTNAME
|
||||
Use SSL
|
||||
Use Headers
|
||||
RewriteEngine on
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro HardRedirect $HOSTNAME $TARGETURL>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
Use Headers
|
||||
RedirectMatch /(.*)$ $TARGETURL/
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro LiveCenterWithLanguageSubstitution-ARCHIVE $HOSTNAME $EVENTUUID>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Home.html?locale=de#/event/:eventId=$EVENTUUID" [L,NE]
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^/en$"
|
||||
RewriteRule ^(/en)?$ "http://$HOSTNAME/gwt/Home.html?locale=en#/event/:eventId=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite 172.31.30.89 8888
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro LiveCenterWithLanguageSubstitution $HOSTNAME $EVENTUUID $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Home.html?locale=de#/event/:eventId=$EVENTUUID" [L,NE]
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^/en$"
|
||||
RewriteRule ^(/en)?$ "http://$HOSTNAME/gwt/Home.html?locale=en#/event/:eventId=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro RibDashboard $HOSTNAME $LEADERBOARD_NAME $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/dashboards/RibDashboard.html?leaderboardName=$LEADERBOARD_NAME&%{QUERY_STRING}" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
|
||||
<Macro RegattaOverview-WithLeaderboard-WithLanguage $HOSTNAME $EVENTUUID $LANG $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/RegattaOverview.html?event=$EVENTUUID&locale=$LANG&enableLeaderboard=true" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro RegattaOverview-WithLanguage $HOSTNAME $EVENTUUID $LANG $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/RegattaOverview.html?event=$EVENTUUID&locale=$LANG" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro RegattaOverview-WithLeaderboard $HOSTNAME $EVENTUUID $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/RegattaOverview.html?event=$EVENTUUID&enableLeaderboard=true" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Event $HOSTNAME $EVENTUUID $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Home.html?%{QUERY_STRING}#/event/:eventId=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Event-SSL $HOSTNAME $EVENTUUID $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
RedirectPermanent / https://$HOSTNAME/
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerName $HOSTNAME
|
||||
Use SSL
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "https://$HOSTNAME/gwt/Home.html?%{QUERY_STRING}#/event/:eventId=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Series $HOSTNAME $EVENTUUID $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Home.html?%{QUERY_STRING}#/series/:seriesId=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Series-SSL $HOSTNAME $EVENTUUID $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
RedirectPermanent / https://$HOSTNAME/
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerName $HOSTNAME
|
||||
Use SSL
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "https://$HOSTNAME/gwt/Home.html?%{QUERY_STRING}#/series/:seriesId=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro EventRegattaIntro $HOSTNAME $EVENTUUID $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Home.html#/regatta/overview/:eventId=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Event-WithLanguage $HOSTNAME $EVENTUUID $LANG $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Home.html?locale=$LANG#EventPlace:eventId=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Event-ARCHIVE $HOSTNAME $EVENTUUID>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Home.html#/event/:eventId=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite 172.31.30.89 8888
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Event-ARCHIVE-SSL $HOSTNAME $EVENTUUID>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
RedirectPermanent / https://$HOSTNAME/
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerName $HOSTNAME
|
||||
Use SSL
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "https://$HOSTNAME/gwt/Home.html#/event/:eventId=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite 172.31.30.89 8888
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
|
||||
<Macro RegattaOverview $HOSTNAME $EVENTUUID $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/RegattaOverview.html?event=$EVENTUUID" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Events $HOSTNAME $EVENTNAME $EXTRA $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/events/$EVENTNAME/$EXTRA" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Spectator-WithParam $HOSTNAME $GROUPNAME $EXTRA $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Spectator.html?leaderboardGroupName=$GROUPNAME&$EXTRA" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Spectator-WithLanguage $HOSTNAME $GROUPNAME $LANG $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Spectator.html?leaderboardGroupName=$GROUPNAME&showRaceDetails=true&locale=$LANG" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Spectator $HOSTNAME $GROUPNAME $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Spectator.html?leaderboardGroupName=$GROUPNAME&showRaceDetails=true" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Leaderboard $HOSTNAME $GROUPNAME $NAME $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Leaderboard.html?name=$NAME&leaderboardGroupName=$GROUPNAME&showRaceDetails=true&root=leaderboardGroupPanel" [L,NE]
|
||||
|
||||
Use Rewrite $IP $PORT
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Leaderboard-WithParam $HOSTNAME $GROUPNAME $NAME $EXTRA $IP $PORT>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Leaderboard.html?name=$NAME&leaderboardGroupName=$GROUPNAME&$EXTRA" [L,NE]
|
||||
|
||||
Use Rewrite-ARCHIVE1
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Spectator-ARCHIVE $HOSTNAME $GROUPNAME>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Spectator.html?leaderboardGroupName=$GROUPNAME&showRaceDetails=true" [L,NE]
|
||||
|
||||
Use Rewrite 172.31.30.89 8888
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Spectator-ARCHIVE-SSL $HOSTNAME $GROUPNAME>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
RedirectPermanent / https://$HOSTNAME/
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerName $HOSTNAME
|
||||
Use SSL
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "https://$HOSTNAME/gwt/Spectator.html?leaderboardGroupName=$GROUPNAME&showRaceDetails=true" [L,NE]
|
||||
|
||||
Use Rewrite 172.31.30.89 8888
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Spectator-ARCHIVE-WithParam $HOSTNAME $GROUPNAME $EXTRA>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Spectator.html?leaderboardGroupName=$GROUPNAME&$EXTRA" [L,NE]
|
||||
|
||||
Use Rewrite 172.31.30.89 8888
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Events-ARCHIVE $HOSTNAME $EVENTNAME $EXTRA>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/events/$EVENTNAME/$EXTRA" [L,NE]
|
||||
|
||||
Use Rewrite 172.31.30.89 8888
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Spectator-DEV $HOSTNAME $GROUPNAME>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Spectator.html?leaderboardGroupName=$GROUPNAME&showRaceDetails=true" [L,NE]
|
||||
|
||||
Use Rewrite 172.31.18.218 8888
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Spectator-DEV-WithParam $HOSTNAME $GROUPNAME $EXTRA>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/gwt/Spectator.html?leaderboardGroupName=$GROUPNAME&$EXTRA" [L,NE]
|
||||
|
||||
Use Rewrite 172.31.18.218 8888
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
|
||||
<Macro Events-DEV $HOSTNAME $EVENTNAME $EXTRA>
|
||||
<VirtualHost *:80>
|
||||
ServerName $HOSTNAME
|
||||
|
||||
Use Headers
|
||||
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{REQUEST_URI} "^(/)?$"
|
||||
RewriteRule ^(/)?$ "http://$HOSTNAME/events/$EVENTNAME/$EXTRA" [L,NE]
|
||||
|
||||
Use Rewrite 172.31.18.218 8888
|
||||
</VirtualHost>
|
||||
</Macro>
|
||||
+16
-6
@@ -39,7 +39,17 @@ start_servers() {
|
||||
echo "Appending macro invocation to $APACHE_CONFIG_DIR/001-events.conf to map internal IP $INSTANCE_INTERNAL_IP4 to plain server running $SERVER_PORT..." >>/var/log/sailing.out
|
||||
echo "Use Plain-SSL ${INSTANCE_INTERNAL_IP4} 127.0.0.1 $SERVER_PORT" >>$APACHE_CONFIG_DIR/001-events.conf
|
||||
echo "Appending macro invocation to $APACHE_CONFIG_DIR/001-events.conf to map ${server_name}.sapsailing.com to event with ID $EVENT_ID with server running on local port $SERVER_PORT..." >>/var/log/sailing.out
|
||||
echo "## EVENT ${server_name}" >>$APACHE_CONFIG_DIR/001-events.conf
|
||||
echo "Use Event ${server_name}.sapsailing.com \"$EVENT_ID\" 127.0.0.1 $SERVER_PORT" >>$APACHE_CONFIG_DIR/001-events.conf
|
||||
echo "Use Event-SSL ${server_name}.sapsailing.com \"$EVENT_ID\" 127.0.0.1 $SERVER_PORT" >>$APACHE_CONFIG_DIR/001-events.conf
|
||||
# check if an secondary event shall be pasted to 001-events.conf
|
||||
if [[ ${HTTP_SEC_EVENT} && ${HTTP_SEC_EVENT_ID} ]]; then
|
||||
http_sec_event="`echo $HTTP_SEC_EVENT | tr [A-Z] [a-z]`"
|
||||
echo "Appending macro invocation to $APACHE_CONFIG_DIR/001-events.conf to map ${http_sec_event}.sapsailing.com to event with ID ${HTTP_SEC_EVENT_ID} with server running on local port $SERVER_PORT..." >>/var/log/sailing.out
|
||||
echo "## EVENT ${http_sec_event}" >>$APACHE_CONFIG_DIR/001-events.conf
|
||||
echo "Use Event ${http_sec_event}.sapsailing.com \"$HTTP_SEC_EVENT_ID\" 127.0.0.1 $SERVER_PORT" >>$APACHE_CONFIG_DIR/001-events.conf
|
||||
echo "Use Event-SSL ${http_sec_event}.sapsailing.com \"$HTTP_SEC_EVENT_ID\" 127.0.0.1 $SERVER_PORT" >>$APACHE_CONFIG_DIR/001-events.conf
|
||||
fi
|
||||
HTTP_LOGROTATE=/etc/logrotate.d/httpd
|
||||
echo "Patching $HTTP_LOGROTATE so that old logs go to /var/log/old/$SERVER_NAME/$INSTANCE_IP4" >>/var/log/sailing.out
|
||||
sed -i -e "s/\/var\/log\/old\/\([^/]*\)\/\([^/ ]*\)/\/var\/log\/old\/$SERVER_NAME\/$INSTANCE_IP4/" $HTTP_LOGROTATE
|
||||
@@ -68,11 +78,12 @@ launch_httpd() {
|
||||
source $SERVERS_DIR/$FIRST_SERVER/env.sh
|
||||
# Append Apache macro invocation for /internal-server-status based on mod_status and INSTANCE_DNS to $APACHE_CONFIG_DIR/001-events.conf
|
||||
echo "Appending macro usage for $INSTANCE_DNS/internal-server-status URL for mod_status based Apache monitoring to $APACHE_CONFIG_DIR/001-events.conf" >>/var/log/sailing.out
|
||||
echo "## SERVER STATUS" >>$APACHE_CONFIG_DIR/001-events.conf
|
||||
echo "Use Status $INSTANCE_DNS internal-server-status" >>$APACHE_CONFIG_DIR/001-events.conf
|
||||
echo "Launching httpd..." >>/var/log/sailing.out
|
||||
service httpd start
|
||||
else
|
||||
echo Can't launch httpd; start script doesn't seem to be installed at /etc/init.d/httpd
|
||||
echo "Can't launch httpd; start script doesn't seem to be installed at /etc/init.d/httpd"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -80,7 +91,7 @@ launch_httpd() {
|
||||
case "$1" in
|
||||
start)
|
||||
start_servers
|
||||
;;
|
||||
;;
|
||||
stop)
|
||||
stop_servers
|
||||
;;
|
||||
@@ -89,9 +100,8 @@ case "$1" in
|
||||
RETVAL=$?
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|status|stop}"
|
||||
RETVAL=3
|
||||
echo $"Usage: $0 {start|status|stop}"
|
||||
RETVAL=3
|
||||
esac
|
||||
|
||||
exit $RETVAL
|
||||
|
||||
exit $RETVAL
|
||||
@@ -74,6 +74,7 @@ SAP is at the center of today’s technology revolution, developing innovations
|
||||
* [[505 worlds Kiel 2014 event page|wiki/505-worlds-kiel-2014]]
|
||||
* [[Kieler Woche event page|wiki/kieler-woche-2015]]
|
||||
* [[Charleston Race Week 2016|wiki/Charleston-Race-Week-2016]]
|
||||
* [[Sailing Leagues 2016|wiki/Sailing-Leagues-2016]]
|
||||
* Lean DI Support
|
||||
* [[Setting up internal Jenkins on SAP Monsoon|wiki/setting-up-jenkins-on-sap-monsoon]]
|
||||
|
||||
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
Speed=速力
|
||||
SpeedTenSecondsBefore=10 秒前の速力
|
||||
DistanceTraveled=移動した距離
|
||||
Name=名称
|
||||
LegType=レグタイプ
|
||||
SailID=セールナンバー
|
||||
Year=年
|
||||
LegNumber=レグ番号
|
||||
Nationality=国籍
|
||||
Acronym=頭字語
|
||||
Regatta=レガッタ
|
||||
CourseArea=コースエリア
|
||||
BoatClass=艇種
|
||||
Fleet=フリート
|
||||
Race=レース
|
||||
Competitor=競技者
|
||||
Boat=艇
|
||||
Team=チーム
|
||||
LeaderboardSailingDomainRetrieverChain=リーダーボード
|
||||
RaceSailingDomainRetrieverChain=レース
|
||||
LegSailingDomainRetrieverChain=レグ
|
||||
GPSFixSailingDomainRetrieverChain=GPS フィックス
|
||||
MarkPassingSailingDomainRetrieverChain=マーク通過
|
||||
RaceResultSailingDomainRetrieverChain=レース結果
|
||||
RaceOfCompetitorSailingDomainRetrieverChain=競技者のレース
|
||||
LeaderboardGroup=リーダーボードグループ
|
||||
Leaderboard=リーダーボード
|
||||
Leg=レグ
|
||||
MarkPassing=マーク通過
|
||||
LegOfCompetitor=競技者のレグ
|
||||
GpsFix=GPS フィックス
|
||||
WindStrengthInBeaufort=ビューフォート風力
|
||||
Bft0=平穏
|
||||
Bft1=至軽風
|
||||
Bft2=軽風
|
||||
Bft3=軟風
|
||||
Bft4=和風
|
||||
Bft5=疾風
|
||||
Bft6=雄風
|
||||
Bft7=強風
|
||||
Bft8=疾強風
|
||||
Bft9=大強風
|
||||
Bft10=全強風
|
||||
Bft11=暴風
|
||||
Bft12=颶風 (ぐふう)
|
||||
RelativeScoreInRace=レース中の相対スコア (0 が最高、1 が最低)
|
||||
WindSpeedInBeaufort=風速 (Bft)
|
||||
DistanceAtStart=スタート時のスタートラインまでの距離
|
||||
SpeedWhenStarting=スタート時の速力
|
||||
SpeedTenSecondsBeforeStart=スタート 10 秒前の速力
|
||||
RankAtFirstMark=第一マークでのランク
|
||||
NumberOfManeuvers=マニューバー回数
|
||||
NumberOfTacks=タック回数
|
||||
NumberOfJibes=ジャイブ回数
|
||||
NumberOfPenaltyCircles=ペナルティー回転の数
|
||||
RankGainsOrLosses=ランク上下
|
||||
DistanceToStarboardSideAtStart=スターボード側までの距離 (長さの %)
|
||||
NumberOfPodiumFinish=表彰台回数
|
||||
NumberOfWins=優勝回数
|
||||
RankGainsOrLossesBetweenFirstMarkAndFinish=ランク上下 (第一マーク -> フィニッシュ)
|
||||
IsTracked=追跡済
|
||||
NumberOfCompetitorFixes=競技者フィックスの数
|
||||
NumberOfMarkFixes=マークフィックスの数
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
Speed=Скорость
|
||||
SpeedTenSecondsBefore=Скорость за 10 с до
|
||||
DistanceTraveled=Пройденная дистанция
|
||||
Name=Название
|
||||
LegType=Тип отрезка
|
||||
SailID=Номер на парусе
|
||||
Year=Год
|
||||
LegNumber=Номер отрезка
|
||||
Nationality=Гражданство
|
||||
Acronym=Сокращение
|
||||
Regatta=Регата
|
||||
CourseArea=Зона гонки
|
||||
BoatClass=Класс лодок
|
||||
Fleet=Флот
|
||||
Race=Гонка
|
||||
Competitor=Участник
|
||||
Boat=Лодка
|
||||
Team=Команда
|
||||
LeaderboardSailingDomainRetrieverChain=Таблицы лидеров
|
||||
RaceSailingDomainRetrieverChain=Гонки
|
||||
LegSailingDomainRetrieverChain=Отрезки
|
||||
GPSFixSailingDomainRetrieverChain=Замеры GPS
|
||||
MarkPassingSailingDomainRetrieverChain=Прохождения отметок
|
||||
RaceResultSailingDomainRetrieverChain=Результаты гонки
|
||||
RaceOfCompetitorSailingDomainRetrieverChain=Гонки участников
|
||||
LeaderboardGroup=Группа таблиц лидеров
|
||||
Leaderboard=Таблица лидеров
|
||||
Leg=Отрезок
|
||||
MarkPassing=Прохождение отметки
|
||||
LegOfCompetitor=Отрезок участника
|
||||
GpsFix=Замер GPS
|
||||
WindStrengthInBeaufort=Сила ветра по шкале Бофорта
|
||||
Bft0=Штиль
|
||||
Bft1=Тихий
|
||||
Bft2=Легкий
|
||||
Bft3=Слабый
|
||||
Bft4=Умеренный
|
||||
Bft5=Свежий
|
||||
Bft6=Сильный
|
||||
Bft7=Крепкий
|
||||
Bft8=Очень крепкий
|
||||
Bft9=Шторм
|
||||
Bft10=Сильный шторм
|
||||
Bft11=Жестокий шторм
|
||||
Bft12=Ураган
|
||||
RelativeScoreInRace=Относительная оценка в гонке (0 лучшая; 1 худшая)
|
||||
WindSpeedInBeaufort=Скорость ветра по шкале Бофорта
|
||||
DistanceAtStart=Дистанция до старта при старте
|
||||
SpeedWhenStarting=Скорость при старте
|
||||
SpeedTenSecondsBeforeStart=Скорость за 10 с до старта
|
||||
RankAtFirstMark=Ранг на первой отметке
|
||||
NumberOfManeuvers=Число маневров
|
||||
NumberOfTacks=Число поворотов оверштаг
|
||||
NumberOfJibes=Число поворотов фордевинд
|
||||
NumberOfPenaltyCircles=Число штрафных кругов
|
||||
RankGainsOrLosses=Повышения или понижения ранга
|
||||
DistanceToStarboardSideAtStart=Дистанция до правой стороны (% длины)
|
||||
NumberOfPodiumFinish=Число призовых финишей
|
||||
NumberOfWins=Число побед
|
||||
RankGainsOrLossesBetweenFirstMarkAndFinish=Повышения или понижения ранга (1-я отметка -> финиш)
|
||||
IsTracked=Отслеживается
|
||||
NumberOfCompetitorFixes=Число замеров участника
|
||||
NumberOfMarkFixes=Число замеров отметки
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
Speed=速度
|
||||
SpeedTenSecondsBefore=前 10 秒的速度
|
||||
DistanceTraveled=航行距离
|
||||
Name=名称
|
||||
LegType=航段形式
|
||||
SailID=帆号
|
||||
Year=年份
|
||||
LegNumber=航段编号
|
||||
Nationality=国籍
|
||||
Acronym=首字母缩略词
|
||||
Regatta=比赛
|
||||
CourseArea=场地区域
|
||||
BoatClass=船只级别
|
||||
Fleet=船队
|
||||
Race=比赛轮次
|
||||
Competitor=参赛队
|
||||
Boat=船只
|
||||
Team=团队
|
||||
LeaderboardSailingDomainRetrieverChain=积分榜
|
||||
RaceSailingDomainRetrieverChain=比赛轮次
|
||||
LegSailingDomainRetrieverChain=航段
|
||||
GPSFixSailingDomainRetrieverChain=GPS 修复
|
||||
MarkPassingSailingDomainRetrieverChain=绕标
|
||||
RaceResultSailingDomainRetrieverChain=比赛轮次结果
|
||||
RaceOfCompetitorSailingDomainRetrieverChain=参赛队的比赛轮次
|
||||
LeaderboardGroup=积分榜分组
|
||||
Leaderboard=积分榜
|
||||
Leg=航段
|
||||
MarkPassing=绕标
|
||||
LegOfCompetitor=参赛队的航段
|
||||
GpsFix=GPS 修复
|
||||
WindStrengthInBeaufort=风力(蒲福风级)
|
||||
Bft0=无风
|
||||
Bft1=软风
|
||||
Bft2=轻风
|
||||
Bft3=微风
|
||||
Bft4=和风
|
||||
Bft5=劲风
|
||||
Bft6=强风
|
||||
Bft7=疾风
|
||||
Bft8=大风
|
||||
Bft9=烈风
|
||||
Bft10=暴风
|
||||
Bft11=飓风
|
||||
Bft12=台风
|
||||
RelativeScoreInRace=比赛轮次中的相对得分(0 最佳;1 最差)
|
||||
WindSpeedInBeaufort=风速(单位:Bft)
|
||||
DistanceAtStart=起航前与起航线的距离
|
||||
SpeedWhenStarting=起航时的速度
|
||||
SpeedTenSecondsBeforeStart=起航前 10 秒的速度
|
||||
RankAtFirstMark=在第一个标志的名次
|
||||
NumberOfManeuvers=操作数量
|
||||
NumberOfTacks=迎风转向次数
|
||||
NumberOfJibes=顺风转向次数
|
||||
NumberOfPenaltyCircles=惩罚圈数
|
||||
RankGainsOrLosses=名次进阶或落后
|
||||
DistanceToStarboardSideAtStart=与右舷的距离(长度百分比)
|
||||
NumberOfPodiumFinish=跻身颁奖台次数
|
||||
NumberOfWins=获胜次数
|
||||
RankGainsOrLossesBetweenFirstMarkAndFinish=名次进阶或落后(第一个标志 -> 结束)
|
||||
IsTracked=是否跟踪
|
||||
NumberOfCompetitorFixes=参赛队修复次数
|
||||
NumberOfMarkFixes=标志修复次数
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
Speed=速度
|
||||
SpeedTenSecondsBefore=前 10 秒的速度
|
||||
DistanceTraveled=航行距离
|
||||
Name=名称
|
||||
LegType=航段形式
|
||||
SailID=帆号
|
||||
Year=年份
|
||||
LegNumber=航段编号
|
||||
Nationality=国籍
|
||||
Acronym=首字母缩略词
|
||||
Regatta=比赛
|
||||
CourseArea=场地区域
|
||||
BoatClass=船只级别
|
||||
Fleet=船队
|
||||
Race=比赛轮次
|
||||
Competitor=参赛队
|
||||
Boat=船只
|
||||
Team=团队
|
||||
LeaderboardSailingDomainRetrieverChain=积分榜
|
||||
RaceSailingDomainRetrieverChain=比赛轮次
|
||||
LegSailingDomainRetrieverChain=航段
|
||||
GPSFixSailingDomainRetrieverChain=GPS 修复
|
||||
MarkPassingSailingDomainRetrieverChain=绕标
|
||||
RaceResultSailingDomainRetrieverChain=比赛轮次结果
|
||||
RaceOfCompetitorSailingDomainRetrieverChain=参赛队的比赛轮次
|
||||
LeaderboardGroup=积分榜分组
|
||||
Leaderboard=积分榜
|
||||
Leg=航段
|
||||
MarkPassing=绕标
|
||||
LegOfCompetitor=参赛队的航段
|
||||
GpsFix=GPS 修复
|
||||
WindStrengthInBeaufort=风力(蒲福风级)
|
||||
Bft0=无风
|
||||
Bft1=软风
|
||||
Bft2=轻风
|
||||
Bft3=微风
|
||||
Bft4=和风
|
||||
Bft5=劲风
|
||||
Bft6=强风
|
||||
Bft7=疾风
|
||||
Bft8=大风
|
||||
Bft9=烈风
|
||||
Bft10=暴风
|
||||
Bft11=飓风
|
||||
Bft12=台风
|
||||
RelativeScoreInRace=比赛轮次中的相对得分(0 最佳;1 最差)
|
||||
WindSpeedInBeaufort=风速(单位:Bft)
|
||||
DistanceAtStart=起航前与起航线的距离
|
||||
SpeedWhenStarting=起航时的速度
|
||||
SpeedTenSecondsBeforeStart=起航前 10 秒的速度
|
||||
RankAtFirstMark=在第一个标志的名次
|
||||
NumberOfManeuvers=操作数量
|
||||
NumberOfTacks=迎风转向次数
|
||||
NumberOfJibes=顺风转向次数
|
||||
NumberOfPenaltyCircles=惩罚圈数
|
||||
RankGainsOrLosses=名次进阶或落后
|
||||
DistanceToStarboardSideAtStart=与右舷的距离(长度百分比)
|
||||
NumberOfPodiumFinish=跻身颁奖台次数
|
||||
NumberOfWins=获胜次数
|
||||
RankGainsOrLossesBetweenFirstMarkAndFinish=名次进阶或落后(第一个标志 -> 结束)
|
||||
IsTracked=是否跟踪
|
||||
NumberOfCompetitorFixes=参赛队修复次数
|
||||
NumberOfMarkFixes=标志修复次数
|
||||
+268
@@ -0,0 +1,268 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:43:14Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties" source-language="en" target-language="ja">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="2476e2fa472ba5cb7a43d465af58c5c7" form="base64">H4sIAAAAAAAAAIVVTW8aMRC9+1fMpVJyiATptypXAiIIFfkQoEY9mt0BLBYb2SaU/vrO2Muuk0b04p1582zPjO23sx1iKWc8ijjO0cywsKb0fVxahykG3Y6HRQTEjfZBmQLnTj1jRbNPAJwQca+2KHkQE1zNjzuU9AU2xEzpanwj+QP3++0CnfiFykkemJ2wyK/D9ypoa1Slw1FmtugVzprjVtZfMcWVCkHJ+isGdu889hwqmUxgW/StCoNKeS/ZgmiKYYUYZBzFVBUoeaAVtjsMOlgnWzMuEOeKOaqt5IESVyW6hVWu5Mq0Wd3YrdJmisFpfEY3WJMnM5qP+5wjc9xzS86vuPJi9Dgb6t/naMS4Igqtd6fc5pFKJua5CUyDmpdSnaLfV+F/CUOipSkPy7Zt/60U7BJaus9bOnJ2v8ubBxHJKXmUe8aNyWt9URAT8tzibaPti/aQRztP/Tr1TTxpU86CQ7MK67Hpo9rTUwiSYTjhoA2cIqK/DB05UNWWra6c6NU6gNKO3evaXTjEP8jIezlCEyrMoA/yzlJBKuTgRzl06NcZ8knS9tasMuizvKXl4UC5sftFjlQVA19P3FUNdDuEWJdy7Mqf2laUBvgGu5a3e+d0oQzS86ro8T3jrCARGJv0SmoMPIPcAMd34KJDWuHDN+jCgY4yXKb+sZC8bp6P6sKdW4ZGWXphFhQxGmEJlpIiBFRIRtKqpzWJFbt8wEmnDgQlCp/zm4qW1n4ta/W6U2U2vTDUlDXfGMk+7xoRYEgkWXpY3lFX9nSHvUwI36AGa1hzVWxyRvSb6A9Njcqi0W+ij0hSF44D7YrqBa0OQB2JWY/oJfkHN7HeEzfmHSGwDhLYKrflHiS10uWb7W4IwAy4eMfbTuI9v2zzs6Xeb4faaL/Os4swJDwrhw48L4LdfzPvYzggmuYEeqasN3irJLjo1scCV9/rHS/F2NOfqNjQr2nsoTabLNpnHwUxS6iNQNLK9qTd5jU57plofwGIogiCRAcAAA==</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:06Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Speed" resname="Speed">
|
||||
<source>Speed</source>
|
||||
<target>速力</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SpeedTenSecondsBefore" resname="SpeedTenSecondsBefore">
|
||||
<source>Speed 10s before</source>
|
||||
<target>10 秒前の速力</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="DistanceTraveled" resname="DistanceTraveled">
|
||||
<source>Distance Traveled</source>
|
||||
<target state="translated">移動した距離</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Name" resname="Name">
|
||||
<source>Name</source>
|
||||
<target state="translated">名称</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegType" resname="LegType">
|
||||
<source>Leg Type</source>
|
||||
<target state="translated">レグタイプ</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SailID" resname="SailID">
|
||||
<source>Sail Number</source>
|
||||
<target>セールナンバー</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Year" resname="Year">
|
||||
<source>Year</source>
|
||||
<target>年</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegNumber" resname="LegNumber">
|
||||
<source>Leg Number</source>
|
||||
<target>レグ番号</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Nationality" resname="Nationality">
|
||||
<source>Nationality</source>
|
||||
<target state="translated">国籍</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Acronym" resname="Acronym">
|
||||
<source>Acronym</source>
|
||||
<target>頭字語</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Regatta" resname="Regatta">
|
||||
<source>Regatta</source>
|
||||
<target state="translated">レガッタ</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="CourseArea" resname="CourseArea">
|
||||
<source>Course Area</source>
|
||||
<target>コースエリア</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="BoatClass" resname="BoatClass">
|
||||
<source>Boat Class</source>
|
||||
<target state="translated">艇種</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Fleet" resname="Fleet">
|
||||
<source>Fleet</source>
|
||||
<target state="translated">フリート</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Race" resname="Race">
|
||||
<source>Race</source>
|
||||
<target state="translated">レース</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Competitor" resname="Competitor">
|
||||
<source>Competitor</source>
|
||||
<target>競技者</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Boat" resname="Boat">
|
||||
<source>Boat</source>
|
||||
<target>艇</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Team" resname="Team">
|
||||
<source>Team</source>
|
||||
<target state="translated">チーム</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LeaderboardSailingDomainRetrieverChain" resname="LeaderboardSailingDomainRetrieverChain">
|
||||
<source>Leaderboards</source>
|
||||
<target state="translated">リーダーボード</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceSailingDomainRetrieverChain" resname="RaceSailingDomainRetrieverChain">
|
||||
<source>Races</source>
|
||||
<target>レース</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegSailingDomainRetrieverChain" resname="LegSailingDomainRetrieverChain">
|
||||
<source>Legs</source>
|
||||
<target state="translated">レグ</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="GPSFixSailingDomainRetrieverChain" resname="GPSFixSailingDomainRetrieverChain">
|
||||
<source>GPS-Fixes</source>
|
||||
<target>GPS フィックス</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="MarkPassingSailingDomainRetrieverChain" resname="MarkPassingSailingDomainRetrieverChain">
|
||||
<source>Mark Passings</source>
|
||||
<target>マーク通過</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceResultSailingDomainRetrieverChain" resname="RaceResultSailingDomainRetrieverChain">
|
||||
<source>Race Results</source>
|
||||
<target>レース結果</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceOfCompetitorSailingDomainRetrieverChain" resname="RaceOfCompetitorSailingDomainRetrieverChain">
|
||||
<source>Races of Competitors</source>
|
||||
<target>競技者のレース</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LeaderboardGroup" resname="LeaderboardGroup">
|
||||
<source>Leaderboard Group</source>
|
||||
<target state="translated">リーダーボードグループ</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Leaderboard" resname="Leaderboard">
|
||||
<source>Leaderboard</source>
|
||||
<target state="translated">リーダーボード</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Leg" resname="Leg">
|
||||
<source>Leg</source>
|
||||
<target state="translated">レグ</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="MarkPassing" resname="MarkPassing">
|
||||
<source>Mark Passing</source>
|
||||
<target>マーク通過</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegOfCompetitor" resname="LegOfCompetitor">
|
||||
<source>Leg of competitor</source>
|
||||
<target>競技者のレグ</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="GpsFix" resname="GpsFix">
|
||||
<source>GPS-Fix</source>
|
||||
<target>GPS フィックス</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindStrengthInBeaufort" resname="WindStrengthInBeaufort">
|
||||
<source>Wind Strength in Beaufort</source>
|
||||
<target>ビューフォート風力</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft0" resname="Bft0">
|
||||
<source>Calm</source>
|
||||
<target>平穏</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft1" resname="Bft1">
|
||||
<source>Light air</source>
|
||||
<target>至軽風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft2" resname="Bft2">
|
||||
<source>Light breeze</source>
|
||||
<target>軽風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft3" resname="Bft3">
|
||||
<source>Gentle breeze</source>
|
||||
<target>軟風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft4" resname="Bft4">
|
||||
<source>Moderate breeze</source>
|
||||
<target>和風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft5" resname="Bft5">
|
||||
<source>Fresh breeze</source>
|
||||
<target>疾風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft6" resname="Bft6">
|
||||
<source>Strong breeze</source>
|
||||
<target>雄風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft7" resname="Bft7">
|
||||
<source>High wind</source>
|
||||
<target>強風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft8" resname="Bft8">
|
||||
<source>Gale</source>
|
||||
<target>疾強風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft9" resname="Bft9">
|
||||
<source>Strong gale</source>
|
||||
<target>大強風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft10" resname="Bft10">
|
||||
<source>Storm</source>
|
||||
<target>全強風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft11" resname="Bft11">
|
||||
<source>Violent storm</source>
|
||||
<target>暴風</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft12" resname="Bft12">
|
||||
<source>Hurricane</source>
|
||||
<target>颶風 (ぐふう)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RelativeScoreInRace" resname="RelativeScoreInRace">
|
||||
<source>Relative score in race (0 best; 1 worst)</source>
|
||||
<target>レース中の相対スコア (0 が最高、1 が最低)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindSpeedInBeaufort" resname="WindSpeedInBeaufort">
|
||||
<source>Wind speed in Bft</source>
|
||||
<target>風速 (Bft)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="DistanceAtStart" resname="DistanceAtStart">
|
||||
<source>Distance to start at start</source>
|
||||
<target>スタート時のスタートラインまでの距離</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SpeedWhenStarting" resname="SpeedWhenStarting">
|
||||
<source>Speed when starting</source>
|
||||
<target>スタート時の速力</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SpeedTenSecondsBeforeStart" resname="SpeedTenSecondsBeforeStart">
|
||||
<source>Speed 10s before start</source>
|
||||
<target>スタート 10 秒前の速力</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RankAtFirstMark" resname="RankAtFirstMark">
|
||||
<source>Rank at First Mark</source>
|
||||
<target>第一マークでのランク</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfManeuvers" resname="NumberOfManeuvers">
|
||||
<source>Number of Maneuvers</source>
|
||||
<target>マニューバー回数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfTacks" resname="NumberOfTacks">
|
||||
<source>Number of Tacks</source>
|
||||
<target>タック回数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfJibes" resname="NumberOfJibes">
|
||||
<source>Number of Jibes</source>
|
||||
<target>ジャイブ回数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfPenaltyCircles" resname="NumberOfPenaltyCircles">
|
||||
<source>Number of Penalty Circles</source>
|
||||
<target>ペナルティー回転の数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RankGainsOrLosses" resname="RankGainsOrLosses">
|
||||
<source>Rank Gains or Losses</source>
|
||||
<target>ランク上下</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="DistanceToStarboardSideAtStart" resname="DistanceToStarboardSideAtStart">
|
||||
<source>Distance to Starboard Side (% of Length)</source>
|
||||
<target>スターボード側までの距離 (長さの %)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfPodiumFinish" resname="NumberOfPodiumFinish">
|
||||
<source>Number of Podium Finishes</source>
|
||||
<target>表彰台回数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfWins" resname="NumberOfWins">
|
||||
<source>Number of Wins</source>
|
||||
<target>優勝回数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RankGainsOrLossesBetweenFirstMarkAndFinish" resname="RankGainsOrLossesBetweenFirstMarkAndFinish">
|
||||
<source>Rank Gains or Losses (1st Mark -> Finish)</source>
|
||||
<target>ランク上下 (第一マーク -> フィニッシュ)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="IsTracked" resname="IsTracked">
|
||||
<source>Is Tracked</source>
|
||||
<target>追跡済</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfCompetitorFixes" resname="NumberOfCompetitorFixes">
|
||||
<source>Number of Competitor Fixes</source>
|
||||
<target>競技者フィックスの数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfMarkFixes" resname="NumberOfMarkFixes">
|
||||
<source>Number of Mark Fixes</source>
|
||||
<target>マークフィックスの数</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+268
@@ -0,0 +1,268 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T13:02:56Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties" source-language="en" target-language="ru">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="2476e2fa472ba5cb7a43d465af58c5c7" form="base64">H4sIAAAAAAAAAIVVTW8aMRC9+1fMpVJyiATptypXAiIIFfkQoEY9mt0BLBYb2SaU/vrO2Muuk0b04p1582zPjO23sx1iKWc8ijjO0cywsKb0fVxahykG3Y6HRQTEjfZBmQLnTj1jRbNPAJwQca+2KHkQE1zNjzuU9AU2xEzpanwj+QP3++0CnfiFykkemJ2wyK/D9ypoa1Slw1FmtugVzprjVtZfMcWVCkHJ+isGdu889hwqmUxgW/StCoNKeS/ZgmiKYYUYZBzFVBUoeaAVtjsMOlgnWzMuEOeKOaqt5IESVyW6hVWu5Mq0Wd3YrdJmisFpfEY3WJMnM5qP+5wjc9xzS86vuPJi9Dgb6t/naMS4Igqtd6fc5pFKJua5CUyDmpdSnaLfV+F/CUOipSkPy7Zt/60U7BJaus9bOnJ2v8ubBxHJKXmUe8aNyWt9URAT8tzibaPti/aQRztP/Tr1TTxpU86CQ7MK67Hpo9rTUwiSYTjhoA2cIqK/DB05UNWWra6c6NU6gNKO3evaXTjEP8jIezlCEyrMoA/yzlJBKuTgRzl06NcZ8knS9tasMuizvKXl4UC5sftFjlQVA19P3FUNdDuEWJdy7Mqf2laUBvgGu5a3e+d0oQzS86ro8T3jrCARGJv0SmoMPIPcAMd34KJDWuHDN+jCgY4yXKb+sZC8bp6P6sKdW4ZGWXphFhQxGmEJlpIiBFRIRtKqpzWJFbt8wEmnDgQlCp/zm4qW1n4ta/W6U2U2vTDUlDXfGMk+7xoRYEgkWXpY3lFX9nSHvUwI36AGa1hzVWxyRvSb6A9Njcqi0W+ij0hSF44D7YrqBa0OQB2JWY/oJfkHN7HeEzfmHSGwDhLYKrflHiS10uWb7W4IwAy4eMfbTuI9v2zzs6Xeb4faaL/Os4swJDwrhw48L4LdfzPvYzggmuYEeqasN3irJLjo1scCV9/rHS/F2NOfqNjQr2nsoTabLNpnHwUxS6iNQNLK9qTd5jU57plofwGIogiCRAcAAA==</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:06Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Speed" resname="Speed">
|
||||
<source>Speed</source>
|
||||
<target state="translated">Скорость</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SpeedTenSecondsBefore" resname="SpeedTenSecondsBefore">
|
||||
<source>Speed 10s before</source>
|
||||
<target>Скорость за 10 с до</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="DistanceTraveled" resname="DistanceTraveled">
|
||||
<source>Distance Traveled</source>
|
||||
<target state="translated">Пройденная дистанция</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Name" resname="Name">
|
||||
<source>Name</source>
|
||||
<target state="translated">Название</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegType" resname="LegType">
|
||||
<source>Leg Type</source>
|
||||
<target state="translated">Тип отрезка</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SailID" resname="SailID">
|
||||
<source>Sail Number</source>
|
||||
<target>Номер на парусе</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Year" resname="Year">
|
||||
<source>Year</source>
|
||||
<target>Год</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegNumber" resname="LegNumber">
|
||||
<source>Leg Number</source>
|
||||
<target>Номер отрезка</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Nationality" resname="Nationality">
|
||||
<source>Nationality</source>
|
||||
<target>Гражданство</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Acronym" resname="Acronym">
|
||||
<source>Acronym</source>
|
||||
<target>Сокращение</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Regatta" resname="Regatta">
|
||||
<source>Regatta</source>
|
||||
<target>Регата</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="CourseArea" resname="CourseArea">
|
||||
<source>Course Area</source>
|
||||
<target>Зона гонки</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="BoatClass" resname="BoatClass">
|
||||
<source>Boat Class</source>
|
||||
<target>Класс лодок</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Fleet" resname="Fleet">
|
||||
<source>Fleet</source>
|
||||
<target>Флот</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Race" resname="Race">
|
||||
<source>Race</source>
|
||||
<target>Гонка</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Competitor" resname="Competitor">
|
||||
<source>Competitor</source>
|
||||
<target>Участник</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Boat" resname="Boat">
|
||||
<source>Boat</source>
|
||||
<target>Лодка</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Team" resname="Team">
|
||||
<source>Team</source>
|
||||
<target>Команда</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LeaderboardSailingDomainRetrieverChain" resname="LeaderboardSailingDomainRetrieverChain">
|
||||
<source>Leaderboards</source>
|
||||
<target>Таблицы лидеров</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceSailingDomainRetrieverChain" resname="RaceSailingDomainRetrieverChain">
|
||||
<source>Races</source>
|
||||
<target>Гонки</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegSailingDomainRetrieverChain" resname="LegSailingDomainRetrieverChain">
|
||||
<source>Legs</source>
|
||||
<target>Отрезки</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="GPSFixSailingDomainRetrieverChain" resname="GPSFixSailingDomainRetrieverChain">
|
||||
<source>GPS-Fixes</source>
|
||||
<target>Замеры GPS</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="MarkPassingSailingDomainRetrieverChain" resname="MarkPassingSailingDomainRetrieverChain">
|
||||
<source>Mark Passings</source>
|
||||
<target>Прохождения отметок</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceResultSailingDomainRetrieverChain" resname="RaceResultSailingDomainRetrieverChain">
|
||||
<source>Race Results</source>
|
||||
<target>Результаты гонки</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceOfCompetitorSailingDomainRetrieverChain" resname="RaceOfCompetitorSailingDomainRetrieverChain">
|
||||
<source>Races of Competitors</source>
|
||||
<target>Гонки участников</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LeaderboardGroup" resname="LeaderboardGroup">
|
||||
<source>Leaderboard Group</source>
|
||||
<target>Группа таблиц лидеров</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Leaderboard" resname="Leaderboard">
|
||||
<source>Leaderboard</source>
|
||||
<target>Таблица лидеров</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Leg" resname="Leg">
|
||||
<source>Leg</source>
|
||||
<target>Отрезок</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="MarkPassing" resname="MarkPassing">
|
||||
<source>Mark Passing</source>
|
||||
<target>Прохождение отметки</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegOfCompetitor" resname="LegOfCompetitor">
|
||||
<source>Leg of competitor</source>
|
||||
<target>Отрезок участника</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="GpsFix" resname="GpsFix">
|
||||
<source>GPS-Fix</source>
|
||||
<target>Замер GPS</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindStrengthInBeaufort" resname="WindStrengthInBeaufort">
|
||||
<source>Wind Strength in Beaufort</source>
|
||||
<target>Сила ветра по шкале Бофорта</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft0" resname="Bft0">
|
||||
<source>Calm</source>
|
||||
<target>Штиль</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft1" resname="Bft1">
|
||||
<source>Light air</source>
|
||||
<target>Тихий</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft2" resname="Bft2">
|
||||
<source>Light breeze</source>
|
||||
<target>Легкий</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft3" resname="Bft3">
|
||||
<source>Gentle breeze</source>
|
||||
<target>Слабый</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft4" resname="Bft4">
|
||||
<source>Moderate breeze</source>
|
||||
<target>Умеренный</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft5" resname="Bft5">
|
||||
<source>Fresh breeze</source>
|
||||
<target>Свежий</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft6" resname="Bft6">
|
||||
<source>Strong breeze</source>
|
||||
<target>Сильный</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft7" resname="Bft7">
|
||||
<source>High wind</source>
|
||||
<target>Крепкий</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft8" resname="Bft8">
|
||||
<source>Gale</source>
|
||||
<target>Очень крепкий</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft9" resname="Bft9">
|
||||
<source>Strong gale</source>
|
||||
<target>Шторм</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft10" resname="Bft10">
|
||||
<source>Storm</source>
|
||||
<target>Сильный шторм</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft11" resname="Bft11">
|
||||
<source>Violent storm</source>
|
||||
<target>Жестокий шторм</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft12" resname="Bft12">
|
||||
<source>Hurricane</source>
|
||||
<target>Ураган</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RelativeScoreInRace" resname="RelativeScoreInRace">
|
||||
<source>Relative score in race (0 best; 1 worst)</source>
|
||||
<target>Относительная оценка в гонке (0 лучшая; 1 худшая)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindSpeedInBeaufort" resname="WindSpeedInBeaufort">
|
||||
<source>Wind speed in Bft</source>
|
||||
<target>Скорость ветра по шкале Бофорта</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="DistanceAtStart" resname="DistanceAtStart">
|
||||
<source>Distance to start at start</source>
|
||||
<target>Дистанция до старта при старте</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SpeedWhenStarting" resname="SpeedWhenStarting">
|
||||
<source>Speed when starting</source>
|
||||
<target>Скорость при старте</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SpeedTenSecondsBeforeStart" resname="SpeedTenSecondsBeforeStart">
|
||||
<source>Speed 10s before start</source>
|
||||
<target>Скорость за 10 с до старта</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RankAtFirstMark" resname="RankAtFirstMark">
|
||||
<source>Rank at First Mark</source>
|
||||
<target>Ранг на первой отметке</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfManeuvers" resname="NumberOfManeuvers">
|
||||
<source>Number of Maneuvers</source>
|
||||
<target>Число маневров</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfTacks" resname="NumberOfTacks">
|
||||
<source>Number of Tacks</source>
|
||||
<target>Число поворотов оверштаг</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfJibes" resname="NumberOfJibes">
|
||||
<source>Number of Jibes</source>
|
||||
<target>Число поворотов фордевинд</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfPenaltyCircles" resname="NumberOfPenaltyCircles">
|
||||
<source>Number of Penalty Circles</source>
|
||||
<target>Число штрафных кругов</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RankGainsOrLosses" resname="RankGainsOrLosses">
|
||||
<source>Rank Gains or Losses</source>
|
||||
<target>Повышения или понижения ранга</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="DistanceToStarboardSideAtStart" resname="DistanceToStarboardSideAtStart">
|
||||
<source>Distance to Starboard Side (% of Length)</source>
|
||||
<target>Дистанция до правой стороны (% длины)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfPodiumFinish" resname="NumberOfPodiumFinish">
|
||||
<source>Number of Podium Finishes</source>
|
||||
<target>Число призовых финишей</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfWins" resname="NumberOfWins">
|
||||
<source>Number of Wins</source>
|
||||
<target>Число побед</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RankGainsOrLossesBetweenFirstMarkAndFinish" resname="RankGainsOrLossesBetweenFirstMarkAndFinish">
|
||||
<source>Rank Gains or Losses (1st Mark -> Finish)</source>
|
||||
<target>Повышения или понижения ранга (1-я отметка -> финиш)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="IsTracked" resname="IsTracked">
|
||||
<source>Is Tracked</source>
|
||||
<target>Отслеживается</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfCompetitorFixes" resname="NumberOfCompetitorFixes">
|
||||
<source>Number of Competitor Fixes</source>
|
||||
<target>Число замеров участника</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfMarkFixes" resname="NumberOfMarkFixes">
|
||||
<source>Number of Mark Fixes</source>
|
||||
<target>Число замеров отметки</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+268
@@ -0,0 +1,268 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:43:14Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties" source-language="en" target-language="zh-CN">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="2476e2fa472ba5cb7a43d465af58c5c7" form="base64">H4sIAAAAAAAAAIVVTW8aMRC9+1fMpVJyiATptypXAiIIFfkQoEY9mt0BLBYb2SaU/vrO2Muuk0b04p1582zPjO23sx1iKWc8ijjO0cywsKb0fVxahykG3Y6HRQTEjfZBmQLnTj1jRbNPAJwQca+2KHkQE1zNjzuU9AU2xEzpanwj+QP3++0CnfiFykkemJ2wyK/D9ypoa1Slw1FmtugVzprjVtZfMcWVCkHJ+isGdu889hwqmUxgW/StCoNKeS/ZgmiKYYUYZBzFVBUoeaAVtjsMOlgnWzMuEOeKOaqt5IESVyW6hVWu5Mq0Wd3YrdJmisFpfEY3WJMnM5qP+5wjc9xzS86vuPJi9Dgb6t/naMS4Igqtd6fc5pFKJua5CUyDmpdSnaLfV+F/CUOipSkPy7Zt/60U7BJaus9bOnJ2v8ubBxHJKXmUe8aNyWt9URAT8tzibaPti/aQRztP/Tr1TTxpU86CQ7MK67Hpo9rTUwiSYTjhoA2cIqK/DB05UNWWra6c6NU6gNKO3evaXTjEP8jIezlCEyrMoA/yzlJBKuTgRzl06NcZ8knS9tasMuizvKXl4UC5sftFjlQVA19P3FUNdDuEWJdy7Mqf2laUBvgGu5a3e+d0oQzS86ro8T3jrCARGJv0SmoMPIPcAMd34KJDWuHDN+jCgY4yXKb+sZC8bp6P6sKdW4ZGWXphFhQxGmEJlpIiBFRIRtKqpzWJFbt8wEmnDgQlCp/zm4qW1n4ta/W6U2U2vTDUlDXfGMk+7xoRYEgkWXpY3lFX9nSHvUwI36AGa1hzVWxyRvSb6A9Njcqi0W+ij0hSF44D7YrqBa0OQB2JWY/oJfkHN7HeEzfmHSGwDhLYKrflHiS10uWb7W4IwAy4eMfbTuI9v2zzs6Xeb4faaL/Os4swJDwrhw48L4LdfzPvYzggmuYEeqasN3irJLjo1scCV9/rHS/F2NOfqNjQr2nsoTabLNpnHwUxS6iNQNLK9qTd5jU57plofwGIogiCRAcAAA==</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:06Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Speed" resname="Speed">
|
||||
<source>Speed</source>
|
||||
<target state="translated">速度</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SpeedTenSecondsBefore" resname="SpeedTenSecondsBefore">
|
||||
<source>Speed 10s before</source>
|
||||
<target>前 10 秒的速度</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="DistanceTraveled" resname="DistanceTraveled">
|
||||
<source>Distance Traveled</source>
|
||||
<target state="translated">航行距离</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Name" resname="Name">
|
||||
<source>Name</source>
|
||||
<target state="translated">名称</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegType" resname="LegType">
|
||||
<source>Leg Type</source>
|
||||
<target state="translated">航段形式</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SailID" resname="SailID">
|
||||
<source>Sail Number</source>
|
||||
<target>帆号</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Year" resname="Year">
|
||||
<source>Year</source>
|
||||
<target>年份</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegNumber" resname="LegNumber">
|
||||
<source>Leg Number</source>
|
||||
<target>航段编号</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Nationality" resname="Nationality">
|
||||
<source>Nationality</source>
|
||||
<target state="translated">国籍</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Acronym" resname="Acronym">
|
||||
<source>Acronym</source>
|
||||
<target>首字母缩略词</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Regatta" resname="Regatta">
|
||||
<source>Regatta</source>
|
||||
<target state="translated">比赛</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="CourseArea" resname="CourseArea">
|
||||
<source>Course Area</source>
|
||||
<target>场地区域</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="BoatClass" resname="BoatClass">
|
||||
<source>Boat Class</source>
|
||||
<target state="translated">船只级别</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Fleet" resname="Fleet">
|
||||
<source>Fleet</source>
|
||||
<target state="translated">船队</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Race" resname="Race">
|
||||
<source>Race</source>
|
||||
<target state="translated">比赛轮次</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Competitor" resname="Competitor">
|
||||
<source>Competitor</source>
|
||||
<target>参赛队</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Boat" resname="Boat">
|
||||
<source>Boat</source>
|
||||
<target>船只</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Team" resname="Team">
|
||||
<source>Team</source>
|
||||
<target state="translated">团队</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LeaderboardSailingDomainRetrieverChain" resname="LeaderboardSailingDomainRetrieverChain">
|
||||
<source>Leaderboards</source>
|
||||
<target state="translated">积分榜</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceSailingDomainRetrieverChain" resname="RaceSailingDomainRetrieverChain">
|
||||
<source>Races</source>
|
||||
<target>比赛轮次</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegSailingDomainRetrieverChain" resname="LegSailingDomainRetrieverChain">
|
||||
<source>Legs</source>
|
||||
<target state="translated">航段</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="GPSFixSailingDomainRetrieverChain" resname="GPSFixSailingDomainRetrieverChain">
|
||||
<source>GPS-Fixes</source>
|
||||
<target>GPS 修复</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="MarkPassingSailingDomainRetrieverChain" resname="MarkPassingSailingDomainRetrieverChain">
|
||||
<source>Mark Passings</source>
|
||||
<target>绕标</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceResultSailingDomainRetrieverChain" resname="RaceResultSailingDomainRetrieverChain">
|
||||
<source>Race Results</source>
|
||||
<target>比赛轮次结果</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceOfCompetitorSailingDomainRetrieverChain" resname="RaceOfCompetitorSailingDomainRetrieverChain">
|
||||
<source>Races of Competitors</source>
|
||||
<target>参赛队的比赛轮次</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LeaderboardGroup" resname="LeaderboardGroup">
|
||||
<source>Leaderboard Group</source>
|
||||
<target state="translated">积分榜分组</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Leaderboard" resname="Leaderboard">
|
||||
<source>Leaderboard</source>
|
||||
<target state="translated">积分榜</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Leg" resname="Leg">
|
||||
<source>Leg</source>
|
||||
<target state="translated">航段</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="MarkPassing" resname="MarkPassing">
|
||||
<source>Mark Passing</source>
|
||||
<target>绕标</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegOfCompetitor" resname="LegOfCompetitor">
|
||||
<source>Leg of competitor</source>
|
||||
<target>参赛队的航段</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="GpsFix" resname="GpsFix">
|
||||
<source>GPS-Fix</source>
|
||||
<target>GPS 修复</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindStrengthInBeaufort" resname="WindStrengthInBeaufort">
|
||||
<source>Wind Strength in Beaufort</source>
|
||||
<target>风力(蒲福风级)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft0" resname="Bft0">
|
||||
<source>Calm</source>
|
||||
<target>无风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft1" resname="Bft1">
|
||||
<source>Light air</source>
|
||||
<target>软风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft2" resname="Bft2">
|
||||
<source>Light breeze</source>
|
||||
<target>轻风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft3" resname="Bft3">
|
||||
<source>Gentle breeze</source>
|
||||
<target>微风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft4" resname="Bft4">
|
||||
<source>Moderate breeze</source>
|
||||
<target>和风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft5" resname="Bft5">
|
||||
<source>Fresh breeze</source>
|
||||
<target>劲风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft6" resname="Bft6">
|
||||
<source>Strong breeze</source>
|
||||
<target>强风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft7" resname="Bft7">
|
||||
<source>High wind</source>
|
||||
<target>疾风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft8" resname="Bft8">
|
||||
<source>Gale</source>
|
||||
<target>大风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft9" resname="Bft9">
|
||||
<source>Strong gale</source>
|
||||
<target>烈风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft10" resname="Bft10">
|
||||
<source>Storm</source>
|
||||
<target>暴风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft11" resname="Bft11">
|
||||
<source>Violent storm</source>
|
||||
<target>飓风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Bft12" resname="Bft12">
|
||||
<source>Hurricane</source>
|
||||
<target>台风</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RelativeScoreInRace" resname="RelativeScoreInRace">
|
||||
<source>Relative score in race (0 best; 1 worst)</source>
|
||||
<target>比赛轮次中的相对得分(0 最佳;1 最差)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindSpeedInBeaufort" resname="WindSpeedInBeaufort">
|
||||
<source>Wind speed in Bft</source>
|
||||
<target>风速(单位:Bft)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="DistanceAtStart" resname="DistanceAtStart">
|
||||
<source>Distance to start at start</source>
|
||||
<target>起航前与起航线的距离</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SpeedWhenStarting" resname="SpeedWhenStarting">
|
||||
<source>Speed when starting</source>
|
||||
<target>起航时的速度</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SpeedTenSecondsBeforeStart" resname="SpeedTenSecondsBeforeStart">
|
||||
<source>Speed 10s before start</source>
|
||||
<target>起航前 10 秒的速度</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RankAtFirstMark" resname="RankAtFirstMark">
|
||||
<source>Rank at First Mark</source>
|
||||
<target>在第一个标志的名次</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfManeuvers" resname="NumberOfManeuvers">
|
||||
<source>Number of Maneuvers</source>
|
||||
<target>操作数量</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfTacks" resname="NumberOfTacks">
|
||||
<source>Number of Tacks</source>
|
||||
<target>迎风转向次数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfJibes" resname="NumberOfJibes">
|
||||
<source>Number of Jibes</source>
|
||||
<target>顺风转向次数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfPenaltyCircles" resname="NumberOfPenaltyCircles">
|
||||
<source>Number of Penalty Circles</source>
|
||||
<target>惩罚圈数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RankGainsOrLosses" resname="RankGainsOrLosses">
|
||||
<source>Rank Gains or Losses</source>
|
||||
<target>名次进阶或落后</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="DistanceToStarboardSideAtStart" resname="DistanceToStarboardSideAtStart">
|
||||
<source>Distance to Starboard Side (% of Length)</source>
|
||||
<target>与右舷的距离(长度百分比)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfPodiumFinish" resname="NumberOfPodiumFinish">
|
||||
<source>Number of Podium Finishes</source>
|
||||
<target>跻身颁奖台次数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfWins" resname="NumberOfWins">
|
||||
<source>Number of Wins</source>
|
||||
<target>获胜次数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RankGainsOrLossesBetweenFirstMarkAndFinish" resname="RankGainsOrLossesBetweenFirstMarkAndFinish">
|
||||
<source>Rank Gains or Losses (1st Mark -> Finish)</source>
|
||||
<target>名次进阶或落后(第一个标志 -> 结束)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="IsTracked" resname="IsTracked">
|
||||
<source>Is Tracked</source>
|
||||
<target>是否跟踪</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfCompetitorFixes" resname="NumberOfCompetitorFixes">
|
||||
<source>Number of Competitor Fixes</source>
|
||||
<target>参赛队修复次数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="NumberOfMarkFixes" resname="NumberOfMarkFixes">
|
||||
<source>Number of Mark Fixes</source>
|
||||
<target>标志修复次数</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+1
-1
@@ -76,7 +76,7 @@ public enum BoatClassMasterdata {
|
||||
OPEN_BIC("O'pen BIC", true, 2.75, 1.14, BoatHullType.MONOHULL, false, "OpenBIC"),
|
||||
OPTIMIST ("Optimist", true, 2.34, 1.07, BoatHullType.MONOHULL, false, "Opti", "Optimist Dinghy"),
|
||||
PIRATE ("Pirate", true, 5.00, 1.61, BoatHullType.MONOHULL, false, "Pirat", "Piraten"),
|
||||
PLATU_25 ("Platu 25", true, 7.53, 2.62, BoatHullType.MONOHULL, true, "Platu", "Platu-25", "PLA", "B25"),
|
||||
PLATU_25 ("Platu 25", true, 7.53, 2.62, BoatHullType.MONOHULL, true, "Platu", "Platu-25", "PLA", "B25", "Platu25"),
|
||||
PWA ("PWA", true, 5.0, 0.6, BoatHullType.MONOHULL, true, "Professional Windsurfers Association", "PWA World Tour"),
|
||||
RC44 ("RC44", true, 13.35, 2.75, BoatHullType.MONOHULL, true),
|
||||
RS_X ("RS:X", true, 2.86, 0.93, BoatHullType.SURFERBOARD, false, "RS-X", "RSX", "RS:X"),
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
trackingInvitationFor=招待の追跡:
|
||||
scanQRCodeOrVisitUrlToRegisterAs={0} アプリがインストールされていることを確認してください。その上で、以下の QR コードをスキャンするか、スマートフォンを使用してリンクをクリックして登録します:
|
||||
welcomeTo=ようこそ:
|
||||
iOSUsers=iOS アプリ起動
|
||||
androidUsers=Android アプリ起動
|
||||
alternativelyVisitThisLink=アプリがすでにインストールされているデバイス上でこのメールを参照している場合は、下記をクリックして起動します:
|
||||
buoyTender=設標船
|
||||
appStoreInstallText=まだアプリがない場合は、インストールしてください:
|
||||
appIos=iOS アプリのインストール
|
||||
appAndroid=Android アプリのインストール
|
||||
buoyPingerAppName=SAP Sailing Buoy Pinger
|
||||
sailInSightAppName=SAP Sail InSight
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
trackingInvitationFor=Приглашение на отслеживание для
|
||||
scanQRCodeOrVisitUrlToRegisterAs=Убедитесь, что приложение {0} установлено. Затем отсканируйте следующий QR-код или откройте ссылку на смартфоне, чтобы зарегистрироваться как
|
||||
welcomeTo=Вас приветствует
|
||||
iOSUsers=Запустить приложение для iOS
|
||||
androidUsers=Запустить приложение для Android
|
||||
alternativelyVisitThisLink=Если вы читаете это сообщение на устройстве с уже установленным приложением, просто щелкните ниже, чтобы начать:
|
||||
buoyTender=лоцмейстерское судно
|
||||
appStoreInstallText=Если у вас еще нет приложения, установите его:
|
||||
appIos=Установить приложение для iOS
|
||||
appAndroid=Установить приложение для Android
|
||||
buoyPingerAppName=SAP Sailing Buoy Pinger
|
||||
sailInSightAppName=SAP Sail InSight
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
trackingInvitationFor=跟踪邀请 -
|
||||
scanQRCodeOrVisitUrlToRegisterAs=确保已安装 {0} 应用。然后,使用智能手机扫描以下二维码或点击链接注册
|
||||
welcomeTo=欢迎使用
|
||||
iOSUsers=启动 iOS 应用
|
||||
androidUsers=启动 Android 应用
|
||||
alternativelyVisitThisLink=如果在已安装该应用的设备中读取邮件,只需点击以下链接即可启动:
|
||||
buoyTender=浮标供应船
|
||||
appStoreInstallText=如果尚无该应用,请安装:
|
||||
appIos=安装 iOS 应用
|
||||
appAndroid=安装 Android 应用
|
||||
buoyPingerAppName=SAP Sailing Buoy Pinger
|
||||
sailInSightAppName=SAP Sail InSight
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
trackingInvitationFor=跟踪邀请 -
|
||||
scanQRCodeOrVisitUrlToRegisterAs=确保已安装 {0} 应用。然后,使用智能手机扫描以下二维码或点击链接注册
|
||||
welcomeTo=欢迎使用
|
||||
iOSUsers=启动 iOS 应用
|
||||
androidUsers=启动 Android 应用
|
||||
alternativelyVisitThisLink=如果在已安装该应用的设备中读取邮件,只需点击以下链接即可启动:
|
||||
buoyTender=浮标供应船
|
||||
appStoreInstallText=如果尚无该应用,请安装:
|
||||
appIos=安装 iOS 应用
|
||||
appAndroid=安装 Android 应用
|
||||
buoyPingerAppName=SAP Sailing Buoy Pinger
|
||||
sailInSightAppName=SAP Sail InSight
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:39:27Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/TrackingStringMessages.properties" source-language="en" target-language="ja">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="cdbdcb19e10086d34f715e2a7da26eef" form="base64">H4sIAAAAAAAAAF2RTU/DMAyG7/0VvnGZEGekHgYSUiVgY+3gnLXeajWNo9jbqBD/naQtbOLm+PXH+zgaTN2ROxTuRGqU2D1xyKs5C5c07DlkUhv3tnnkBlfhnYR0G2zFGzyQKIal5C+mQ5BjQBj4CK05IWiL8HX3DUvvgZyosRabW6hadJDmjQV7tpbPaeM0HjhAbanuRtWS6+AoSY5jA0hvgvqWXZzOEOb1YCQ7o625x4rzjymKBRmtyq1gkLzU2AfxmcxkxjWBqbmWllNqkm2c6SL7Ce0wwlYtyXO0khf7Ec9EzICmSb40atAbssATUYMnqhHOpO34TvjGpvLhcoYFCPXeDjPrDuMREpIkN/fZ7shDha7BkKcQdIwz432pHLCYxlT4qclSw+5GLzdPCwfUBXiLRvB36X1qL1jyuftyDu9n/D/p+hzJwDqSxm/2/tX0mJfLNZSROOE/JHuTnEnMFa6kQ6v/S2HOZz95rIJYdwIAAA==</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:05Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="trackingInvitationFor" resname="trackingInvitationFor">
|
||||
<source>Tracking Invitation for</source>
|
||||
<target>招待の追跡:</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="scanQRCodeOrVisitUrlToRegisterAs" resname="scanQRCodeOrVisitUrlToRegisterAs">
|
||||
<source>Make sure you have the <ph id="1">{0}</ph> App installed. Then scan the following QRCode or click the link using your smartphone to register as</source>
|
||||
<target><ph id="1">{0}</ph> アプリがインストールされていることを確認してください。その上で、以下の QR コードをスキャンするか、スマートフォンを使用してリンクをクリックして登録します:</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="welcomeTo" resname="welcomeTo">
|
||||
<source>Welcome to</source>
|
||||
<target>ようこそ:</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="iOSUsers" resname="iOSUsers">
|
||||
<source>Start iOS App</source>
|
||||
<target>iOS アプリ起動</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="androidUsers" resname="androidUsers">
|
||||
<source>Start Android App</source>
|
||||
<target>Android アプリ起動</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="alternativelyVisitThisLink" resname="alternativelyVisitThisLink">
|
||||
<source>If you are reading this mail on the device with the App already installed, simply click below to start:</source>
|
||||
<target>アプリがすでにインストールされているデバイス上でこのメールを参照している場合は、下記をクリックして起動します:</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="buoyTender" resname="buoyTender">
|
||||
<source>buoy tender</source>
|
||||
<target>設標船</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appStoreInstallText" resname="appStoreInstallText">
|
||||
<source>If don't have the App yet, please install:</source>
|
||||
<target>まだアプリがない場合は、インストールしてください:</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appIos" resname="appIos">
|
||||
<source>Install iOS App</source>
|
||||
<target>iOS アプリのインストール</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appAndroid" resname="appAndroid">
|
||||
<source>Install Android App</source>
|
||||
<target>Android アプリのインストール</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="buoyPingerAppName" resname="buoyPingerAppName">
|
||||
<source>SAP Sailing Buoy Pinger</source>
|
||||
<target>SAP Sailing Buoy Pinger</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="sailInSightAppName" resname="sailInSightAppName">
|
||||
<source>SAP Sail InSight</source>
|
||||
<target>SAP Sail InSight</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:44:06Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/TrackingStringMessages.properties" source-language="en" target-language="ru">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="cdbdcb19e10086d34f715e2a7da26eef" form="base64">H4sIAAAAAAAAAF2RTU/DMAyG7/0VvnGZEGekHgYSUiVgY+3gnLXeajWNo9jbqBD/naQtbOLm+PXH+zgaTN2ROxTuRGqU2D1xyKs5C5c07DlkUhv3tnnkBlfhnYR0G2zFGzyQKIal5C+mQ5BjQBj4CK05IWiL8HX3DUvvgZyosRabW6hadJDmjQV7tpbPaeM0HjhAbanuRtWS6+AoSY5jA0hvgvqWXZzOEOb1YCQ7o625x4rzjymKBRmtyq1gkLzU2AfxmcxkxjWBqbmWllNqkm2c6SL7Ce0wwlYtyXO0khf7Ec9EzICmSb40atAbssATUYMnqhHOpO34TvjGpvLhcoYFCPXeDjPrDuMREpIkN/fZ7shDha7BkKcQdIwz432pHLCYxlT4qclSw+5GLzdPCwfUBXiLRvB36X1qL1jyuftyDu9n/D/p+hzJwDqSxm/2/tX0mJfLNZSROOE/JHuTnEnMFa6kQ6v/S2HOZz95rIJYdwIAAA==</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:05Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="trackingInvitationFor" resname="trackingInvitationFor">
|
||||
<source>Tracking Invitation for</source>
|
||||
<target>Приглашение на отслеживание для</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="scanQRCodeOrVisitUrlToRegisterAs" resname="scanQRCodeOrVisitUrlToRegisterAs">
|
||||
<source>Make sure you have the <ph id="1">{0}</ph> App installed. Then scan the following QRCode or click the link using your smartphone to register as</source>
|
||||
<target>Убедитесь, что приложение <ph id="1">{0}</ph> установлено. Затем отсканируйте следующий QR-код или откройте ссылку на смартфоне, чтобы зарегистрироваться как</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="welcomeTo" resname="welcomeTo">
|
||||
<source>Welcome to</source>
|
||||
<target>Вас приветствует</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="iOSUsers" resname="iOSUsers">
|
||||
<source>Start iOS App</source>
|
||||
<target>Запустить приложение для iOS</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="androidUsers" resname="androidUsers">
|
||||
<source>Start Android App</source>
|
||||
<target>Запустить приложение для Android</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="alternativelyVisitThisLink" resname="alternativelyVisitThisLink">
|
||||
<source>If you are reading this mail on the device with the App already installed, simply click below to start:</source>
|
||||
<target>Если вы читаете это сообщение на устройстве с уже установленным приложением, просто щелкните ниже, чтобы начать:</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="buoyTender" resname="buoyTender">
|
||||
<source>buoy tender</source>
|
||||
<target>лоцмейстерское судно</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appStoreInstallText" resname="appStoreInstallText">
|
||||
<source>If don't have the App yet, please install:</source>
|
||||
<target>Если у вас еще нет приложения, установите его:</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appIos" resname="appIos">
|
||||
<source>Install iOS App</source>
|
||||
<target>Установить приложение для iOS</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appAndroid" resname="appAndroid">
|
||||
<source>Install Android App</source>
|
||||
<target>Установить приложение для Android</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="buoyPingerAppName" resname="buoyPingerAppName">
|
||||
<source>SAP Sailing Buoy Pinger</source>
|
||||
<target>SAP Sailing Buoy Pinger</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="sailInSightAppName" resname="sailInSightAppName">
|
||||
<source>SAP Sail InSight</source>
|
||||
<target>SAP Sail InSight</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:39:27Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/TrackingStringMessages.properties" source-language="en" target-language="zh-CN">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="cdbdcb19e10086d34f715e2a7da26eef" form="base64">H4sIAAAAAAAAAF2RTU/DMAyG7/0VvnGZEGekHgYSUiVgY+3gnLXeajWNo9jbqBD/naQtbOLm+PXH+zgaTN2ROxTuRGqU2D1xyKs5C5c07DlkUhv3tnnkBlfhnYR0G2zFGzyQKIal5C+mQ5BjQBj4CK05IWiL8HX3DUvvgZyosRabW6hadJDmjQV7tpbPaeM0HjhAbanuRtWS6+AoSY5jA0hvgvqWXZzOEOb1YCQ7o625x4rzjymKBRmtyq1gkLzU2AfxmcxkxjWBqbmWllNqkm2c6SL7Ce0wwlYtyXO0khf7Ec9EzICmSb40atAbssATUYMnqhHOpO34TvjGpvLhcoYFCPXeDjPrDuMREpIkN/fZ7shDha7BkKcQdIwz432pHLCYxlT4qclSw+5GLzdPCwfUBXiLRvB36X1qL1jyuftyDu9n/D/p+hzJwDqSxm/2/tX0mJfLNZSROOE/JHuTnEnMFa6kQ6v/S2HOZz95rIJYdwIAAA==</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:05Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="trackingInvitationFor" resname="trackingInvitationFor">
|
||||
<source>Tracking Invitation for</source>
|
||||
<target>跟踪邀请 - </target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="scanQRCodeOrVisitUrlToRegisterAs" resname="scanQRCodeOrVisitUrlToRegisterAs">
|
||||
<source>Make sure you have the <ph id="1">{0}</ph> App installed. Then scan the following QRCode or click the link using your smartphone to register as</source>
|
||||
<target>确保已安装 <ph id="1">{0}</ph> 应用。然后,使用智能手机扫描以下二维码或点击链接注册</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="welcomeTo" resname="welcomeTo">
|
||||
<source>Welcome to</source>
|
||||
<target>欢迎使用</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="iOSUsers" resname="iOSUsers">
|
||||
<source>Start iOS App</source>
|
||||
<target>启动 iOS 应用</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="androidUsers" resname="androidUsers">
|
||||
<source>Start Android App</source>
|
||||
<target>启动 Android 应用</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="alternativelyVisitThisLink" resname="alternativelyVisitThisLink">
|
||||
<source>If you are reading this mail on the device with the App already installed, simply click below to start:</source>
|
||||
<target>如果在已安装该应用的设备中读取邮件,只需点击以下链接即可启动:</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="buoyTender" resname="buoyTender">
|
||||
<source>buoy tender</source>
|
||||
<target>浮标供应船</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appStoreInstallText" resname="appStoreInstallText">
|
||||
<source>If don't have the App yet, please install:</source>
|
||||
<target>如果尚无该应用,请安装:</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appIos" resname="appIos">
|
||||
<source>Install iOS App</source>
|
||||
<target>安装 iOS 应用</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appAndroid" resname="appAndroid">
|
||||
<source>Install Android App</source>
|
||||
<target>安装 Android 应用</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="buoyPingerAppName" resname="buoyPingerAppName">
|
||||
<source>SAP Sailing Buoy Pinger</source>
|
||||
<target>SAP Sailing Buoy Pinger</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="sailInSightAppName" resname="sailInSightAppName">
|
||||
<source>SAP Sail InSight</source>
|
||||
<target>SAP Sail InSight</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
package com.sap.sailing.domain.common.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sse.common.util.UrlHelper;
|
||||
import com.sap.sse.util.impl.NonGwtUrlHelper;
|
||||
|
||||
public class NonGwtUrlHelperTest {
|
||||
|
||||
private final UrlHelper urlHelper = NonGwtUrlHelper.INSTANCE;
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringSimple() {
|
||||
testCase("TestTest", "TestTest");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringWithWhitespace() {
|
||||
testCase("Test%20Test", "Test Test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringWithSlash() {
|
||||
testCase("Test%2FTest", "Test/Test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringWithPlusSign() {
|
||||
testCase("Test%2BTest", "Test+Test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringWithAmpersand() {
|
||||
testCase("Test%26Test", "Test&Test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringComplex() {
|
||||
testCase("Test%20%2B%20Test%20%2F%20Test%20%26%20Test", "Test + Test / Test & Test");
|
||||
}
|
||||
|
||||
private void testCase(String expectedEncodedString, String decodedString) {
|
||||
assertEquals(expectedEncodedString, urlHelper.encodeQueryString(decodedString));
|
||||
}
|
||||
|
||||
}
|
||||
+47
-27
@@ -431,7 +431,10 @@ public class CandidateFinderImpl implements CandidateFinder {
|
||||
Map<Competitor, List<Candidate>> removedWaypointCandidates = removeWaypoints(removedWaypoints);
|
||||
Map<Competitor, Util.Pair<List<Candidate>, List<Candidate>>> newAndUpdatedCandidates = invalidateAfterCourseChange(smallestIndex);
|
||||
for (Entry<Competitor, List<Candidate>> entry : removedWaypointCandidates.entrySet()) {
|
||||
newAndUpdatedCandidates.get(entry.getKey()).getB().addAll(entry.getValue());
|
||||
final Pair<List<Candidate>, List<Candidate>> candidatesForCompetitor = newAndUpdatedCandidates.get(entry.getKey());
|
||||
if (candidatesForCompetitor != null) { // only possible if an exception struck in invalidateAfterCourseChange for the competitor
|
||||
candidatesForCompetitor.getB().addAll(entry.getValue());
|
||||
}
|
||||
}
|
||||
return newAndUpdatedCandidates;
|
||||
}
|
||||
@@ -497,22 +500,17 @@ public class CandidateFinderImpl implements CandidateFinder {
|
||||
instruction = PassingInstruction.Line;
|
||||
}
|
||||
if (instruction == PassingInstruction.None || instruction == null) {
|
||||
if (w.equals(firstWaypoint) || w.equals(lastWaypoint)) {
|
||||
instruction = PassingInstruction.Line;
|
||||
} else {
|
||||
int numberofMarks = 0;
|
||||
Iterator<Mark> it = w.getMarks().iterator();
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
numberofMarks++;
|
||||
}
|
||||
if (numberofMarks == 2) {
|
||||
instruction = PassingInstruction.Gate;
|
||||
} else if (numberofMarks == 1) {
|
||||
instruction = PassingInstruction.Single_Unknown;
|
||||
final int numberOfMarks = Util.size(w.getMarks());
|
||||
if (numberOfMarks == 2) {
|
||||
if (w.equals(firstWaypoint) || w.equals(lastWaypoint)) {
|
||||
instruction = PassingInstruction.Line;
|
||||
} else {
|
||||
instruction = PassingInstruction.None;
|
||||
instruction = PassingInstruction.Gate;
|
||||
}
|
||||
} else if (numberOfMarks == 1) {
|
||||
instruction = PassingInstruction.Single_Unknown;
|
||||
} else {
|
||||
instruction = PassingInstruction.None;
|
||||
}
|
||||
}
|
||||
return instruction;
|
||||
@@ -735,7 +733,7 @@ public class CandidateFinderImpl implements CandidateFinder {
|
||||
}
|
||||
}
|
||||
List<Distance> wayPointXTEs = xtes.get(w);
|
||||
int size = wayPointXTEs == null ? 0 : wayPointXTEs.size();
|
||||
final int size = wayPointXTEs == null ? 0 : wayPointXTEs.size();
|
||||
if (size > 0) {
|
||||
Double xte = wayPointXTEs.get(0).getMeters();
|
||||
if (xte == 0) {
|
||||
@@ -766,14 +764,16 @@ public class CandidateFinderImpl implements CandidateFinder {
|
||||
Double xteAfter = xtesAfter.get(w).get(1).getMeters();
|
||||
if (xte < 0 != xteAfter <= 0) {
|
||||
newCandidates.put(Arrays.asList(fix, fixAfter),
|
||||
createCandidate(c, xte, xteAfter, t, tAfter, w, false));
|
||||
createCandidate(c, xte, xteAfter, t, tAfter, w,
|
||||
/* still portMark in case of single-mark waypoint */ Util.size(w.getMarks()) < 2));
|
||||
}
|
||||
}
|
||||
if (fixBefore != null && xtesBefore.get(w).size() >= 2) {
|
||||
Double xteBefore = xtesBefore.get(w).get(1).getMeters();
|
||||
if (xte < 0 != xteBefore <= 0) {
|
||||
newCandidates.put(Arrays.asList(fixBefore, fix),
|
||||
createCandidate(c, xteBefore, xte, tBefore, t, w, false));
|
||||
createCandidate(c, xteBefore, xte, tBefore, t, w,
|
||||
/* still portMark in case of single-mark waypoint */ Util.size(w.getMarks()) < 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1333,21 +1333,41 @@ public class CandidateFinderImpl implements CandidateFinder {
|
||||
after.getBearingGreatCircle(starboardPosition));
|
||||
result.add(new Util.Pair<Position, Bearing>(starboardPosition, crossingStarboard));
|
||||
}
|
||||
} else {
|
||||
} else { // single mark
|
||||
Bearing b = null;
|
||||
Position p;
|
||||
Position p = race.getOrCreateTrack(w.getMarks().iterator().next()).getEstimatedPosition(t, false);
|
||||
if (instruction == PassingInstruction.FixedBearing) {
|
||||
b = w.getFixedBearing();
|
||||
} else {
|
||||
// TODO If the first of last waypoint is not a gate or line, this will lead to issues
|
||||
Bearing before = race.getTrackedLegFinishingAt(w).getLegBearing(t);
|
||||
Bearing after = race.getTrackedLegStartingAt(w).getLegBearing(t);
|
||||
if (before != null && after != null) {
|
||||
b = before.middle(after.reverse());
|
||||
// If the first of last waypoint is a single mark, check the passing instructions and create a "beam"
|
||||
// emerging orthogonal to the adjacent leg's direction from the mark to the side indicated by the
|
||||
// passing instructions. If no passing instructions are given, construct two lines, one to each direction
|
||||
// orthogonally to the adjacent leg:
|
||||
if (w == race.getRace().getCourse().getFirstWaypoint()) {
|
||||
if (instruction == PassingInstruction.None || instruction == PassingInstruction.Single_Unknown) {
|
||||
b = race.getTrackedLegStartingAt(w).getLegBearing(t).add(new DegreeBearingImpl(90));
|
||||
result.add(new Pair<>(p, b));
|
||||
b = race.getTrackedLegStartingAt(w).getLegBearing(t).add(new DegreeBearingImpl(270));
|
||||
} else {
|
||||
b = race.getTrackedLegStartingAt(w).getLegBearing(t).add(new DegreeBearingImpl(instruction == PassingInstruction.Port ? 90 : 270));
|
||||
}
|
||||
} else if (w == race.getRace().getCourse().getLastWaypoint()) {
|
||||
if (instruction == PassingInstruction.None || instruction == PassingInstruction.Single_Unknown) {
|
||||
b = race.getTrackedLegFinishingAt(w).getLegBearing(t).add(new DegreeBearingImpl(90));
|
||||
result.add(new Pair<>(p, b));
|
||||
b = race.getTrackedLegFinishingAt(w).getLegBearing(t).add(new DegreeBearingImpl(270));
|
||||
} else {
|
||||
b = race.getTrackedLegFinishingAt(w).getLegBearing(t).add(new DegreeBearingImpl(instruction == PassingInstruction.Port ? 90 : 270));
|
||||
}
|
||||
} else {
|
||||
Bearing before = race.getTrackedLegFinishingAt(w).getLegBearing(t);
|
||||
Bearing after = race.getTrackedLegStartingAt(w).getLegBearing(t);
|
||||
if (before != null && after != null) {
|
||||
b = before.middle(after.reverse());
|
||||
}
|
||||
}
|
||||
}
|
||||
p = race.getOrCreateTrack(w.getMarks().iterator().next()).getEstimatedPosition(t, false);
|
||||
result.add(new Util.Pair<Position, Bearing>(p, b));
|
||||
result.add(new Pair<>(p, b));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
-2
@@ -21,7 +21,6 @@ import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
||||
public interface RaceTrackingConnectivityParameters {
|
||||
/**
|
||||
* Starts a {@link RaceTracker} using the connectivity parameters provided by this object.
|
||||
* @param raceLogResolver TODO
|
||||
*/
|
||||
RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore, GPSFixStore gpsFixStore, RaceLogResolver raceLogResolver) throws Exception;
|
||||
|
||||
@@ -30,7 +29,6 @@ public interface RaceTrackingConnectivityParameters {
|
||||
* instead of using the tracker's domain factory to obtain a default {@link Regatta} object for the tracking
|
||||
* parameters. This is particularly useful if a predefined regatta with {@link Series} and {@link Fleet}s
|
||||
* is to be used.
|
||||
* @param raceLogResolver TODO
|
||||
*/
|
||||
RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore, GPSFixStore gpsFixStore, RaceLogResolver raceLogResolver) throws Exception;
|
||||
|
||||
|
||||
+2
-10
@@ -29,7 +29,6 @@ import com.sap.sailing.domain.ranking.RankingMetric.RankingInfo;
|
||||
import com.sap.sailing.domain.tracking.GPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.Maneuver;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||
import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.WindLegTypeAndLegBearingCache;
|
||||
@@ -302,15 +301,8 @@ public class TrackedLegOfCompetitorImpl implements TrackedLegOfCompetitor {
|
||||
}
|
||||
|
||||
/**
|
||||
* For now, we have an incredibly simple wind "model" which assigns a single common wind force and bearing to all
|
||||
* positions on the course, only variable over time.
|
||||
*
|
||||
* @param windPositionMode
|
||||
* For {@link WindPositionMode#EXACT}, the wind at position <code>p</code> is determined. For type
|
||||
* {@link WindPositionMode#LEG_MIDDLE}, the {@link TrackedLeg#getMiddleOfLeg middle of the tracked leg}
|
||||
* is determined and used as position. If the mode is {@link WindPositionMode#GLOBAL_AVERAGE}, <code>null</code>
|
||||
* is passed as position to {@link TrackedRace#getWind(Position, TimePoint)} which yields a general average
|
||||
* of the various wind sources available for the race, independent of any position.
|
||||
* Calculates the competitor's rank at {@code timePoint} based on the {@link WindPositionMode#LEG_MIDDLE} wind
|
||||
* direction for upwind and downwind legs, or based on the leg's rhumb line for reaching legs.
|
||||
*/
|
||||
@Override
|
||||
public int getRank(TimePoint timePoint) {
|
||||
|
||||
+1
-1
@@ -1266,7 +1266,7 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl
|
||||
if (indexOfWaypoint == -1) {
|
||||
throw new IllegalArgumentException("Waypoint " + endOfLeg + " not found in " + getRace().getCourse());
|
||||
} else if (indexOfWaypoint == 0) {
|
||||
throw new IllegalArgumentException("Waypoint " + endOfLeg + " isn't start of any leg in "
|
||||
throw new IllegalArgumentException("Waypoint " + endOfLeg + " isn't end of any leg in "
|
||||
+ getRace().getCourse());
|
||||
}
|
||||
return trackedLegs.get(race.getCourse().getLegs().get(indexOfWaypoint - 1));
|
||||
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.google.gwt.junit.client.GWTTestCase;
|
||||
import com.sap.sse.common.util.UrlHelper;
|
||||
|
||||
public class GwtUrlHelperTest extends GWTTestCase {
|
||||
|
||||
private final UrlHelper urlHelper = GwtUrlHelper.INSTANCE;
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringSimple() {
|
||||
testCase("TestTest", "TestTest");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringWithWhitespace() {
|
||||
testCase("Test%20Test", "Test Test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringWithSlash() {
|
||||
testCase("Test%2FTest", "Test/Test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringWithPlusSign() {
|
||||
testCase("Test%2BTest", "Test+Test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringWithAmpersand() {
|
||||
testCase("Test%26Test", "Test&Test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEncodeQueryStringComplex() {
|
||||
testCase("Test%20%2B%20Test%20%2F%20Test%20%26%20Test", "Test + Test / Test & Test");
|
||||
}
|
||||
|
||||
private void testCase(String expectedEncodedString, String decodedString) {
|
||||
assertEquals(expectedEncodedString, urlHelper.encodeQueryString(decodedString));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getModuleName() {
|
||||
return "com.sap.sailing.gwt.ui.test.TestConsole";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -68,12 +68,6 @@
|
||||
<version>${project.version}</version>
|
||||
<classifier>sources</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sap.sailing</groupId>
|
||||
<artifactId>com.sap.sse.gwt.theme</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>sources</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sap.sailing</groupId>
|
||||
<artifactId>com.sap.sse.gwt.adminconsole</artifactId>
|
||||
|
||||
+7
-6
@@ -14,14 +14,15 @@ import com.sap.sse.common.util.UrlHelper;
|
||||
public enum GwtUrlHelper implements UrlHelper {
|
||||
INSTANCE;
|
||||
|
||||
@Override
|
||||
public String encodeUrl(String decodedUrlString) {
|
||||
return URL.encode(decodedUrlString);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String encodeQueryString(String queryString) {
|
||||
return URL.encodeQueryString(queryString);
|
||||
// TODO See bug3664 => https://bugzilla.sapsailing.com/bugzilla/show_bug.cgi?id=3664
|
||||
// Because of changes in the query string encoding, the Sail InSight-App for iOS will now have problems
|
||||
// while parsing the registration URLs, which are sent to invited competitors, if e.g. the leaderboard name
|
||||
// contains whitespaces. To avoid this problems, we use this temporary fix until a new version of the Sail
|
||||
// InSight-App for iOS is rolled out. Afterwards this fix must be replaced by the line below.
|
||||
return URL.encodePathSegment(queryString);
|
||||
// return URL.encodeQueryString(queryString);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
@@ -1559,3 +1559,4 @@ oneTurnerRight=ワンターナー右
|
||||
current=現在
|
||||
simulationLegendAlgorithmTimedOutText=禁止区域
|
||||
simulationLegendMixedLegText=不明瞭な風
|
||||
noTracksFound=トラックが見つかりませんでした
|
||||
|
||||
+1
@@ -1559,3 +1559,4 @@ oneTurnerRight=1 поворот правый
|
||||
current=Текущий
|
||||
simulationLegendAlgorithmTimedOutText=вне ограничений
|
||||
simulationLegendMixedLegText=неопределенный ветер
|
||||
noTracksFound=Отслеживания не найдены
|
||||
|
||||
+3
-2
@@ -1102,7 +1102,7 @@ regattaNameMustNotContainSlashes=比赛名称不得包含斜线
|
||||
showNumberOfRacesScored=记分的比赛轮次数
|
||||
errorFetchingWindStreamletData=获取风力流数据出错: {0}
|
||||
showWindStreamletOverlay=显示风流覆盖
|
||||
showWindStreamletColors=基于风流的颜色流
|
||||
showWindStreamletColors=基于风速的颜色流
|
||||
showSimulationOverlay=显示模拟覆盖
|
||||
simulationLegendTooltip=时间比较:\n比赛轮次指根据 GPS 计算的航段历时,如果对风力了如指掌,则称为全知级;如果仅靠测量下一标志的距离就决定启航,则称为投机级;如果了解有关风力的所有信息并决定启航,则称为一圈即成级。
|
||||
racesScored=记分的比赛轮次
|
||||
@@ -1217,7 +1217,7 @@ showCompetitorSailIdColumn=帆号
|
||||
showCompetitorFullNameColumn=参赛队全名
|
||||
loadingDimensionValues=正在加载尺寸值
|
||||
runningQuery=运行查询
|
||||
inviteBuoyTenders=浮标招标
|
||||
inviteBuoyTenders=邀请浮标供应船
|
||||
orMultipleEmails=或使用逗号隔开的多个电子邮件
|
||||
courseOverGroundTrueDegreesTooltip=实在对地航向角度
|
||||
courseOverGroundTrueDegrees=对地航向
|
||||
@@ -1559,3 +1559,4 @@ oneTurnerRight=一圈即成级 - 右
|
||||
current=水流
|
||||
simulationLegendAlgorithmTimedOutText=越界
|
||||
simulationLegendMixedLegText=方向不定的风
|
||||
noTracksFound=未找到跟踪
|
||||
|
||||
+3
-2
@@ -1102,7 +1102,7 @@ regattaNameMustNotContainSlashes=比赛名称不得包含斜线
|
||||
showNumberOfRacesScored=记分的比赛轮次数
|
||||
errorFetchingWindStreamletData=获取风力流数据出错: {0}
|
||||
showWindStreamletOverlay=显示风流覆盖
|
||||
showWindStreamletColors=基于风流的颜色流
|
||||
showWindStreamletColors=基于风速的颜色流
|
||||
showSimulationOverlay=显示模拟覆盖
|
||||
simulationLegendTooltip=时间比较:\n比赛轮次指根据 GPS 计算的航段历时,如果对风力了如指掌,则称为全知级;如果仅靠测量下一标志的距离就决定启航,则称为投机级;如果了解有关风力的所有信息并决定启航,则称为一圈即成级。
|
||||
racesScored=记分的比赛轮次
|
||||
@@ -1217,7 +1217,7 @@ showCompetitorSailIdColumn=帆号
|
||||
showCompetitorFullNameColumn=参赛队全名
|
||||
loadingDimensionValues=正在加载尺寸值
|
||||
runningQuery=运行查询
|
||||
inviteBuoyTenders=浮标招标
|
||||
inviteBuoyTenders=邀请浮标供应船
|
||||
orMultipleEmails=或使用逗号隔开的多个电子邮件
|
||||
courseOverGroundTrueDegreesTooltip=实在对地航向角度
|
||||
courseOverGroundTrueDegrees=对地航向
|
||||
@@ -1559,3 +1559,4 @@ oneTurnerRight=一圈即成级 - 右
|
||||
current=水流
|
||||
simulationLegendAlgorithmTimedOutText=越界
|
||||
simulationLegendMixedLegText=方向不定的风
|
||||
noTracksFound=未找到跟踪
|
||||
|
||||
+2
-1
@@ -12,7 +12,8 @@
|
||||
"Offset" and "Fixed Bearing" are no longer offered until the application really offers
|
||||
support for them, particularly during mark passing calculation.</li>
|
||||
<li>Swiping the start time button to the left to reach the other buttons for entering
|
||||
the racing procedure, start mode flag, etc. now works reliably.</li>
|
||||
the racing procedure, start mode flag, etc. now works reliably, also in case
|
||||
of multi-touch which may have made the app crash before.</li>
|
||||
<li>Regatta-specific preferences now properly take precedence over the device configuration.
|
||||
They are updated from the server when the regatta content is refreshed.</li>
|
||||
</ul>
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
PolarChain1=ポーラー
|
||||
PolarChain2=バックエンドポーラー
|
||||
RaceColumn=レース列
|
||||
LegIndex=レグ指数
|
||||
PolarData=ポーラーデータ
|
||||
Polars=ポーラー
|
||||
GPSFix=GPS フィックス
|
||||
WindRange=風範囲
|
||||
WindIsConfident=風測定確度
|
||||
Rank=ランク
|
||||
BackendPolars=バックエンドポーラー
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
PolarChain1=Полярные данные
|
||||
PolarChain2=Полярные данные бэкэнда
|
||||
RaceColumn=Столбец гонки
|
||||
LegIndex=Индекс отрезка
|
||||
PolarData=Полярные данные
|
||||
Polars=Полярные данные
|
||||
GPSFix=Замер GPS
|
||||
WindRange=Диапазон ветра
|
||||
WindIsConfident=Достоверное измерение ветра
|
||||
Rank=Ранг
|
||||
BackendPolars=Полярные данные бэкэнда
|
||||
Executable
+11
@@ -0,0 +1,11 @@
|
||||
PolarChain1=极坐标图
|
||||
PolarChain2=后端极坐标图
|
||||
RaceColumn=比赛轮次列
|
||||
LegIndex=航段索引
|
||||
PolarData=极坐标数据
|
||||
Polars=极坐标图
|
||||
GPSFix=GPS 修复
|
||||
WindRange=风力范围
|
||||
WindIsConfident=风力测量置信度
|
||||
Rank=名次
|
||||
BackendPolars=后端极坐标图
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
PolarChain1=极坐标图
|
||||
PolarChain2=后端极坐标图
|
||||
RaceColumn=比赛轮次列
|
||||
LegIndex=航段索引
|
||||
PolarData=极坐标数据
|
||||
Polars=极坐标图
|
||||
GPSFix=GPS 修复
|
||||
WindRange=风力范围
|
||||
WindIsConfident=风力测量置信度
|
||||
Rank=名次
|
||||
BackendPolars=后端极坐标图
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:40:57Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages.properties" source-language="en" target-language="ja">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="99b784fd6920a22f02e85034e5d2ef70" form="base64">H4sIAAAAAAAAAF2PTQrCQAyF93OKXEH32TiiFBSGunAdOrEObTPQaaHHd/6s4Cbv4yW8JMaPNOs3OTmgSRyU2a0jnqgbWCzUVksdaz+uk+AP1Y37RixvGAEylYwzLVRCIWExw3fN1TwubsMoEFU9ndiWpGdMBBmz2QTt5eUsy4I7QR66M4V15ika8TQZMBVVb67b/j74ALSew+fwAAAA</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:05Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="PolarChain1" resname="PolarChain1">
|
||||
<source>Polars</source>
|
||||
<target>ポーラー</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="PolarChain2" resname="PolarChain2">
|
||||
<source>Backend Polars</source>
|
||||
<target>バックエンドポーラー</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceColumn" resname="RaceColumn">
|
||||
<source>RaceColumn</source>
|
||||
<target>レース列</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegIndex" resname="LegIndex">
|
||||
<source>Leg Index</source>
|
||||
<target>レグ指数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="PolarData" resname="PolarData">
|
||||
<source>Polar Data</source>
|
||||
<target>ポーラーデータ</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Polars" resname="Polars">
|
||||
<source>Polars</source>
|
||||
<target>ポーラー</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="GPSFix" resname="GPSFix">
|
||||
<source>GPS Fix</source>
|
||||
<target>GPS フィックス</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindRange" resname="WindRange">
|
||||
<source>Wind Range</source>
|
||||
<target>風範囲</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindIsConfident" resname="WindIsConfident">
|
||||
<source>Confident Wind Measurement</source>
|
||||
<target>風測定確度</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Rank" resname="Rank">
|
||||
<source>Rank</source>
|
||||
<target state="translated">ランク</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="BackendPolars" resname="BackendPolars">
|
||||
<source>Backend Polars</source>
|
||||
<target>バックエンドポーラー</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:44:57Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages.properties" source-language="en" target-language="ru">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="99b784fd6920a22f02e85034e5d2ef70" form="base64">H4sIAAAAAAAAAF2PTQrCQAyF93OKXEH32TiiFBSGunAdOrEObTPQaaHHd/6s4Cbv4yW8JMaPNOs3OTmgSRyU2a0jnqgbWCzUVksdaz+uk+AP1Y37RixvGAEylYwzLVRCIWExw3fN1TwubsMoEFU9ndiWpGdMBBmz2QTt5eUsy4I7QR66M4V15ika8TQZMBVVb67b/j74ALSew+fwAAAA</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:05Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="PolarChain1" resname="PolarChain1">
|
||||
<source>Polars</source>
|
||||
<target>Полярные данные</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="PolarChain2" resname="PolarChain2">
|
||||
<source>Backend Polars</source>
|
||||
<target>Полярные данные бэкэнда</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceColumn" resname="RaceColumn">
|
||||
<source>RaceColumn</source>
|
||||
<target>Столбец гонки</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegIndex" resname="LegIndex">
|
||||
<source>Leg Index</source>
|
||||
<target>Индекс отрезка</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="PolarData" resname="PolarData">
|
||||
<source>Polar Data</source>
|
||||
<target>Полярные данные</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Polars" resname="Polars">
|
||||
<source>Polars</source>
|
||||
<target>Полярные данные</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="GPSFix" resname="GPSFix">
|
||||
<source>GPS Fix</source>
|
||||
<target>Замер GPS</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindRange" resname="WindRange">
|
||||
<source>Wind Range</source>
|
||||
<target>Диапазон ветра</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindIsConfident" resname="WindIsConfident">
|
||||
<source>Confident Wind Measurement</source>
|
||||
<target>Достоверное измерение ветра</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Rank" resname="Rank">
|
||||
<source>Rank</source>
|
||||
<target>Ранг</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="BackendPolars" resname="BackendPolars">
|
||||
<source>Backend Polars</source>
|
||||
<target>Полярные данные бэкэнда</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:40:57Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages.properties" source-language="en" target-language="zh-CN">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="99b784fd6920a22f02e85034e5d2ef70" form="base64">H4sIAAAAAAAAAF2PTQrCQAyF93OKXEH32TiiFBSGunAdOrEObTPQaaHHd/6s4Cbv4yW8JMaPNOs3OTmgSRyU2a0jnqgbWCzUVksdaz+uk+AP1Y37RixvGAEylYwzLVRCIWExw3fN1TwubsMoEFU9ndiWpGdMBBmz2QTt5eUsy4I7QR66M4V15ika8TQZMBVVb67b/j74ALSew+fwAAAA</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:05Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="PolarChain1" resname="PolarChain1">
|
||||
<source>Polars</source>
|
||||
<target>极坐标图</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="PolarChain2" resname="PolarChain2">
|
||||
<source>Backend Polars</source>
|
||||
<target>后端极坐标图</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="RaceColumn" resname="RaceColumn">
|
||||
<source>RaceColumn</source>
|
||||
<target>比赛轮次列</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="LegIndex" resname="LegIndex">
|
||||
<source>Leg Index</source>
|
||||
<target>航段索引</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="PolarData" resname="PolarData">
|
||||
<source>Polar Data</source>
|
||||
<target>极坐标数据</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Polars" resname="Polars">
|
||||
<source>Polars</source>
|
||||
<target>极坐标图</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="GPSFix" resname="GPSFix">
|
||||
<source>GPS Fix</source>
|
||||
<target>GPS 修复</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindRange" resname="WindRange">
|
||||
<source>Wind Range</source>
|
||||
<target>风力范围</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="WindIsConfident" resname="WindIsConfident">
|
||||
<source>Confident Wind Measurement</source>
|
||||
<target>风力测量置信度</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Rank" resname="Rank">
|
||||
<source>Rank</source>
|
||||
<target state="translated">名次</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="BackendPolars" resname="BackendPolars">
|
||||
<source>Backend Polars</source>
|
||||
<target>后端极坐标图</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+13
-2
@@ -13,6 +13,7 @@ import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.common.tracking.impl.CompetitorJsonConstants;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.CountryCode;
|
||||
|
||||
public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
@@ -53,7 +54,8 @@ public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
result.put(idKeyAndValue.getKey(), idKeyAndValue.getValue());
|
||||
}
|
||||
result.put(CompetitorJsonConstants.FIELD_NAME, competitor.getName());
|
||||
result.put(CompetitorJsonConstants.FIELD_DISPLAY_COLOR, competitor.getColor() == null ? null : competitor.getColor().getAsHtml());
|
||||
Color color = getColor(competitor);
|
||||
result.put(CompetitorJsonConstants.FIELD_DISPLAY_COLOR, color == null ? null : color.getAsHtml());
|
||||
result.put(CompetitorJsonConstants.FIELD_EMAIL, competitor.getEmail());
|
||||
result.put(CompetitorJsonConstants.FIELD_SEARCHTAG, competitor.getSearchTag());
|
||||
result.put(CompetitorJsonConstants.FIELD_SAIL_ID, competitor.getBoat() == null ? "" : competitor.getBoat().getSailID());
|
||||
@@ -69,7 +71,7 @@ public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
result.put(CompetitorJsonConstants.FIELD_TEAM, teamJsonSerializer.serialize(competitor.getTeam()));
|
||||
}
|
||||
if (boatJsonSerializer != null) {
|
||||
result.put(CompetitorJsonConstants.FIELD_BOAT, boatJsonSerializer.serialize(competitor.getBoat()));
|
||||
result.put(CompetitorJsonConstants.FIELD_BOAT, boatJsonSerializer.serialize(getBoat(competitor)));
|
||||
}
|
||||
result.put(CompetitorJsonConstants.FIELD_TIME_ON_TIME_FACTOR, competitor.getTimeOnTimeFactor());
|
||||
result.put(CompetitorJsonConstants.FIELD_TIME_ON_DISTANCE_ALLOWANCE_IN_SECONDS_PER_NAUTICAL_MILE,
|
||||
@@ -82,4 +84,13 @@ public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
Serializable competitorId = competitor.getId() instanceof UUID ? competitor.getId().toString() : competitor.getId();
|
||||
return competitorId;
|
||||
}
|
||||
|
||||
protected Color getColor(Competitor competitor ) {
|
||||
return competitor.getColor();
|
||||
}
|
||||
|
||||
protected Boat getBoat(Competitor competitor ) {
|
||||
return competitor.getBoat();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sse.common.Color;
|
||||
|
||||
/**
|
||||
* This is a workaround for the serialization of a competitor with changing boats.
|
||||
* The class should be removed after bug https://bugzilla.sapsailing.com/bugzilla/show_bug.cgi?id=2822 is resolved.
|
||||
* @author Frank
|
||||
*
|
||||
*/
|
||||
public class CompetitorWithChangingBoatJsonSerializer extends CompetitorJsonSerializer {
|
||||
private final RaceDefinition race;
|
||||
|
||||
public CompetitorWithChangingBoatJsonSerializer() {
|
||||
this(null, null, null);
|
||||
}
|
||||
|
||||
public CompetitorWithChangingBoatJsonSerializer(RaceDefinition race, JsonSerializer<Team> teamJsonSerializer, JsonSerializer<Boat> boatSerializer) {
|
||||
super(teamJsonSerializer, boatSerializer);
|
||||
this.race = race;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Color getColor(Competitor competitor ) {
|
||||
if (race != null) {
|
||||
Boat boatOfCompetitor = race.getBoatOfCompetitorById(competitor.getId());
|
||||
if (boatOfCompetitor != null) {
|
||||
return boatOfCompetitor.getColor();
|
||||
}
|
||||
}
|
||||
return super.getColor(competitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boat getBoat(Competitor competitor ) {
|
||||
if (race != null) {
|
||||
Boat boatOfCompetitor = race.getBoatOfCompetitorById(competitor.getId());
|
||||
if (boatOfCompetitor != null) {
|
||||
return boatOfCompetitor;
|
||||
}
|
||||
}
|
||||
return super.getBoat(competitor);
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class RaceEntriesJsonSerializer implements JsonSerializer<RaceDefinition> {
|
||||
public static final String FIELD_NAME = "name";
|
||||
public static final String FIELD_COMPETITORS = "competitors";
|
||||
|
||||
private final JsonSerializer<Competitor> competitorSerializer;
|
||||
|
||||
public RaceEntriesJsonSerializer() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public RaceEntriesJsonSerializer(JsonSerializer<Competitor> competitorSerializer) {
|
||||
this.competitorSerializer = competitorSerializer;
|
||||
}
|
||||
|
||||
public JSONObject serialize(RaceDefinition race) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put(FIELD_NAME, race.getName());
|
||||
if(competitorSerializer != null) {
|
||||
JSONArray competitorsJson = new JSONArray();
|
||||
for (Competitor competitor: race.getCompetitors()) {
|
||||
competitorsJson.add(competitorSerializer.serialize(competitor));
|
||||
}
|
||||
result.put(FIELD_COMPETITORS, competitorsJson);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+36
@@ -59,10 +59,12 @@ import com.sap.sailing.server.gateway.serialization.impl.BoatClassJsonSerializer
|
||||
import com.sap.sailing.server.gateway.serialization.impl.BoatJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.ColorJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorWithChangingBoatJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.DurationJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.FleetJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.NationalityJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.PersonJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.RaceEntriesJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.RegattaJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.SeriesJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.TeamJsonSerializer;
|
||||
@@ -172,6 +174,40 @@ public class RegattasResource extends AbstractSailingServerResource {
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all entries for a race.
|
||||
*
|
||||
* @param regattaName
|
||||
* the name of the regatta
|
||||
* @return
|
||||
*/
|
||||
@GET
|
||||
@Produces("application/json;charset=UTF-8")
|
||||
@Path("{regattaname}/races/{racename}/entries")
|
||||
public Response getEntries(@PathParam("regattaname") String regattaName, @PathParam("racename") String raceName) {
|
||||
Response response;
|
||||
Regatta regatta = findRegattaByName(regattaName);
|
||||
if (regatta == null) {
|
||||
response = getBadRegattaErrorResponse(regattaName);
|
||||
} else {
|
||||
RaceDefinition race = findRaceByName(regatta, raceName);
|
||||
if (race == null) {
|
||||
response = getBadRaceErrorResponse(regattaName, raceName);
|
||||
} else {
|
||||
NationalityJsonSerializer nationalityJsonSerializer = new NationalityJsonSerializer();
|
||||
CompetitorJsonSerializer competitorJsonSerializer = new CompetitorWithChangingBoatJsonSerializer(race, new TeamJsonSerializer(
|
||||
new PersonJsonSerializer(nationalityJsonSerializer)), new BoatJsonSerializer(
|
||||
new BoatClassJsonSerializer()));
|
||||
JsonSerializer<RaceDefinition> raceEntriesSerializer = new RaceEntriesJsonSerializer(competitorJsonSerializer);
|
||||
JSONObject serializedRaceEntries = raceEntriesSerializer.serialize(race);
|
||||
|
||||
String json = serializedRaceEntries.toJSONString();
|
||||
response = Response.ok(json).header("Content-Type", MediaType.APPLICATION_JSON + ";charset=UTF-8").build();
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all GPS positions of the competitors for a given race.
|
||||
*
|
||||
|
||||
@@ -60,6 +60,10 @@ name to make sure you get to the event you're interested in.
|
||||
<td><a href="entriesGetDoc.html">/api/v1/regattas/{name}/entries</a></td>
|
||||
<td>Gets the entries of a regatta</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="raceEntriesGetDoc.html">/api/v1/regattas/{regattaname}/races/{racename}/entries</a></td>
|
||||
<td>Gets the entries of a race</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="raceBearingOfFirstLegGetDoc.html">/api/v1/regattas/{regattaname}/races/{racename}/firstlegbearing</a></td>
|
||||
<td>Gets the bearing of the first leg</td>
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<link href='../../../../sailing-fontface-1.0.cache.css' media='screen' rel='stylesheet' title='Default stylesheet' type='text/css' />
|
||||
<link href='../../../main.css' media='screen' rel='stylesheet' title='Default stylesheet' type='text/css' />
|
||||
<link rel='icon' href='../../../../sap.ico' type='image/x-icon'>
|
||||
<title>SAP Sailing Analytics Webservices API Version 1.0 Beta</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>SAP Sailing Analytics Webservices API Version 1.0 Beta</h1>
|
||||
<h2>URL: /api/v1/regattas/{regattaname}/races/{racename}/entries</h2>
|
||||
|
||||
<b>Description:</b>
|
||||
<p>The service gets the entries (competitor list) of a race</p>
|
||||
<br/>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Webservice Type:</td>
|
||||
<td>REST</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Output format:</td>
|
||||
<td>Json</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mandatory parameters:</td>
|
||||
<td>None</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Optional parameters:</td>
|
||||
<td>None</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Request method:</td>
|
||||
<td>GET</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Example:</td>
|
||||
<td><a href="http://www.sapsailing.com/sailingserver/api/v1/regattas/Kieler Woche (5o5)/races/Race 1/entries">http://www.sapsailing.com/sailingserver/api/v1/regattas/Kieler Woche (5o5)/races/Race 1/entries</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="height: 1em;"></div>
|
||||
<a href="index.html">Back to Web Service Overview</a>
|
||||
</body>
|
||||
</html>
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
package com.sap.sailing.server.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
import com.sap.sailing.server.operationaltransformation.AddLeaderboardGroupToEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateLeaderboardGroup;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardGroup;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveRegatta;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardGroup;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.shared.media.ImageDescriptor;
|
||||
import com.sap.sse.shared.media.VideoDescriptor;
|
||||
|
||||
public class RemoveLeaderboardGroupTest {
|
||||
private RacingEventService server;
|
||||
private Event pfingstbusch;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
server = new RacingEventServiceImpl();
|
||||
List<Event> allEvents = new ArrayList<>();
|
||||
Util.addAll(server.getAllEvents(), allEvents);
|
||||
for (final Event e : allEvents) {
|
||||
server.apply(new RemoveEvent(e.getId()));
|
||||
}
|
||||
Map<String, Leaderboard> allLeaderboards = new HashMap<>(server.getLeaderboards());
|
||||
for (final String leaderboardName : allLeaderboards.keySet()) {
|
||||
server.apply(new RemoveLeaderboard(leaderboardName));
|
||||
}
|
||||
Map<String, LeaderboardGroup> allLeaderboardGroups = new HashMap<>(server.getLeaderboardGroups());
|
||||
for (final String leaderboardGroupName : allLeaderboardGroups.keySet()) {
|
||||
server.apply(new RemoveLeaderboardGroup(leaderboardGroupName));
|
||||
}
|
||||
server.apply(new RemoveRegatta(new RegattaName("Pfingstbusch (29er)")));
|
||||
server.apply(new RemoveRegatta(new RegattaName("Pfingstbusch (470)")));
|
||||
server.apply(new RemoveRegatta(new RegattaName("Aalregatta (ORC)")));
|
||||
final Calendar cal = new GregorianCalendar();
|
||||
cal.set(2014, 5, 6, 10, 00);
|
||||
final TimePoint pfingstbuschStartDate = new MillisecondsTimePoint(cal.getTime());
|
||||
cal.set(2014, 5, 8, 16, 00);
|
||||
final TimePoint pfingstbuschEndDate = new MillisecondsTimePoint(cal.getTime());
|
||||
pfingstbusch = server.apply(new CreateEvent("Pfingstbusch", /* eventDescription */ null, pfingstbuschStartDate, pfingstbuschEndDate,
|
||||
"Kiel", /* isPublic */ true, UUID.randomUUID(), /* officialWebsiteURLAsString */ null, /* sailorsInfoWebsiteURLAsString */ null,
|
||||
/* images */Collections.<ImageDescriptor> emptyList(), /* videos */Collections.<VideoDescriptor> emptyList()));
|
||||
final LeaderboardGroup pfingstbuschLeaderboardGroup = server.apply(new CreateLeaderboardGroup("Pfingstbusch", "Pfingstbusch", /* displayName */ null,
|
||||
/* displayGroupsInReverseOrder */ false, /* leaderboard names */ Collections.emptyList(),
|
||||
new int[0], /* overallLeaderboardScoringSchemeType */ ScoringSchemeType.LOW_POINT));
|
||||
server.apply(new AddLeaderboardGroupToEvent(pfingstbusch.getId(), pfingstbuschLeaderboardGroup.getId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOverallLeaderboardPresent() {
|
||||
final Leaderboard overallLeaderboard = server.getLeaderboardByName("Pfingstbusch "+LeaderboardNameConstants.OVERALL);
|
||||
assertNotNull(overallLeaderboard);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOverallLeaderboardDisappearsWhenUpdatingLeaderboardGroup() {
|
||||
server.apply(new UpdateLeaderboardGroup("Pfingstbusch", "Pfingstbusch", "Pfingstbusch", /* displayName */ null,
|
||||
/* newLeaderboardNames */ Collections.emptyList(),
|
||||
new int[0], /* overallLeaderboardScoringSchemeType */ null));
|
||||
final Leaderboard overallLeaderboard = server.getLeaderboardByName("Pfingstbusch "+LeaderboardNameConstants.OVERALL);
|
||||
assertNull(overallLeaderboard);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemovingOverallLeaderboardUnlinksItFromLeaderboardGroup() {
|
||||
assertNotNull(pfingstbusch.getLeaderboardGroups().iterator().next().getOverallLeaderboard());
|
||||
server.apply(new RemoveLeaderboard("Pfingstbusch "+LeaderboardNameConstants.OVERALL));
|
||||
final Leaderboard overallLeaderboard = server.getLeaderboardByName("Pfingstbusch "+LeaderboardNameConstants.OVERALL);
|
||||
assertNull(overallLeaderboard);
|
||||
assertNull(pfingstbusch.getLeaderboardGroups().iterator().next().getOverallLeaderboard());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemovingLeaderboardGroupRemovesOverallLeaderboardAndUnlinksItFromEvent() {
|
||||
assertEquals(1, Util.size(pfingstbusch.getLeaderboardGroups()));
|
||||
server.apply(new RemoveLeaderboardGroup("Pfingstbusch"));
|
||||
final Leaderboard overallLeaderboard = server.getLeaderboardByName("Pfingstbusch "+LeaderboardNameConstants.OVERALL);
|
||||
assertNull(overallLeaderboard);
|
||||
assertFalse(pfingstbusch.getLeaderboardGroups().iterator().hasNext());
|
||||
}
|
||||
}
|
||||
+21
-6
@@ -60,13 +60,16 @@ import com.sap.sailing.server.gateway.serialization.impl.LeaderboardSearchResult
|
||||
import com.sap.sailing.server.gateway.serialization.impl.VenueJsonSerializer;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
import com.sap.sailing.server.operationaltransformation.AddColumnToSeries;
|
||||
import com.sap.sailing.server.operationaltransformation.AddLeaderboardGroupToEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.AddRaceDefinition;
|
||||
import com.sap.sailing.server.operationaltransformation.AddSpecificRegatta;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateLeaderboardGroup;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateRegattaLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateTrackedRace;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardGroup;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveRegatta;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
@@ -104,13 +107,17 @@ public class SearchServiceTest {
|
||||
server = new RacingEventServiceImpl();
|
||||
List<Event> allEvents = new ArrayList<>();
|
||||
Util.addAll(server.getAllEvents(), allEvents);
|
||||
for (Event e : allEvents) {
|
||||
for (final Event e : allEvents) {
|
||||
server.apply(new RemoveEvent(e.getId()));
|
||||
}
|
||||
Map<String, Leaderboard> allLeaderboards = new HashMap<>(server.getLeaderboards());
|
||||
for (String leaderboardName : allLeaderboards.keySet()) {
|
||||
for (final String leaderboardName : allLeaderboards.keySet()) {
|
||||
server.apply(new RemoveLeaderboard(leaderboardName));
|
||||
}
|
||||
Map<String, LeaderboardGroup> allLeaderboardGroups = new HashMap<>(server.getLeaderboardGroups());
|
||||
for (final String leaderboardGroupName : allLeaderboardGroups.keySet()) {
|
||||
server.apply(new RemoveLeaderboardGroup(leaderboardGroupName));
|
||||
}
|
||||
server.apply(new RemoveRegatta(new RegattaName("Pfingstbusch (29er)")));
|
||||
server.apply(new RemoveRegatta(new RegattaName("Pfingstbusch (470)")));
|
||||
server.apply(new RemoveRegatta(new RegattaName("Aalregatta (ORC)")));
|
||||
@@ -119,8 +126,8 @@ public class SearchServiceTest {
|
||||
final TimePoint pfingstbuschStartDate = new MillisecondsTimePoint(cal.getTime());
|
||||
cal.set(2014, 5, 8, 16, 00);
|
||||
final TimePoint pfingstbuschEndDate = new MillisecondsTimePoint(cal.getTime());
|
||||
pfingstbusch = server.apply(new CreateEvent("Pfingsbusch", /* eventDescription */ null, pfingstbuschStartDate, pfingstbuschEndDate, /* isPublic */
|
||||
"Kiel", true, UUID.randomUUID(), /* officialWebsiteURLAsString */ null, /* sailorsInfoWebsiteURLAsString */ null,
|
||||
pfingstbusch = server.apply(new CreateEvent("Pfingsbusch", /* eventDescription */ null, pfingstbuschStartDate, pfingstbuschEndDate,
|
||||
"Kiel", /* isPublic */ true, UUID.randomUUID(), /* officialWebsiteURLAsString */ null, /* sailorsInfoWebsiteURLAsString */ null,
|
||||
/* images */Collections.<ImageDescriptor> emptyList(), /* videos */Collections.<VideoDescriptor> emptyList()));
|
||||
kiel = pfingstbusch.getVenue();
|
||||
final CourseAreaImpl kielAlpha = new CourseAreaImpl("Alpha", UUID.randomUUID());
|
||||
@@ -149,12 +156,16 @@ public class SearchServiceTest {
|
||||
server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R3"));
|
||||
RegattaLeaderboard pfingstbusch470Leaderboard = server.apply(new CreateRegattaLeaderboard(pfingstbusch470.getRegattaIdentifier(),
|
||||
/* leaderboardDisplayName */ null, /* discardThresholds */ new int[0]));
|
||||
final LeaderboardGroup pfingstbuschLeaderboardGroup = server.apply(new CreateLeaderboardGroup("Pfingstbusch", "Pfingstbusch", /* displayName */ null,
|
||||
/* displayGroupsInReverseOrder */ false, Arrays.asList(new String[] { RegattaImpl.getDefaultName("Pfingstbusch", "29er"), RegattaImpl.getDefaultName("Pfingstbusch", "470") }),
|
||||
new int[0], /* overallLeaderboardScoringSchemeType */ null));
|
||||
server.apply(new AddLeaderboardGroupToEvent(pfingstbusch.getId(), pfingstbuschLeaderboardGroup.getId()));
|
||||
cal.set(2014, 5, 7, 10, 00);
|
||||
final TimePoint aalStartDate = new MillisecondsTimePoint(cal.getTime());
|
||||
cal.set(2014, 5, 8, 18, 00);
|
||||
final TimePoint aalEndDate = new MillisecondsTimePoint(cal.getTime());
|
||||
aalEvent = server.apply(new CreateEvent("Aalregatta", /* eventDescription */ null, aalStartDate, aalEndDate, /* isPublic */
|
||||
"Flensburg", true, UUID.randomUUID(), /* officialWebsiteURLAsString */ null, /*sailorsInfoWebsiteURLAsString */ null,
|
||||
aalEvent = server.apply(new CreateEvent("Aalregatta", /* eventDescription */ null, aalStartDate, aalEndDate,
|
||||
"Flensburg", /* isPublic */ true, UUID.randomUUID(), /* officialWebsiteURLAsString */ null, /*sailorsInfoWebsiteURLAsString */ null,
|
||||
/* images */Collections.<ImageDescriptor> emptyList(), /* videos */Collections.<VideoDescriptor> emptyList()));
|
||||
flensburg = aalEvent.getVenue();
|
||||
final CourseAreaImpl flensburgStandard = new CourseAreaImpl("Standard", UUID.randomUUID());
|
||||
@@ -167,6 +178,10 @@ public class SearchServiceTest {
|
||||
server.apply(new AddColumnToSeries(aalRegatta.getRegattaIdentifier(), "Default", "R2"));
|
||||
RegattaLeaderboard aalRegattaLeaderboard = server.apply(new CreateRegattaLeaderboard(aalRegatta.getRegattaIdentifier(),
|
||||
/* leaderboardDisplayName */ null, /* discardThresholds */ new int[0]));
|
||||
final LeaderboardGroup aalLeaderboardGroup = server.apply(new CreateLeaderboardGroup("Aal Regatta", "Aal Regatta", /* displayName */ null,
|
||||
/* displayGroupsInReverseOrder */ false, Collections.singletonList(RegattaImpl.getDefaultName("Aalregatta", "ORC")),
|
||||
new int[0], /* overallLeaderboardScoringSchemeType */ null));
|
||||
server.apply(new AddLeaderboardGroupToEvent(aalEvent.getId(), aalLeaderboardGroup.getId()));
|
||||
hassoPlattner = AbstractTracTracLiveTest.createCompetitor("Hasso Plattner");
|
||||
alexanderRies = AbstractTracTracLiveTest.createCompetitor("Alexander Ries");
|
||||
antonKoch = AbstractTracTracLiveTest.createCompetitor("Anton Koch");
|
||||
|
||||
+18
-4
@@ -189,6 +189,7 @@ import com.sap.sailing.server.operationaltransformation.RecordMarkGPSFixForNewMa
|
||||
import com.sap.sailing.server.operationaltransformation.RecordWindFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveDeviceConfiguration;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardGroupFromEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveMediaTrackOperation;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveWindFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RenameEvent;
|
||||
@@ -1004,15 +1005,15 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks all groups, if they contain a leaderboard with the <code>removedLeaderboardName</code> and removes it from
|
||||
* the group.
|
||||
* Checks all groups, if they contain a leaderboard with the <code>removedLeaderboardName</code> or reference it as their
|
||||
* overall leaderboard and removes it from the group or unlinks it as the overall leaderboard, respectively.
|
||||
*
|
||||
* @param removedLeaderboardName
|
||||
*/
|
||||
private void syncGroupsAfterLeaderboardRemove(String removedLeaderboardName, boolean doDatabaseUpdate) {
|
||||
boolean groupNeedsUpdate = false;
|
||||
for (LeaderboardGroup leaderboardGroup : leaderboardGroupsByName.values()) {
|
||||
for (Leaderboard leaderboard : leaderboardGroup.getLeaderboards()) {
|
||||
for (final Leaderboard leaderboard : leaderboardGroup.getLeaderboards()) {
|
||||
if (leaderboard.getName().equals(removedLeaderboardName)) {
|
||||
leaderboardGroup.removeLeaderboard(leaderboard);
|
||||
groupNeedsUpdate = true;
|
||||
@@ -1020,7 +1021,10 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (leaderboardGroup.getOverallLeaderboard() != null && leaderboardGroup.getOverallLeaderboard().getName().equals(removedLeaderboardName)) {
|
||||
leaderboardGroup.setOverallLeaderboard(null);
|
||||
groupNeedsUpdate = true;
|
||||
}
|
||||
if (doDatabaseUpdate && groupNeedsUpdate) {
|
||||
mongoObjectFactory.storeLeaderboardGroup(leaderboardGroup);
|
||||
}
|
||||
@@ -2260,6 +2264,16 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
try {
|
||||
leaderboardGroup = leaderboardGroupsByName.remove(groupName);
|
||||
if (leaderboardGroup != null) {
|
||||
for (final Event event : eventsById.values()) {
|
||||
if (Util.contains(event.getLeaderboardGroups(), leaderboardGroup)) {
|
||||
// unlink the leaderboard group from the event; note that the operation is not "apply"-ed to
|
||||
// this service because it would redundantly replicate; a replica, however, would already have
|
||||
// received the call to this method and should carry out the following statement locally.
|
||||
// As such, using the operation to unlink the leaderboard group from the event is only trying
|
||||
// to avoid duplication of code contained in the operation's internalApplyTo method
|
||||
new RemoveLeaderboardGroupFromEvent(event.getId(), leaderboardGroup.getId()).internalApplyTo(this);
|
||||
}
|
||||
}
|
||||
leaderboardGroupsByID.remove(leaderboardGroup.getId());
|
||||
}
|
||||
} finally {
|
||||
|
||||
+7
-1
@@ -7,6 +7,8 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
@@ -95,7 +97,11 @@ public class RegattaByKeywordSearchService {
|
||||
return leaderboardStrings;
|
||||
}
|
||||
};
|
||||
for (Leaderboard matchingLeaderboard : leaderboardFilter.applyFilter(query.getKeywords(), racingEventService.getLeaderboards().values())) {
|
||||
final Set<Leaderboard> leaderboardsToConsider = StreamSupport.stream(racingEventService.getAllEvents().spliterator(), /* parallel */ false).filter(e->e.isPublic()).
|
||||
flatMap(e->StreamSupport.stream(e.getLeaderboardGroups().spliterator(), /* parallel */ false)).
|
||||
flatMap(lg->StreamSupport.stream(lg.getLeaderboards().spliterator(), /* parallel */ false)).
|
||||
collect(Collectors.toSet());
|
||||
for (Leaderboard matchingLeaderboard : leaderboardFilter.applyFilter(query.getKeywords(), leaderboardsToConsider)) {
|
||||
result.addHit(new LeaderboardSearchResultImpl(matchingLeaderboard,
|
||||
getEventsForLeaderboard(matchingLeaderboard, leaderboardGroupsForLeaderboard,
|
||||
eventsForLeaderboardGroup, eventForCourseArea), leaderboardGroupsForLeaderboard
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ public class RemoveLeaderboardGroupFromEvent extends AbstractRacingEventServiceO
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean internalApplyTo(RacingEventService toState) throws Exception {
|
||||
public Boolean internalApplyTo(RacingEventService toState) {
|
||||
boolean updated = false;
|
||||
Event event = toState.getEvent(eventId);
|
||||
if (event != null) {
|
||||
|
||||
@@ -772,7 +772,8 @@ public class LeaderboardData extends ExportAction {
|
||||
addNamedElementWithValue(competitorLegDataElement, "leg_rank_at_leg_finish", competitorLeg.getRank(legFinishTime));
|
||||
|
||||
if (legCounter>1) {
|
||||
addNamedElementWithValue(competitorLegDataElement, "rank_gain_for_this_leg_between_start_and_finish", competitorLeg.getRank(competitorLeg.getStartTime())-competitorLeg.getRank(legFinishTime));
|
||||
final TrackedLegOfCompetitor previousLeg = competitorLeg.getTrackedLeg().getTrackedRace().getTrackedLegFinishingAt(competitorLeg.getLeg().getFrom()).getTrackedLeg(competitor);
|
||||
addNamedElementWithValue(competitorLegDataElement, "rank_gain_for_this_leg_between_start_and_finish", previousLeg.getRank(previousLeg.getFinishTime())-competitorLeg.getRank(legFinishTime));
|
||||
} else {
|
||||
addNamedElementWithValue(competitorLegDataElement, "rank_gain_for_this_leg_between_start_and_finish", 0);
|
||||
}
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
package com.sap.sse.common.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class TestUrlEncoding {
|
||||
@Test
|
||||
public void testUrlQueryStringEncoding() throws UnsupportedEncodingException {
|
||||
final String s = "Test & Test";
|
||||
assertEquals("Test+%26+Test", URLEncoder.encode(s, "UTF-8"));
|
||||
assertEquals(s, URLDecoder.decode(URLEncoder.encode(s, "UTF-8"), "UTF-8"));
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,6 @@ package com.sap.sse.common.util;
|
||||
* GWT context does not offer full implementations of URL/URI. *
|
||||
*/
|
||||
public interface UrlHelper {
|
||||
String encodeUrl(String decodedUrlString);
|
||||
|
||||
|
||||
String encodeQueryString(String queryString);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
Average=平均
|
||||
Median=中央値
|
||||
Sum=合計
|
||||
Maximum=最大
|
||||
Minimum=最小
|
||||
Count=カウント
|
||||
Meters=m
|
||||
Knots=kn
|
||||
Collecting=コレクション
|
||||
ResultSignifier={0} ({1})
|
||||
SignifierInUnit={0} / {1}
|
||||
@@ -0,0 +1,11 @@
|
||||
Average=Среднее
|
||||
Median=Медиана
|
||||
Sum=Сумма
|
||||
Maximum=Максимум
|
||||
Minimum=Минимум
|
||||
Count=Количество
|
||||
Meters=м
|
||||
Knots=уз.
|
||||
Collecting=Коллекция
|
||||
ResultSignifier={0} ({1})
|
||||
SignifierInUnit={0} в {1}
|
||||
@@ -0,0 +1,11 @@
|
||||
Average=平均值
|
||||
Median=中值
|
||||
Sum=求和
|
||||
Maximum=最大值
|
||||
Minimum=最小值
|
||||
Count=计数
|
||||
Meters=m
|
||||
Knots=kn
|
||||
Collecting=集合
|
||||
ResultSignifier={0} ({1})
|
||||
SignifierInUnit={0}(单位:{1})
|
||||
@@ -0,0 +1,11 @@
|
||||
Average=平均值
|
||||
Median=中值
|
||||
Sum=求和
|
||||
Maximum=最大值
|
||||
Minimum=最小值
|
||||
Count=计数
|
||||
Meters=m
|
||||
Knots=kn
|
||||
Collecting=集合
|
||||
ResultSignifier={0} ({1})
|
||||
SignifierInUnit={0}(单位:{1})
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:43:15Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sse.datamining/resources/stringmessages/StringMessages.properties" source-language="en" target-language="ja">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="299055c6be272a85a07b907e3c6ce40a" form="base64">H4sIAAAAAAAAAD2MQQoCMQxF9znFLHWnB8hicCXSjYMHKBpLsE2hTQdhmLsbpuoieT958MeZig+EYyc4erAX7ICpJbQB59+cLH8JjqXfnXDKTRS3bQ1KpWKCi2St+BKzMdJdWQL+Yha4Um1RJw7CT6aCy2Eddstx3cP/d5absG6GZTAHH6Y6WeOvAAAA</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:06Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Average" resname="Average">
|
||||
<source>Average</source>
|
||||
<target>平均</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Median" resname="Median">
|
||||
<source>Median</source>
|
||||
<target>中央値</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Sum" resname="Sum">
|
||||
<source>Sum</source>
|
||||
<target>合計</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Maximum" resname="Maximum">
|
||||
<source>Maximum</source>
|
||||
<target>最大</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Minimum" resname="Minimum">
|
||||
<source>Minimum</source>
|
||||
<target>最小</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Count" resname="Count">
|
||||
<source>Count</source>
|
||||
<target>カウント</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Meters" resname="Meters">
|
||||
<source>m</source>
|
||||
<target state="translated">m</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Knots" resname="Knots">
|
||||
<source>kn</source>
|
||||
<target>kn</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Collecting" resname="Collecting">
|
||||
<source>Collection</source>
|
||||
<target>コレクション</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="ResultSignifier" resname="ResultSignifier">
|
||||
<source><ph id="1">{0}</ph> (<ph id="2">{1}</ph>)</source>
|
||||
<target><ph id="1">{0}</ph> (<ph id="2">{1}</ph>)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SignifierInUnit" resname="SignifierInUnit">
|
||||
<source><ph id="1">{0}</ph> in <ph id="2">{1}</ph></source>
|
||||
<target><ph id="1">{0}</ph> / <ph id="2">{1}</ph></target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T13:02:56Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sse.datamining/resources/stringmessages/StringMessages.properties" source-language="en" target-language="ru">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="299055c6be272a85a07b907e3c6ce40a" form="base64">H4sIAAAAAAAAAD2MQQoCMQxF9znFLHWnB8hicCXSjYMHKBpLsE2hTQdhmLsbpuoieT958MeZig+EYyc4erAX7ICpJbQB59+cLH8JjqXfnXDKTRS3bQ1KpWKCi2St+BKzMdJdWQL+Yha4Um1RJw7CT6aCy2Eddstx3cP/d5absG6GZTAHH6Y6WeOvAAAA</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:06Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Average" resname="Average">
|
||||
<source>Average</source>
|
||||
<target>Среднее</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Median" resname="Median">
|
||||
<source>Median</source>
|
||||
<target>Медиана</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Sum" resname="Sum">
|
||||
<source>Sum</source>
|
||||
<target>Сумма</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Maximum" resname="Maximum">
|
||||
<source>Maximum</source>
|
||||
<target>Максимум</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Minimum" resname="Minimum">
|
||||
<source>Minimum</source>
|
||||
<target>Минимум</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Count" resname="Count">
|
||||
<source>Count</source>
|
||||
<target>Количество</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Meters" resname="Meters">
|
||||
<source>m</source>
|
||||
<target state="translated">м</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Knots" resname="Knots">
|
||||
<source>kn</source>
|
||||
<target>уз.</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Collecting" resname="Collecting">
|
||||
<source>Collection</source>
|
||||
<target>Коллекция</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="ResultSignifier" resname="ResultSignifier">
|
||||
<source><ph id="1">{0}</ph> (<ph id="2">{1}</ph>)</source>
|
||||
<target><ph id="1">{0}</ph> (<ph id="2">{1}</ph>)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SignifierInUnit" resname="SignifierInUnit">
|
||||
<source><ph id="1">{0}</ph> in <ph id="2">{1}</ph></source>
|
||||
<target><ph id="1">{0}</ph> в <ph id="2">{1}</ph></target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:43:15Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sse.datamining/resources/stringmessages/StringMessages.properties" source-language="en" target-language="zh-CN">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="299055c6be272a85a07b907e3c6ce40a" form="base64">H4sIAAAAAAAAAD2MQQoCMQxF9znFLHWnB8hicCXSjYMHKBpLsE2hTQdhmLsbpuoieT958MeZig+EYyc4erAX7ICpJbQB59+cLH8JjqXfnXDKTRS3bQ1KpWKCi2St+BKzMdJdWQL+Yha4Um1RJw7CT6aCy2Eddstx3cP/d5absG6GZTAHH6Y6WeOvAAAA</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:06Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Average" resname="Average">
|
||||
<source>Average</source>
|
||||
<target>平均值</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Median" resname="Median">
|
||||
<source>Median</source>
|
||||
<target>中值</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Sum" resname="Sum">
|
||||
<source>Sum</source>
|
||||
<target>求和</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Maximum" resname="Maximum">
|
||||
<source>Maximum</source>
|
||||
<target>最大值</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Minimum" resname="Minimum">
|
||||
<source>Minimum</source>
|
||||
<target>最小值</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Count" resname="Count">
|
||||
<source>Count</source>
|
||||
<target>计数</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Meters" resname="Meters">
|
||||
<source>m</source>
|
||||
<target state="translated">m</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Knots" resname="Knots">
|
||||
<source>kn</source>
|
||||
<target>kn</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="Collecting" resname="Collecting">
|
||||
<source>Collection</source>
|
||||
<target>集合</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="ResultSignifier" resname="ResultSignifier">
|
||||
<source><ph id="1">{0}</ph> (<ph id="2">{1}</ph>)</source>
|
||||
<target><ph id="1">{0}</ph> (<ph id="2">{1}</ph>)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="SignifierInUnit" resname="SignifierInUnit">
|
||||
<source><ph id="1">{0}</ph> in <ph id="2">{1}</ph></source>
|
||||
<target><ph id="1">{0}</ph>(单位:<ph id="2">{1}</ph>)</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
s3Desc=ファイルを Amazon S3 に保管します。結果として得られるファイル名は、ランダムな UUID に元のファイルの末尾を加えたものです。
|
||||
s3AccessIdDesc=アクセス ID (空白のままにすると、代わりに ~/.aws/credentials を使用)
|
||||
s3AccessKeyDesc=秘密アクセスキー (空白のままにすると、代わりに ~/.aws/credentials を使用)
|
||||
s3BucketNameDesc=使用するバケットの名称 (すでに存在していること、かつユーザに十分な権限があることが必要)
|
||||
localDesc=ローカルファイルシステムにファイルを保管するサービスです。ファイルは、ローカルパス + ファイル名で保管され、ベース URL + ファイル名でアクセスできます。そのため、ベース URL にあるコンテンツはリモートからアクセス可能でなければなりません。これはたとえば、複製上の static.sapsailing.com などからローカルパスにリモートファイルシステムをマウントすることによって達成することができます。
|
||||
localBaseUrlDesc=ベース URL + ファイル名 = アップロードしたファイルがアクセス可能となる場所の URL
|
||||
localLocalPathDesc=ファイル保管に使用するローカルパス
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
s3Desc=Храните файлы на Amazon S3. Результирующее имя файла — случайный UUID плюс расширение исходного файла.
|
||||
s3AccessIdDesc=Ид. доступа (оставьте пустым, чтобы использовать ~/.aws/credentials)
|
||||
s3AccessKeyDesc=Секретный ключ доступа (leave blank to use ~/.aws/credentials instead)
|
||||
s3BucketNameDesc=Имя используемого бакета (должен уже существовать, пользователю необходимы достаточные разрешения доступа)
|
||||
localDesc=Сервис для хранения файлов в локальной файловой системе. Файлы сохраняются в папке локальныйПуть+имяФайла и доступны по адресу базовыйUrl+имяФайла. Соответственно, необходима возможность удаленного доступа к содержимому по адресу базовыйUrl. Этого можно достичь, смонтировав удаленную файловую систему (например, из static.sapsailing.com) в папке локальныйПуть на репликах.
|
||||
localBaseUrlDesc=Базовый URL + имяФайла = URL для доступа к выложенному файлу
|
||||
localLocalPathDesc=Локальный путь для файлового хранилища
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
s3Desc=将文件存储在 Amazon S3 中。生成的文件名称为随机的 UUID 加原始文件结尾。
|
||||
s3AccessIdDesc=访问编号(留空,改用 ~/.aws/credentials)
|
||||
s3AccessKeyDesc=秘密访问密钥(留空,改用 ~/.aws/credentials)
|
||||
s3BucketNameDesc=所用存储段的名称(必须已存在,并且用户需要足够的权限)
|
||||
localDesc=用于在本地文件系统中存储文件的服务。文件存储在 localPath+fileName 中,可以在 baseUrl+fileName 访问。请注意,必须可以远程访问 baseUrl 中的内容。例如,可以从 localPath 副本所在的 static.sapsailing.com 安装远程文件系统。
|
||||
localBaseUrlDesc=基本 URL + 文件名称 = URL,其中可以访问上传的文件
|
||||
localLocalPathDesc=用于存储文件的本地路径
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
s3Desc=将文件存储在 Amazon S3 中。生成的文件名称为随机的 UUID 加原始文件结尾。
|
||||
s3AccessIdDesc=访问编号(留空,改用 ~/.aws/credentials)
|
||||
s3AccessKeyDesc=秘密访问密钥(留空,改用 ~/.aws/credentials)
|
||||
s3BucketNameDesc=所用存储段的名称(必须已存在,并且用户需要足够的权限)
|
||||
localDesc=用于在本地文件系统中存储文件的服务。文件存储在 localPath+fileName 中,可以在 baseUrl+fileName 访问。请注意,必须可以远程访问 baseUrl 中的内容。例如,可以从 localPath 副本所在的 static.sapsailing.com 安装远程文件系统。
|
||||
localBaseUrlDesc=基本 URL + 文件名称 = URL,其中可以访问上传的文件
|
||||
localLocalPathDesc=用于存储文件的本地路径
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:42:17Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sse.filestorage/resources/stringmessages/FileStorageStringMessages.properties" source-language="en" target-language="ja">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="37afe0b1eb405886cd475fe305c64722" form="base64">H4sIAAAAAAAAAJ1SwW7bMAy95yt4bNHBPeTcQ4tiQLGiGNrmAxiZTojSkiHKSb3Dvn2klGTddSdL1OPj4/PT9SNpuHsrKRMMLKSQItyP+Ms+b+sO3vcEmXSWwnFXERBxJGAFhIyxTyNsNk+PMMmsUAydMu84ojQwxd4au5Wu70Mg1ae+DmwXsL4rITwQbAXjB5QEsxL8vu3wqLchU0+xMIoCRy2E/fWF6ActTToZrMCJ0Kr/wfgwhw8qL7ZXpfQDpAFa+UxxtUf1M0q2tgXok7V8A7PAnzNEol5B52HgwDYEJsojq3KKer2SFFBOgvOBg7mdMqj5fvbVFVUDK7S5p4tpHDv4Xt93JsY7qHdohf3Esr9xaNXsWgJG2Nqx+mFILLBFpU2Wv7iXVMhG2ZPPCykW1yuLSzHmEx7GWSsi0+DxuLDyVjwUo7HI4hGxMPhY34g+cZyEKnbPdDAF2wXGNMcaIDz1fV3vax8M2QKlBQuHTnFSZPH8BKumZk+mSTi0f3HxoGsGPzTl1Wc/w+b1GW7gsvhdLRx9JZgnSdibvirlyCL/btgYn88TKme9gV/PqXDtbRf7Mbij1R9TuhdHUgMAAA==</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:05Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3Desc" resname="s3Desc">
|
||||
<source>Store files on Amazon S3. The resulting file name is a random UUID plus the original file ending.</source>
|
||||
<target>ファイルを Amazon S3 に保管します。結果として得られるファイル名は、ランダムな UUID に元のファイルの末尾を加えたものです。</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3AccessIdDesc" resname="s3AccessIdDesc">
|
||||
<source>Access ID (leave blank to use ~/.aws/credentials instead)</source>
|
||||
<target>アクセス ID (空白のままにすると、代わりに ~/.aws/credentials を使用)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3AccessKeyDesc" resname="s3AccessKeyDesc">
|
||||
<source>Secret Access Key (leave blank to use ~/.aws/credentials instead)</source>
|
||||
<target>秘密アクセスキー (空白のままにすると、代わりに ~/.aws/credentials を使用)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3BucketNameDesc" resname="s3BucketNameDesc">
|
||||
<source>Name of Bucket to use (has to already exist, and user needs sufficient permissions)</source>
|
||||
<target>使用するバケットの名称 (すでに存在していること、かつユーザに十分な権限があることが必要)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="localDesc" resname="localDesc">
|
||||
<source>Service for storing files in the local file system. Files get stored in localPath+fileName and can be accessed at baseUrl+fileName Note that the content lying in baseUrl must therefore be accessible remotely. This can for examplebe achieved by mounting a remote file system for example from static.sapsailing.com on the replicas to localPath.</source>
|
||||
<target>ローカルファイルシステムにファイルを保管するサービスです。ファイルは、ローカルパス + ファイル名で保管され、ベース URL + ファイル名でアクセスできます。そのため、ベース URL にあるコンテンツはリモートからアクセス可能でなければなりません。これはたとえば、複製上の static.sapsailing.com などからローカルパスにリモートファイルシステムをマウントすることによって達成することができます。</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="localBaseUrlDesc" resname="localBaseUrlDesc">
|
||||
<source>Base URL + fileName = URL where uploaded file will be accessible</source>
|
||||
<target>ベース URL + ファイル名 = アップロードしたファイルがアクセス可能となる場所の URL</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="localLocalPathDesc" resname="localLocalPathDesc">
|
||||
<source>Local Path to use for file storage</source>
|
||||
<target>ファイル保管に使用するローカルパス</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:46:45Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sse.filestorage/resources/stringmessages/FileStorageStringMessages.properties" source-language="en" target-language="ru">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="37afe0b1eb405886cd475fe305c64722" form="base64">H4sIAAAAAAAAAJ1SwW7bMAy95yt4bNHBPeTcQ4tiQLGiGNrmAxiZTojSkiHKSb3Dvn2klGTddSdL1OPj4/PT9SNpuHsrKRMMLKSQItyP+Ms+b+sO3vcEmXSWwnFXERBxJGAFhIyxTyNsNk+PMMmsUAydMu84ojQwxd4au5Wu70Mg1ae+DmwXsL4rITwQbAXjB5QEsxL8vu3wqLchU0+xMIoCRy2E/fWF6ActTToZrMCJ0Kr/wfgwhw8qL7ZXpfQDpAFa+UxxtUf1M0q2tgXok7V8A7PAnzNEol5B52HgwDYEJsojq3KKer2SFFBOgvOBg7mdMqj5fvbVFVUDK7S5p4tpHDv4Xt93JsY7qHdohf3Esr9xaNXsWgJG2Nqx+mFILLBFpU2Wv7iXVMhG2ZPPCykW1yuLSzHmEx7GWSsi0+DxuLDyVjwUo7HI4hGxMPhY34g+cZyEKnbPdDAF2wXGNMcaIDz1fV3vax8M2QKlBQuHTnFSZPH8BKumZk+mSTi0f3HxoGsGPzTl1Wc/w+b1GW7gsvhdLRx9JZgnSdibvirlyCL/btgYn88TKme9gV/PqXDtbRf7Mbij1R9TuhdHUgMAAA==</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:05Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3Desc" resname="s3Desc">
|
||||
<source>Store files on Amazon S3. The resulting file name is a random UUID plus the original file ending.</source>
|
||||
<target>Храните файлы на Amazon S3. Результирующее имя файла — случайный UUID плюс расширение исходного файла.</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3AccessIdDesc" resname="s3AccessIdDesc">
|
||||
<source>Access ID (leave blank to use ~/.aws/credentials instead)</source>
|
||||
<target>Ид. доступа (оставьте пустым, чтобы использовать ~/.aws/credentials)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3AccessKeyDesc" resname="s3AccessKeyDesc">
|
||||
<source>Secret Access Key (leave blank to use ~/.aws/credentials instead)</source>
|
||||
<target>Секретный ключ доступа (leave blank to use ~/.aws/credentials instead)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3BucketNameDesc" resname="s3BucketNameDesc">
|
||||
<source>Name of Bucket to use (has to already exist, and user needs sufficient permissions)</source>
|
||||
<target>Имя используемого бакета (должен уже существовать, пользователю необходимы достаточные разрешения доступа)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="localDesc" resname="localDesc">
|
||||
<source>Service for storing files in the local file system. Files get stored in localPath+fileName and can be accessed at baseUrl+fileName Note that the content lying in baseUrl must therefore be accessible remotely. This can for examplebe achieved by mounting a remote file system for example from static.sapsailing.com on the replicas to localPath.</source>
|
||||
<target>Сервис для хранения файлов в локальной файловой системе. Файлы сохраняются в папке локальныйПуть+имяФайла и доступны по адресу базовыйUrl+имяФайла. Соответственно, необходима возможность удаленного доступа к содержимому по адресу базовыйUrl. Этого можно достичь, смонтировав удаленную файловую систему (например, из static.sapsailing.com) в папке локальныйПуть на репликах.</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="localBaseUrlDesc" resname="localBaseUrlDesc">
|
||||
<source>Base URL + fileName = URL where uploaded file will be accessible</source>
|
||||
<target>Базовый URL + имяФайла = URL для доступа к выложенному файлу</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="localLocalPathDesc" resname="localLocalPathDesc">
|
||||
<source>Local Path to use for file storage</source>
|
||||
<target>Локальный путь для файлового хранилища</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-19T09:42:17Z" original="/usr/sap/ljs/app/Converter_5483050776164983/java/com.sap.sse.filestorage/resources/stringmessages/FileStorageStringMessages.properties" source-language="en" target-language="zh-CN">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="37afe0b1eb405886cd475fe305c64722" form="base64">H4sIAAAAAAAAAJ1SwW7bMAy95yt4bNHBPeTcQ4tiQLGiGNrmAxiZTojSkiHKSb3Dvn2klGTddSdL1OPj4/PT9SNpuHsrKRMMLKSQItyP+Ms+b+sO3vcEmXSWwnFXERBxJGAFhIyxTyNsNk+PMMmsUAydMu84ojQwxd4au5Wu70Mg1ae+DmwXsL4rITwQbAXjB5QEsxL8vu3wqLchU0+xMIoCRy2E/fWF6ActTToZrMCJ0Kr/wfgwhw8qL7ZXpfQDpAFa+UxxtUf1M0q2tgXok7V8A7PAnzNEol5B52HgwDYEJsojq3KKer2SFFBOgvOBg7mdMqj5fvbVFVUDK7S5p4tpHDv4Xt93JsY7qHdohf3Esr9xaNXsWgJG2Nqx+mFILLBFpU2Wv7iXVMhG2ZPPCykW1yuLSzHmEx7GWSsi0+DxuLDyVjwUo7HI4hGxMPhY34g+cZyEKnbPdDAF2wXGNMcaIDz1fV3vax8M2QKlBQuHTnFSZPH8BKumZk+mSTi0f3HxoGsGPzTl1Wc/w+b1GW7gsvhdLRx9JZgnSdibvirlyCL/btgYn88TKme9gV/PqXDtbRf7Mbij1R9TuhdHUgMAAA==</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-05-11T12:28:05Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
<body>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3Desc" resname="s3Desc">
|
||||
<source>Store files on Amazon S3. The resulting file name is a random UUID plus the original file ending.</source>
|
||||
<target>将文件存储在 Amazon S3 中。生成的文件名称为随机的 UUID 加原始文件结尾。</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3AccessIdDesc" resname="s3AccessIdDesc">
|
||||
<source>Access ID (leave blank to use ~/.aws/credentials instead)</source>
|
||||
<target>访问编号(留空,改用 ~/.aws/credentials)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3AccessKeyDesc" resname="s3AccessKeyDesc">
|
||||
<source>Secret Access Key (leave blank to use ~/.aws/credentials instead)</source>
|
||||
<target>秘密访问密钥(留空,改用 ~/.aws/credentials)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="s3BucketNameDesc" resname="s3BucketNameDesc">
|
||||
<source>Name of Bucket to use (has to already exist, and user needs sufficient permissions)</source>
|
||||
<target>所用存储段的名称(必须已存在,并且用户需要足够的权限)</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="localDesc" resname="localDesc">
|
||||
<source>Service for storing files in the local file system. Files get stored in localPath+fileName and can be accessed at baseUrl+fileName Note that the content lying in baseUrl must therefore be accessible remotely. This can for examplebe achieved by mounting a remote file system for example from static.sapsailing.com on the replicas to localPath.</source>
|
||||
<target>用于在本地文件系统中存储文件的服务。文件存储在 localPath+fileName 中,可以在 baseUrl+fileName 访问。请注意,必须可以远程访问 baseUrl 中的内容。例如,可以从 localPath 副本所在的 static.sapsailing.com 安装远程文件系统。</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="localBaseUrlDesc" resname="localBaseUrlDesc">
|
||||
<source>Base URL + fileName = URL where uploaded file will be accessible</source>
|
||||
<target>基本 URL + 文件名称 = URL,其中可以访问上传的文件</target>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="localLocalPathDesc" resname="localLocalPathDesc">
|
||||
<source>Local Path to use for file storage</source>
|
||||
<target>用于存储文件的本地路径</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-12T13:07:55Z" original="/usr/sap/ljs/app/Converter_2475291648609719345/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages.properties" source-language="en" target-language="ja">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-30T12:19:28Z" original="/usr/sap/ljs/app/Converter_2475291648609719345/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages.properties" source-language="en" target-language="ja">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="85e48bcf9e250e66161b1b03d11cf699" form="base64">H4sIAAAAAAAAAH1SzU4jMQy+5yn8BIgXyKEa2MuuAFEEZ5O4naiZZOR4WiG0746TtLNod+Hi/2/8eb4UPJLdqjFMU9b4sTmTD/b+p3GYHEU7NGfQe7vx3pAPYm/VmEJ8JL5lzmw3CagGkJ1bmMnDaQyRAEVomiWkPUgGl5OgE5CRoKOv4CESFgI3kjvAW14YEskp86FOJ3IScgJMHoTfAPcY0pVxMReyQ7WNudADZ0d+YRowxnaGEKxFqNUz30eaY6Bity0D7qlp7Ic8TUsKDivhlyBjH7LtRuXzqQsnbZ+PMHpT0L+3aU73yKb0WLcIYIE+YFxeor/L8kRFlNxMLJXKUMuQsv4YbcC8dlaAfua/87rqi/G+v/IPjv5CdDaNvDZX1K+M/itY1N63uCOGiK/xAi3/YC8DF3hR5XZMZVS1mjcJJ7J3aswR40L2uVrjqTgOc30G9uZP3AXryiiTtAv7hbFNDZ+zqkbVqwreg7Xyowk+50RJ1i7sVOn3699mbu9yS1GfoD0/0tIy8wFPN7vhNwMAAA==</internal-file>
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-12T13:07:55Z" original="/usr/sap/ljs/app/Converter_2475291648609719345/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages.properties" source-language="en" target-language="ru">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-30T12:19:28Z" original="/usr/sap/ljs/app/Converter_2475291648609719345/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages.properties" source-language="en" target-language="ru">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="85e48bcf9e250e66161b1b03d11cf699" form="base64">H4sIAAAAAAAAAH1SzU4jMQy+5yn8BIgXyKEa2MuuAFEEZ5O4naiZZOR4WiG0746TtLNod+Hi/2/8eb4UPJLdqjFMU9b4sTmTD/b+p3GYHEU7NGfQe7vx3pAPYm/VmEJ8JL5lzmw3CagGkJ1bmMnDaQyRAEVomiWkPUgGl5OgE5CRoKOv4CESFgI3kjvAW14YEskp86FOJ3IScgJMHoTfAPcY0pVxMReyQ7WNudADZ0d+YRowxnaGEKxFqNUz30eaY6Bity0D7qlp7Ic8TUsKDivhlyBjH7LtRuXzqQsnbZ+PMHpT0L+3aU73yKb0WLcIYIE+YFxeor/L8kRFlNxMLJXKUMuQsv4YbcC8dlaAfua/87rqi/G+v/IPjv5CdDaNvDZX1K+M/itY1N63uCOGiK/xAi3/YC8DF3hR5XZMZVS1mjcJJ7J3aswR40L2uVrjqTgOc30G9uZP3AXryiiTtAv7hbFNDZ+zqkbVqwreg7Xyowk+50RJ1i7sVOn3699mbu9yS1GfoD0/0tIy8wFPN7vhNwMAAA==</internal-file>
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-12T13:07:55Z" original="/usr/sap/ljs/app/Converter_2475291648609719345/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages.properties" source-language="en" target-language="zh-CN">
|
||||
<file datatype="javapropertyresourcebundle" date="2016-05-30T12:19:28Z" original="/usr/sap/ljs/app/Converter_2475291648609719345/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/StringMessages.properties" source-language="en" target-language="zh-CN">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="85e48bcf9e250e66161b1b03d11cf699" form="base64">H4sIAAAAAAAAAH1SzU4jMQy+5yn8BIgXyKEa2MuuAFEEZ5O4naiZZOR4WiG0746TtLNod+Hi/2/8eb4UPJLdqjFMU9b4sTmTD/b+p3GYHEU7NGfQe7vx3pAPYm/VmEJ8JL5lzmw3CagGkJ1bmMnDaQyRAEVomiWkPUgGl5OgE5CRoKOv4CESFgI3kjvAW14YEskp86FOJ3IScgJMHoTfAPcY0pVxMReyQ7WNudADZ0d+YRowxnaGEKxFqNUz30eaY6Bity0D7qlp7Ic8TUsKDivhlyBjH7LtRuXzqQsnbZ+PMHpT0L+3aU73yKb0WLcIYIE+YFxeor/L8kRFlNxMLJXKUMuQsv4YbcC8dlaAfua/87rqi/G+v/IPjv5CdDaNvDZX1K+M/itY1N63uCOGiK/xAi3/YC8DF3hR5XZMZVS1mjcJJ7J3aswR40L2uVrjqTgOc30G9uZP3AXryiiTtAv7hbFNDZ+zqkbVqwreg7Xyowk+50RJ1i7sVOn3699mbu9yS1GfoD0/0tIy8wFPN7vhNwMAAA==</internal-file>
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
package com.sap.sse.util.impl;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
@@ -16,22 +12,16 @@ public enum NonGwtUrlHelper implements UrlHelper {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(NonGwtUrlHelper.class.getName());
|
||||
|
||||
public String encodeUrl(String decodedUrlString) {
|
||||
try {
|
||||
URL url = new URL(decodedUrlString);
|
||||
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(),
|
||||
url.getQuery(), url.getRef());
|
||||
return uri.toString();
|
||||
} catch (MalformedURLException | URISyntaxException f) {
|
||||
logger.log(Level.WARNING, "problem encoding URL string "+decodedUrlString, f);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String encodeQueryString(String queryString) {
|
||||
try {
|
||||
return URLEncoder.encode(queryString, "UTF-8");
|
||||
// TODO See bug3664 => https://bugzilla.sapsailing.com/bugzilla/show_bug.cgi?id=3664
|
||||
// Because of changes in the query string encoding, the Sail InSight-App for iOS will now have problems
|
||||
// while parsing the registration URLs, which are sent to invited competitors, if e.g. the leaderboard name
|
||||
// contains whitespaces. To avoid this problems, we use this temporary fix until a new version of the Sail
|
||||
// InSight-App for iOS is rolled out. Afterwards this fix must be replaced by the line below.
|
||||
return URLEncoder.encode(queryString, "UTF-8").replace("+", "%20");
|
||||
// return URLEncoder.encode(queryString, "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
logger.log(Level.WARNING, "problem encoding URL query string "+queryString, e);
|
||||
return null;
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<View
|
||||
android:id="@+id/toolbar_separator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/toolbar_separator_height"
|
||||
android:layout_alignParentTop="true"
|
||||
android:background="@color/sap_yellow"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/homeBackground"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:contentDescription="@string/empty"
|
||||
android:layout_below="@id/toolbar_separator"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/working_title"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/bottomLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/qr_code_label_height"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:background="@color/black_transparent"
|
||||
>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:gravity="center"
|
||||
android:text="@string/scan_hint"
|
||||
android:textColor="@color/white"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/two_buttons_layout"
|
||||
android:orientation="horizontal"
|
||||
android:layout_above="@+id/bottomLayout"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
android:id="@+id/noQrCode"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/home_button_height"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:background="@drawable/rounded_btn_white"
|
||||
android:textColor="@color/black"
|
||||
android:text="@string/no_qr_code"/>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
android:id="@+id/scanQr"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/home_button_height"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:background="@drawable/rounded_btn_yellow"
|
||||
android:textAllCaps="true"
|
||||
android:textStyle="bold"
|
||||
android:text="@string/scan_qr"/>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<ListView
|
||||
android:id="@+id/listRegatta"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/two_buttons_layout"
|
||||
android:layout_below="@id/toolbar_separator"
|
||||
android:divider="@android:color/white"
|
||||
android:dividerHeight="1dp"
|
||||
>
|
||||
</ListView>
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -2,6 +2,10 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/toolbar_separator_height"
|
||||
android:background="@color/sap_yellow"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/center_anchor"
|
||||
|
||||
@@ -1,21 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<View
|
||||
android:id="@+id/toolbar_separator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/toolbar_separator_height"
|
||||
android:layout_alignParentTop="true"
|
||||
android:background="@color/sap_yellow"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/homeBackground"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_below="@id/toolbar_separator"
|
||||
android:contentDescription="@string/empty"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/working_title" />
|
||||
android:src="@drawable/working_title"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/bottomLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_height="@dimen/qr_code_label_height"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
@@ -28,13 +36,13 @@
|
||||
android:layout_centerVertical="true"
|
||||
android:gravity="center"
|
||||
android:text="@string/scan_hint"
|
||||
android:textColor="@color/white" />
|
||||
android:textColor="@color/white"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
android:id="@+id/scanQr"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="80dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/home_button_height"
|
||||
android:layout_above="@+id/noQrCode"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
@@ -44,13 +52,14 @@
|
||||
android:text="@string/scan_qr"
|
||||
android:textAllCaps="true"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
android:textStyle="bold"/>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
android:id="@+id/noQrCode"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@+id/bottomLayout"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:background="@drawable/rounded_btn_white"
|
||||
@@ -59,15 +68,15 @@
|
||||
android:text="@string/no_qr_code"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp" />
|
||||
android:textSize="18sp"/>
|
||||
|
||||
<ListView
|
||||
android:id="@+id/listRegatta"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@id/scanQr"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_below="@id/toolbar_separator"
|
||||
android:divider="@android:color/white"
|
||||
android:dividerHeight="1dp" />
|
||||
android:dividerHeight="1dp"/>
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -43,7 +43,7 @@
|
||||
<View
|
||||
android:id="@+id/toolbar_separator"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="4dp"
|
||||
android:layout_height="@dimen/toolbar_separator_height"
|
||||
android:background="@color/sap_yellow"/>
|
||||
|
||||
<FrameLayout
|
||||
|
||||
@@ -23,11 +23,14 @@
|
||||
<dimen name="tab_space_unselected_top">6sp</dimen>
|
||||
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||
<dimen name="activity_horizontal_margin">16dp</dimen>
|
||||
<dimen name="toolbar_separator_height">4dp</dimen>
|
||||
|
||||
<!-- Values for buttons -->
|
||||
<dimen name="about_button_top_bottom_margin">10dp</dimen>
|
||||
<dimen name="about_button_side_margin">16dp</dimen>
|
||||
<dimen name="about_button_height">80dp</dimen>
|
||||
<dimen name="about_button_text_size">18sp</dimen>
|
||||
<dimen name="home_button_height">80dp</dimen>
|
||||
<dimen name="qr_code_label_height">50dp</dimen>
|
||||
|
||||
</resources>
|
||||
+18
-8
@@ -13,7 +13,13 @@ public abstract class AbstractBaseActivity extends SendingServiceAwareActivity {
|
||||
|
||||
private static final String TAG = AbstractBaseActivity.class.getName();
|
||||
|
||||
protected ProgressDialog progressDialog;
|
||||
/**
|
||||
* An object used to synchronize access to the {@link #progressDialog} field to avoid concurrency
|
||||
* issues during re-assigning a new dialog.
|
||||
*/
|
||||
private final Object progressDialogMonitor = new Object();
|
||||
|
||||
private ProgressDialog progressDialog;
|
||||
|
||||
public void replaceFragment(int view, Fragment fragment) {
|
||||
ExLog.i(this, TAG, "Set new Fragment: " + fragment.toString());
|
||||
@@ -25,11 +31,13 @@ public abstract class AbstractBaseActivity extends SendingServiceAwareActivity {
|
||||
}
|
||||
|
||||
public void showProgressDialog(String title, String message) {
|
||||
if (progressDialog == null || !progressDialog.isShowing()) {
|
||||
progressDialog = new ProgressDialog(this);
|
||||
progressDialog.setTitle(title);
|
||||
progressDialog.setMessage(message);
|
||||
progressDialog.show();
|
||||
synchronized (progressDialogMonitor) {
|
||||
if (progressDialog == null || !progressDialog.isShowing()) {
|
||||
progressDialog = new ProgressDialog(this);
|
||||
progressDialog.setTitle(title);
|
||||
progressDialog.setMessage(message);
|
||||
progressDialog.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,8 +46,10 @@ public abstract class AbstractBaseActivity extends SendingServiceAwareActivity {
|
||||
}
|
||||
|
||||
public void dismissProgressDialog() {
|
||||
if (progressDialog != null && progressDialog.isShowing()) {
|
||||
progressDialog.dismiss();
|
||||
synchronized (progressDialogMonitor) {
|
||||
if (progressDialog != null && progressDialog.isShowing()) {
|
||||
progressDialog.dismiss();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<RelativeLayout
|
||||
android:id="@+id/bottomLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_height="@dimen/qr_code_label_height"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
@@ -45,8 +45,8 @@
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
android:id="@+id/scanQr"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="40dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/home_button_height"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
@@ -58,8 +58,8 @@
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
android:id="@+id/noQrCode"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="40dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/home_button_height"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/list_header_background_color"
|
||||
tools:ignore="Overdraw">
|
||||
android:background="@color/list_header_background_color">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
<string name="initial_timer_text_zerozero" translatable="false">00:00:00</string>
|
||||
<string name="initial_hyphen" translatable="false">-</string>
|
||||
<string name="initial_hyphen_degrees" translatable="false">-°</string>
|
||||
<string name="course_over_ground_display" translatable="false">%d°</string>
|
||||
<string name="content_description_flag_icon" translatable="false">flag icon</string>
|
||||
<string name="tracking_notification_text">Currently Tracking %s</string>
|
||||
<string name="waiting_for_gps">Waiting for GPS</string>
|
||||
|
||||
+8
-7
@@ -74,10 +74,17 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
* displayed immediately after device rotation. Thus they are cached here and the fragments can pick them up.
|
||||
*/
|
||||
public String lastSpeedIndicatorText;
|
||||
public String lastCompassIndicatorText = "-°";
|
||||
public String lastCompassIndicatorText = "";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
if (savedInstanceState != null) {
|
||||
lastCompassIndicatorText = savedInstanceState.getString(SIS_LAST_COMPASS_TEXT, getString(R.string.initial_hyphen_degrees));
|
||||
lastSpeedIndicatorText = savedInstanceState.getString(SIS_LAST_SPEED_TEXT, getString(R.string.initial_hyphen));
|
||||
} else {
|
||||
lastCompassIndicatorText = getString(R.string.initial_hyphen_degrees);
|
||||
lastSpeedIndicatorText = getString(R.string.initial_hyphen);
|
||||
}
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
prefs = new AppPreferences(this);
|
||||
@@ -87,10 +94,7 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
} else {
|
||||
checkinDigest = prefs.getTrackerIsTrackingCheckinDigest();
|
||||
}
|
||||
lastSpeedIndicatorText = getString(R.string.initial_hyphen);
|
||||
|
||||
setContentView(R.layout.activity_tracking);
|
||||
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
if (toolbar != null) {
|
||||
setSupportActionBar(toolbar);
|
||||
@@ -126,10 +130,7 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
} else {
|
||||
trackingFragment = new TrackingFragment();
|
||||
}
|
||||
|
||||
lastViewPagerItem = savedInstanceState.getInt(SIS_LAST_VIEWPAGER_ITEM);
|
||||
lastSpeedIndicatorText = savedInstanceState.getString(SIS_LAST_SPEED_TEXT, "-");
|
||||
lastCompassIndicatorText = savedInstanceState.getString(SIS_LAST_COMPASS_TEXT, "-°");
|
||||
} else {
|
||||
trackingFragment = new TrackingFragment();
|
||||
}
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ public class CompassFragment extends BaseFragment {
|
||||
if (isAdded()) {
|
||||
TextView headingText = (TextView) getActivity().findViewById(R.id.compass_bearing_text_view);
|
||||
if (bearing != null) {
|
||||
headingText.setText(String.valueOf(Math.round(bearing.getDegrees())) + (char) 0x00B0);
|
||||
headingText.setText(getString(R.string.course_over_ground_display, Math.round(bearing.getDegrees())));
|
||||
} else {
|
||||
headingText.setText(R.string.initial_hyphen_degrees);
|
||||
}
|
||||
|
||||
@@ -40,8 +40,7 @@
|
||||
|
||||
<activity
|
||||
android:name=".ui.activities.StartActivity"
|
||||
android:label="@string/app_name"
|
||||
android:screenOrientation="portrait">
|
||||
android:label="@string/app_name">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
|
||||
@@ -66,15 +65,15 @@
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.activities.RegattaActivity"
|
||||
android:screenOrientation="portrait"/>
|
||||
android:configChanges="layoutDirection|screenSize|orientation"/>
|
||||
<activity
|
||||
android:name=".ui.activities.PositioningActivity"
|
||||
android:screenOrientation="portrait"/>
|
||||
android:name=".ui.activities.PositioningActivity"/>
|
||||
<activity
|
||||
android:name=".ui.activities.SettingActivity"/>
|
||||
android:name=".ui.activities.SettingActivity"
|
||||
android:configChanges="layoutDirection|screenSize|orientation"/>
|
||||
<activity
|
||||
android:name=".ui.activities.AboutActivity"
|
||||
android:screenOrientation="portrait"/>
|
||||
android:configChanges="layoutDirection|screenSize|orientation"/>
|
||||
|
||||
<service
|
||||
android:name="com.sap.sailing.android.shared.services.sending.MessageSendingService"
|
||||
|
||||
+166
@@ -0,0 +1,166 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/black"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/toolbar_separator_height"
|
||||
android:background="@color/sap_yellow"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:baselineAligned="false"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginBottom="@dimen/position_detail_bottom_margin"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/white">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/map"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:id="@+id/mark_header"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_gravity="start"
|
||||
android:background="@color/black_slightly_transparent"
|
||||
android:gravity="start"
|
||||
android:paddingBottom="7dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingTop="7dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="14sp"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<!-- Begin of detailed mark information -->
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_mark"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
<!-- Accuracy -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingTop="12dp">
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/accuracy"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="20sp"/>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:id="@+id/marker_gps_accuracy"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold"
|
||||
tools:text="ca. 13m"/>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.SignalQualityIndicatorView
|
||||
android:id="@+id/signal_quality_indicator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
</LinearLayout>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansLightTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:text="@string/accuracy_detail"/>
|
||||
|
||||
<View style="@style/Divider"/>
|
||||
|
||||
<!-- Distance to old buoy -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingTop="12dp">
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/distance"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="20sp"/>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:id="@+id/marker_gps_distance"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="20sp"
|
||||
tools:text="11,4m"/>
|
||||
</LinearLayout>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansLightTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:text="@string/distance_detail"/>
|
||||
|
||||
<View style="@style/Divider"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
<!-- Button -->
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
android:id="@+id/marker_set_position_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="80dp"
|
||||
android:layout_marginBottom="@dimen/position_detail_bottom_margin"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:background="@drawable/position_send_button"
|
||||
android:text="@string/set_position"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
+3
-17
@@ -10,7 +10,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="4dp"
|
||||
android:layout_height="@dimen/toolbar_separator_height"
|
||||
android:background="@color/sap_yellow"/>
|
||||
|
||||
<RelativeLayout
|
||||
@@ -19,11 +19,10 @@
|
||||
android:layout_weight="1"
|
||||
android:background="@color/white">
|
||||
|
||||
<fragment
|
||||
<FrameLayout
|
||||
android:id="@+id/map"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
class="com.google.android.gms.maps.MapFragment"/>
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:id="@+id/mark_header"
|
||||
@@ -148,17 +147,4 @@
|
||||
android:textAllCaps="false"
|
||||
android:textStyle="bold"/>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
android:id="@+id/marker_reset_position_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@drawable/rounded_btn_transparent"
|
||||
android:text="@string/reset_position"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"/>
|
||||
|
||||
</LinearLayout>
|
||||
+1
-1
@@ -7,7 +7,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="4dp"
|
||||
android:layout_height="@dimen/toolbar_separator_height"
|
||||
android:background="@color/sap_yellow"/>
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<dimen name="position_detail_bottom_margin">10dp</dimen>
|
||||
<dimen name="buoy_overview_text_size">20sp</dimen>
|
||||
</resources>
|
||||
+13
-9
@@ -3,6 +3,8 @@ package com.sap.sailing.android.buoy.positioning.app.ui.fragments;
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.FragmentManager;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
@@ -53,7 +55,6 @@ public class BuoyFragment extends BaseFragment implements LocationListener {
|
||||
private OpenSansTextView accuracyTextView;
|
||||
private OpenSansTextView distanceTextView;
|
||||
private OpenSansButton setPositionButton;
|
||||
private OpenSansButton resetPositionButton;
|
||||
private MapFragment mapFragment;
|
||||
private Location lastKnownLocation;
|
||||
private LatLng savedPosition;
|
||||
@@ -78,16 +79,14 @@ public class BuoyFragment extends BaseFragment implements LocationListener {
|
||||
|
||||
setUpSetPositionButton(layout, clickListener);
|
||||
|
||||
resetPositionButton = ViewHelper.get(layout, R.id.marker_reset_position_button);
|
||||
resetPositionButton.setOnClickListener(clickListener);
|
||||
resetPositionButton.setVisibility(View.GONE);
|
||||
|
||||
signalQualityIndicatorView = ViewHelper.get(layout, R.id.signal_quality_indicator);
|
||||
signalQualityIndicatorView.setSignalQuality(GPSQuality.noSignal.toInt());
|
||||
|
||||
mReceiver = new IntentReceiver();
|
||||
mGpsListener = new GPSListener();
|
||||
mBroadcastManager = LocalBroadcastManager.getInstance(inflater.getContext());
|
||||
initMapFragment();
|
||||
|
||||
return layout;
|
||||
}
|
||||
|
||||
@@ -96,7 +95,6 @@ public class BuoyFragment extends BaseFragment implements LocationListener {
|
||||
super.onResume();
|
||||
disablePositionButton();
|
||||
positioningActivity = (PositioningActivity) getActivity();
|
||||
mapFragment = (MapFragment) positioningActivity.getFragmentManager().findFragmentById(R.id.map);
|
||||
mapFragment.getMap().setMapType(GoogleMap.MAP_TYPE_SATELLITE);
|
||||
initialLocationUpdate = true;
|
||||
initLocationProvider();
|
||||
@@ -116,6 +114,14 @@ public class BuoyFragment extends BaseFragment implements LocationListener {
|
||||
checkGPS();
|
||||
}
|
||||
|
||||
private void initMapFragment() {
|
||||
mapFragment = new MapFragment();
|
||||
FragmentManager manager = getActivity().getFragmentManager();
|
||||
FragmentTransaction transaction = manager.beginTransaction();
|
||||
transaction.replace(R.id.map, mapFragment);
|
||||
transaction.commit();
|
||||
}
|
||||
|
||||
private void setUpSetPositionButton(View layout, ClickListener clickListener) {
|
||||
setPositionButton = ViewHelper.get(layout, R.id.marker_set_position_button);
|
||||
disablePositionButton();
|
||||
@@ -209,7 +215,7 @@ public class BuoyFragment extends BaseFragment implements LocationListener {
|
||||
updateMap();
|
||||
}
|
||||
|
||||
if (initialLocationUpdate) {
|
||||
if (initialLocationUpdate && lastKnownLocation != null) {
|
||||
LatLng lastKnownLatLng = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
|
||||
GoogleMap map = mapFragment.getMap();
|
||||
configureMap(map);
|
||||
@@ -330,8 +336,6 @@ public class BuoyFragment extends BaseFragment implements LocationListener {
|
||||
} else {
|
||||
Toast.makeText(getActivity(), "Location is not available yet", Toast.LENGTH_LONG).show();
|
||||
}
|
||||
} else if (id == R.id.marker_reset_position_button) {
|
||||
// Reset position
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.v4.widget.DrawerLayout
|
||||
<com.sap.sailing.racecommittee.app.ui.layouts.CustomDrawerLayout
|
||||
android:id="@+id/drawer_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
@@ -28,5 +28,5 @@
|
||||
android:layout_width="@dimen/navigation_drawer_width"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start" />
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
</com.sap.sailing.racecommittee.app.ui.layouts.CustomDrawerLayout>
|
||||
</RelativeLayout>
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.layouts;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
public class CustomDrawerLayout extends DrawerLayout {
|
||||
public CustomDrawerLayout(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public CustomDrawerLayout(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public CustomDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
||||
try {
|
||||
return super.onInterceptTouchEvent(ev);
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
// Fix for multitouch issue see: https://bugzilla.sapsailing.com/bugzilla/show_bug.cgi?id=3659
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
# Sailing Leagues
|
||||
|
||||
## bundesliga2016
|
||||
|
||||
### URL
|
||||
- Public ELB: https://bundesliga2016.sapsailing.com
|
||||
- Public ELB: https://bundesliga2-2016.sapsailing.com
|
||||
- Public Master WEB: https://bundesliga2016-master.sapsailing.com
|
||||
- Master Instance: `german-master.league.sapsailing.com`
|
||||
|
||||
### Firing up replica's
|
||||
|
||||
```
|
||||
INSTALL_FROM_RELEASE=build-201605131237
|
||||
USE_ENVIRONMENT=live-replica-server
|
||||
REPLICATE_MASTER_SERVLET_HOST=172.31.19.178
|
||||
REPLICATE_MASTER_EXCHANGE_NAME=germanleague2016
|
||||
REPLICATE_ON_START=com.sap.sailing.server.impl.RacingEventServiceImpl,com.sap.sse.security.impl.SecurityServiceImpl,com.sap.sse.filestorage.impl.FileStorageManagementServiceImpl,com.sap.sse.mail.impl.MailServiceImpl,com.sap.sailing.polars.impl.PolarDataServiceImpl
|
||||
SERVER_NAME=germanleague2016
|
||||
MONGODB_NAME=germanleague2016-replica
|
||||
EVENT_ID=85a865fd-6af2-4ac6-90d6-7c5c592a0975
|
||||
SERVER_STARTUP_NOTIFY=steffen.tobias.wagner@sap.com
|
||||
```
|
||||
|
||||
## danishleague2016
|
||||
|
||||
### URL
|
||||
- Public ELB: https://danishleague2016.sapsailing.com
|
||||
- Public Master WEB: https://danishleague2016-master.sapsailing.com
|
||||
- Master Instance: `danish-master.league.sapsailing.com`
|
||||
|
||||
### Firing up replica's
|
||||
|
||||
```
|
||||
INSTALL_FROM_RELEASE=build-201605131237
|
||||
USE_ENVIRONMENT=live-replica-server
|
||||
REPLICATE_MASTER_SERVLET_HOST=172.31.18.162
|
||||
REPLICATE_MASTER_EXCHANGE_NAME=danishleague2016
|
||||
REPLICATE_ON_START=com.sap.sailing.server.impl.RacingEventServiceImpl,com.sap.sse.security.impl.SecurityServiceImpl,com.sap.sse.filestorage.impl.FileStorageManagementServiceImpl,com.sap.sse.mail.impl.MailServiceImpl,com.sap.sailing.polars.impl.PolarDataServiceImpl
|
||||
SERVER_NAME=danishleague2016
|
||||
MONGODB_NAME=danishleague2016-replica
|
||||
EVENT_ID=3e8e08e1-05e2-4140-832f-1f4cf0065032
|
||||
SERVER_STARTUP_NOTIFY=steffen.tobias.wagner@sap.com
|
||||
```
|
||||
|
||||
## dutchleague2016
|
||||
|
||||
### URL
|
||||
- Public ELB: https://dutchleague2016.sapsailing.com
|
||||
- Public Master WEB: https://durchleague2016-master.sapsailing.com
|
||||
- Master Instance: `dutch-master.league.sapsailing.com`
|
||||
|
||||
### Firing up replica's
|
||||
|
||||
```
|
||||
INSTALL_FROM_RELEASE=build-201605131237
|
||||
USE_ENVIRONMENT=live-replica-server
|
||||
REPLICATE_MASTER_SERVLET_HOST=172.31.23.95
|
||||
REPLICATE_MASTER_EXCHANGE_NAME=dutchleague2016
|
||||
REPLICATE_ON_START=com.sap.sailing.server.impl.RacingEventServiceImpl,com.sap.sse.security.impl.SecurityServiceImpl,com.sap.sse.filestorage.impl.FileStorageManagementServiceImpl,com.sap.sse.mail.impl.MailServiceImpl,com.sap.sailing.polars.impl.PolarDataServiceImpl
|
||||
SERVER_NAME=dutchleague2016
|
||||
MONGODB_NAME=dutchleague2016-replica
|
||||
EVENT_ID=77999de1-e925-4e7e-b9be-f0b8e14616ae
|
||||
SERVER_STARTUP_NOTIFY=steffen.tobias.wagner@sap.com
|
||||
```
|
||||
|
||||
## norwegianleague2016
|
||||
|
||||
### URL
|
||||
- Public ELB: https://norwegianleage2016.sapsailing.com
|
||||
- Public Master WEB: https://norwegianleague2016-master.sapsailing.com
|
||||
- Master Instance: `norwegian-master.league.sapsailing.com`
|
||||
|
||||
### Firing up replica's
|
||||
|
||||
```
|
||||
INSTALL_FROM_RELEASE=build-201605131237
|
||||
USE_ENVIRONMENT=live-replica-server
|
||||
REPLICATE_MASTER_SERVLET_HOST=172.31.27.2
|
||||
REPLICATE_MASTER_EXCHANGE_NAME=norwegianleague2016
|
||||
REPLICATE_ON_START=com.sap.sailing.server.impl.RacingEventServiceImpl,com.sap.sse.security.impl.SecurityServiceImpl,com.sap.sse.filestorage.impl.FileStorageManagementServiceImpl,com.sap.sse.mail.impl.MailServiceImpl,com.sap.sailing.polars.impl.PolarDataServiceImpl
|
||||
SERVER_NAME=norwegianleague2016
|
||||
MONGODB_NAME=norwegianleague2016-replica
|
||||
EVENT_ID=69924f98-c00f-4f33-8264-d00ecc46c270
|
||||
SERVER_STARTUP_NOTIFY=steffen.tobias.wagner@sap.com
|
||||
```
|
||||
|
||||
## swedishleague2016
|
||||
|
||||
### URL
|
||||
- Public ELB: https://swedishleague2016.sapsailing.com
|
||||
- Public Master WEB: https://swedishleague2016-master.sapsailing.com
|
||||
- Master Instance: `swedish-master.league.sapsailing.com`
|
||||
|
||||
### Firing up replica's
|
||||
|
||||
```
|
||||
INSTALL_FROM_RELEASE=build-201605131237
|
||||
USE_ENVIRONMENT=live-replica-server
|
||||
REPLICATE_MASTER_SERVLET_HOST=172.31.31.165
|
||||
REPLICATE_MASTER_EXCHANGE_NAME=swedishleague2016
|
||||
REPLICATE_ON_START=com.sap.sailing.server.impl.RacingEventServiceImpl,com.sap.sse.security.impl.SecurityServiceImpl,com.sap.sse.filestorage.impl.FileStorageManagementServiceImpl,com.sap.sse.mail.impl.MailServiceImpl,com.sap.sailing.polars.impl.PolarDataServiceImpl
|
||||
SERVER_NAME=swedishleague2016
|
||||
MONGODB_NAME=swedishleague2016-replica
|
||||
EVENT_ID=1fa8905c-9449-419d-9986-c0a4a96632b0
|
||||
SERVER_STARTUP_NOTIFY=steffen.tobias.wagner@sap.com
|
||||
```
|
||||
|
||||
## finnishleague2016
|
||||
|
||||
### URL
|
||||
- Public ELB: https://finnishleague2016.sapsailing.com
|
||||
- Public Master WEB: https://finnishleague2016-master.sapsailing.com
|
||||
- Master Instance: `finnish-master.league.sapsailing.com`
|
||||
|
||||
### Firing up replica's
|
||||
|
||||
```
|
||||
INSTALL_FROM_RELEASE=build-201605131237
|
||||
USE_ENVIRONMENT=live-replica-server
|
||||
REPLICATE_MASTER_SERVLET_HOST=172.31.27.104
|
||||
REPLICATE_MASTER_EXCHANGE_NAME=finnishleague2016
|
||||
REPLICATE_ON_START=com.sap.sailing.server.impl.RacingEventServiceImpl,com.sap.sse.security.impl.SecurityServiceImpl,com.sap.sse.filestorage.impl.FileStorageManagementServiceImpl,com.sap.sse.mail.impl.MailServiceImpl,com.sap.sailing.polars.impl.PolarDataServiceImpl
|
||||
SERVER_NAME=finnishleague2016
|
||||
MONGODB_NAME=finnishleague2016-replica
|
||||
EVENT_ID=83a2846d-7c2d-4af9-a40d-3f20ed077a91
|
||||
SERVER_STARTUP_NOTIFY=steffen.tobias.wagner@sap.com
|
||||
```
|
||||
+9
-6
@@ -332,15 +332,18 @@ Follow these steps to upgrade the AMI:
|
||||
* Log in as user `root`
|
||||
* Run `yum update` to update the operating system
|
||||
* Remove any obsolete logs from `/home/sailing/servers/server/logs`
|
||||
* Update the git contents (essential for up-to-date versions of `/etc/init.d/sailing` which links to the git, and the `refreshInstance.sh` script used during automatic instance launch), and clean any build artifacts by doing <pre>
|
||||
su - sailing
|
||||
cd code
|
||||
mvn clean
|
||||
git fetch
|
||||
git merge origin/master</pre>
|
||||
* Update the git contents (essential for up-to-date versions of `/etc/init.d/sailing` which links to the git, and the `refreshInstance.sh` script used during automatic instance launch), and clean any build artifacts by doing
|
||||
```
|
||||
> su - sailing
|
||||
> cd code
|
||||
> mvn clean
|
||||
> git fetch
|
||||
> git merge origin/master
|
||||
```
|
||||
* Then, still as user `sailing`, edit `~sailing/servers/server/env.sh` and remove everything after the line `# **** Overwritten environment variables ****` as this will then be the place where any downloaded environment and the EC2 user data variables will be appended later during automatic installation upon reboot.
|
||||
* Check the sizes of the mounted partitions by doing `df; swapon -s`. These will come in handy after creating the new AMI in order to tag the new volume snapshots accordingly
|
||||
* Update any keys in `/root/.ssh/authorized_keys` and `/home/sailing/.ssh/authorized_keys`
|
||||
* Remove created http rewrite entries in `/etc/httpd/conf.d/001-events.conf`
|
||||
* In the EC2 administration console go to the "Instances" tab, select your running instance and from the "Actions" drop-down select "Create Image". Give the image the name "SAP Sailing Analytics App x.y" where "x.y" is the updated version number of the image. Just make sure it's greater than the previous one. If you feel like it, you may provide a short description telling the most important features of the image.
|
||||
* Once the image creation has completed, go to the Snapshots list in the "Elastic Block Store" category and name the new snapshots appropriately. Now the information about the device sizes obtained earlier from the `df` and `swapon` commands will help you to identify which snapshot is which. Usually, the three snapshots would be something like AMI Analytics Home x.y, AMI Analytics System x.y and AMI Analytics Swap x.y with "x.y" being the version number matching that of your image.
|
||||
* Now you can remove any earlier Sailing Server AMI version and the corresponding snapshots.
|
||||
|
||||
Reference in New Issue
Block a user