added gate line opening time feature to app. event post to server does still not work correctly.

This commit is contained in:
Fabian Tschirschnitz committed 2013-04-22 00:53:04 +02:00
1 parent d9ab3c5379
commit 3437581122
34 files changed
+428 -74

No files matched your search

@@ -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);
}
}
@@ -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
@@ -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);
}
@@ -16,4 +16,7 @@ public interface RaceStateChangedListener {
void onAutomaticRaceEnd(TimePoint automaticRaceEnd);
void onPathfinderSelected();
void onGateLineOpeningTimeChanged();
}
@@ -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();
}
}
}
@@ -49,6 +49,10 @@ public class RaceStateListener implements RaceStateChangedListener {
@Override
public void onPathfinderSelected() {
// do nothing
}
@Override
public void onGateLineOpeningTimeChanged() {
// do nothing
}
}
@@ -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();
}
}
}
@@ -0,0 +1,7 @@
package com.sap.sailing.racecommittee.app.ui.fragments.dialogs;
public interface GateLineOpeningTimeChangeUiListener {
public void updateGateLineOpeningTimeLabel();
}
@@ -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
}
}
@@ -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;
@@ -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 <
@@ -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());
}
}
}