mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-30 15:57:11 +00:00
added gate line opening time feature to app. event post to server does still not work correctly.
This commit is contained in:
1 parent
d9ab3c5379
commit
3437581122
34 files changed
+428
-74
No files matched your search
+6
@@ -6,6 +6,7 @@ import com.sap.sailing.domain.racelog.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogGateLineOpeningTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
@@ -59,4 +60,9 @@ public class RaceLogChangedVisitor implements RaceLogEventVisitor {
|
||||
listener.eventAdded(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogGateLineOpeningTimeEvent event) {
|
||||
listener.eventAdded(event);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -25,7 +25,7 @@ import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.startphase.GateSt
|
||||
public class GateStartProcedure implements StartProcedure {
|
||||
|
||||
private final static long startPhaseClassOverGolfUpIntervall = 8 * 60 * 1000; // minutes * seconds * milliseconds
|
||||
private final static long startPhasePapaUpInterval = 5 * 60 * 1000; // minutes * seconds * milliseconds
|
||||
private final static long startPhasePapaUpInterval = 4 * 60 * 1000; // minutes * seconds * milliseconds
|
||||
private final static long startPhasePapaDownInterval = 1 * 60 * 1000; // minutes * seconds * milliseconds
|
||||
private final static long startPhaseClassOverGolfDownInterval = 0 * 60 * 1000; // minutes * seconds * milliseconds
|
||||
|
||||
|
||||
+19
-1
@@ -119,9 +119,27 @@ public interface RaceState extends StartProcedureRaceStateChangedListener {
|
||||
* @return the timepoint at which the individual recall was displayed or null when the individual recall is already removed
|
||||
*/
|
||||
TimePoint getIndividualRecallDisplayedTime();
|
||||
|
||||
|
||||
/**
|
||||
* @return the current pathfinder boat if it is a gate start race
|
||||
*/
|
||||
String getPathfinder();
|
||||
|
||||
/**
|
||||
* Set the current pathfinder boat if it is a gate start race
|
||||
* @param sailingId
|
||||
*/
|
||||
void setPathfinder(String sailingId);
|
||||
|
||||
/**
|
||||
* @return the current pathfinder boat if it is a gate start race
|
||||
*/
|
||||
Long getGateLineOpeningTime();
|
||||
|
||||
/**
|
||||
* Set the current pathfinder boat if it is a gate start race
|
||||
* @param sailingId
|
||||
*/
|
||||
void setGateLineOpeningTime(Long gateLineOpeningTimeInMillis);
|
||||
|
||||
}
|
||||
+3
@@ -16,4 +16,7 @@ public interface RaceStateChangedListener {
|
||||
void onAutomaticRaceEnd(TimePoint automaticRaceEnd);
|
||||
|
||||
void onPathfinderSelected();
|
||||
|
||||
void onGateLineOpeningTimeChanged();
|
||||
|
||||
}
|
||||
+26
@@ -21,6 +21,7 @@ import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.FinishPositioningListFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.FinishedTimeFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.FinishingTimeFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.GateLineOpeningTimeFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.IndividualRecallFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.LastPublishedCourseDesignFinder;
|
||||
import com.sap.sailing.domain.racelog.analyzing.impl.PathfinderFinder;
|
||||
@@ -50,6 +51,7 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
|
||||
private FinishPositioningListFinder finishPositioningListFinder;
|
||||
private IndividualRecallFinder individualRecallFinder;
|
||||
private PathfinderFinder pathfinderFinder;
|
||||
private GateLineOpeningTimeFinder gateLineOpeningTimeFinder;
|
||||
|
||||
public RaceStateImpl(PassAwareRaceLog raceLog, StartProcedure procedure) {
|
||||
this.raceLog = raceLog;
|
||||
@@ -70,6 +72,7 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
|
||||
this.finishPositioningListFinder = new FinishPositioningListFinder(raceLog);
|
||||
this.individualRecallFinder = new IndividualRecallFinder(raceLog);
|
||||
this.pathfinderFinder = new PathfinderFinder(raceLog);
|
||||
this.gateLineOpeningTimeFinder = new GateLineOpeningTimeFinder(raceLog);
|
||||
updateStatus();
|
||||
}
|
||||
|
||||
@@ -294,4 +297,27 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getGateLineOpeningTime() {
|
||||
return gateLineOpeningTimeFinder.getGateLineOpeningTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGateLineOpeningTime(Long gateLineOpeningTimeInMillis) {
|
||||
TimePoint eventTime = MillisecondsTimePoint.now();
|
||||
|
||||
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createGateLineOpeningTimeEvent(eventTime, raceLog.getCurrentPassId(),
|
||||
gateLineOpeningTimeInMillis);
|
||||
|
||||
this.raceLog.add(event);
|
||||
|
||||
notifyListenersAboutGateLineOpeningTimeChange();
|
||||
}
|
||||
|
||||
private void notifyListenersAboutGateLineOpeningTimeChange() {
|
||||
for (RaceStateChangedListener listener : stateChangedListeners) {
|
||||
listener.onGateLineOpeningTimeChanged();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+5
-1
@@ -49,6 +49,10 @@ public class RaceStateListener implements RaceStateChangedListener {
|
||||
@Override
|
||||
public void onPathfinderSelected() {
|
||||
// do nothing
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGateLineOpeningTimeChanged() {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
+8
@@ -24,6 +24,7 @@ import com.sap.sailing.racecommittee.app.domain.state.RaceStateChangedListener;
|
||||
import com.sap.sailing.racecommittee.app.logging.ExLog;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.chooser.RaceInfoFragmentChooser;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.CourseDesignDialogFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.GateLineOpeningTimeChangeUiListener;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.IndividualRecallUiListener;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.PathfinderSelectedUiListener;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment;
|
||||
@@ -253,4 +254,11 @@ public class RaceInfoFragment extends RaceFragment implements RaceStateChangedLi
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGateLineOpeningTimeChanged() {
|
||||
if (infoFragment instanceof GateLineOpeningTimeChangeUiListener) {
|
||||
((GateLineOpeningTimeChangeUiListener) infoFragment).updateGateLineOpeningTimeLabel();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.fragments.dialogs;
|
||||
|
||||
public interface GateLineOpeningTimeChangeUiListener {
|
||||
|
||||
public void updateGateLineOpeningTimeLabel();
|
||||
|
||||
}
|
||||
+48
-52
@@ -13,62 +13,58 @@ import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
public class RaceChooseLineOpeningTimeDialog extends RaceDialogFragment {
|
||||
|
||||
public interface GateLineOpeningTimeSelectionListener {
|
||||
public void onLineOpeningTimeSelected();
|
||||
}
|
||||
|
||||
private GateLineOpeningTimeSelectionListener selectionListener;
|
||||
|
||||
private EditText lineOpeningTimeEditText;
|
||||
private Button chooseButton;
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
selectionListener = (GateLineOpeningTimeSelectionListener) activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.race_choose_line_opening_time_view, container);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
getDialog().setTitle(getString(R.string.set_gate_line_opening_time_title));
|
||||
|
||||
lineOpeningTimeEditText = (EditText) getView().findViewById(R.id.lineOpeningTimeText);
|
||||
chooseButton = (Button) getDialog().findViewById(R.id.chooseLineOpeningTimeButton);
|
||||
|
||||
chooseButton.setOnClickListener(new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
onChooseClicked(v);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void onChooseClicked(View view) {
|
||||
int lineOpeningTime = convertToInteger(lineOpeningTimeEditText.getText().toString());
|
||||
//this.getRace().changeGateLineOpeningTime(lineOpeningTime);
|
||||
selectionListener.onLineOpeningTimeSelected();
|
||||
Log.i("RACE_SET_GATELINE_OPENING_TIME", String.valueOf(lineOpeningTime));
|
||||
dismiss();
|
||||
}
|
||||
|
||||
protected Integer convertToInteger(String text) {
|
||||
try {
|
||||
return Integer.parseInt(text);
|
||||
} catch (NumberFormatException ex) {
|
||||
throw new IllegalStateException("An NumberFormatException occured");
|
||||
}
|
||||
}
|
||||
public interface GateLineOpeningTimeSelectionListener {
|
||||
public void onLineOpeningTimeSelected();
|
||||
}
|
||||
|
||||
private EditText lineOpeningTimeEditText;
|
||||
private Button chooseButton;
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.race_choose_line_opening_time_view, container);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
getDialog().setTitle(getString(R.string.set_gate_line_opening_time_title));
|
||||
|
||||
lineOpeningTimeEditText = (EditText) getView().findViewById(R.id.lineOpeningTimeText);
|
||||
chooseButton = (Button) getDialog().findViewById(R.id.chooseLineOpeningTimeButton);
|
||||
|
||||
chooseButton.setOnClickListener(new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
onChooseClicked(v);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void onChooseClicked(View view) {
|
||||
int lineOpeningTime = convertToInteger(lineOpeningTimeEditText.getText().toString());
|
||||
this.getRace().getState().setGateLineOpeningTime(Long.valueOf(60 * 1000 * lineOpeningTime));
|
||||
Log.i("RACE_SET_GATELINE_OPENING_TIME", String.valueOf(lineOpeningTime));
|
||||
dismiss();
|
||||
}
|
||||
|
||||
protected Integer convertToInteger(String text) {
|
||||
try {
|
||||
return Integer.parseInt(text);
|
||||
} catch (NumberFormatException ex) {
|
||||
throw new IllegalStateException("An NumberFormatException occured");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyTick() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
-2
@@ -5,11 +5,9 @@ import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.View.OnKeyListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
+5
@@ -250,6 +250,11 @@ public class ManagedRaceListFragment extends ListFragment implements JuryFlagCli
|
||||
notifyDataChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGateLineOpeningTimeChanged() {
|
||||
notifyDataChanged();
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
* public void notifyDataChanged() { List<RaceListDataType> list = adapter.getItems(); for (int i = 0; i <
|
||||
|
||||
+13
-3
@@ -25,6 +25,7 @@ import com.sap.sailing.racecommittee.app.domain.startprocedure.impl.GateStartPha
|
||||
import com.sap.sailing.racecommittee.app.logging.ExLog;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.RaceFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.AbortModeSelectionDialog;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.GateLineOpeningTimeChangeUiListener;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.PathfinderSelectedUiListener;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceChooseLineOpeningTimeDialog;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceChoosePathFinderDialog;
|
||||
@@ -32,7 +33,7 @@ import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.RaceInfoListener;
|
||||
import com.sap.sailing.racecommittee.app.utils.TimeUtils;
|
||||
|
||||
public class GateStartPhaseFragment extends RaceFragment implements GateStartPhaseEventListener, PathfinderSelectedUiListener {
|
||||
public class GateStartPhaseFragment extends RaceFragment implements GateStartPhaseEventListener, PathfinderSelectedUiListener, GateLineOpeningTimeChangeUiListener {
|
||||
|
||||
private RaceInfoListener infoListener;
|
||||
|
||||
@@ -99,7 +100,9 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
|
||||
pathfinderLabel.setText(getRace().getState().getPathfinder());
|
||||
}
|
||||
lineOpeningTimeLabel = (TextView) getView().findViewById(R.id.lineOpeningTimeLabel);
|
||||
|
||||
if(getRace().getState().getGateLineOpeningTime()!=null){
|
||||
lineOpeningTimeLabel.setText(getRace().getState().getGateLineOpeningTime().toString());
|
||||
}
|
||||
pathFinderButton.setOnClickListener(new OnClickListener() {
|
||||
|
||||
public void onClick(View v) {
|
||||
@@ -261,8 +264,15 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
|
||||
|
||||
@Override
|
||||
public void updatePathfinderLabel() {
|
||||
if(getRace().getState().getPathfinder()!=null){
|
||||
if (getRace().getState().getPathfinder() != null) {
|
||||
pathfinderLabel.setText(getRace().getState().getPathfinder());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateGateLineOpeningTimeLabel() {
|
||||
if (getRace().getState().getGateLineOpeningTime() != null) {
|
||||
lineOpeningTimeLabel.setText(getRace().getState().getGateLineOpeningTime().toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user