From bc68412fed040cb5bbbbfa5a42093724451228f6 Mon Sep 17 00:00:00 2001 From: Lukas Niemeier Date: Thu, 14 Nov 2013 14:25:12 +0100 Subject: [PATCH] # completed the interface of RaceState2 and all procedures # fixed access on them in ui --- .../domain/racelog/state/RaceState2.java | 4 +-- .../racelog/state/impl/RaceState2Impl.java | 8 ++--- .../GateStartChangedListener.java | 3 +- .../GateStartRacingProcedure.java | 7 ++++- .../impl/GateStartChangedListeners.java | 7 +++++ .../impl/GateStartRacingProcedureImpl.java | 29 ++++++++++++++---- .../app/ui/fragments/RaceInfoFragment.java | 30 +++++++------------ .../dialogs/PositioningFragment.java | 20 +++++-------- .../dialogs/ProtestTimeDialogFragment.java | 4 +-- .../RaceChooseGateLineOpeningTimeDialog.java | 7 ++--- .../dialogs/RaceChoosePathFinderDialog.java | 8 ++--- .../dialogs/RaceFinishedTimeDialog.java | 2 +- .../running/GateStartRunningRaceFragment.java | 5 ++++ .../GateStartStartphaseRaceFragment2.java | 5 ++++ 14 files changed, 83 insertions(+), 56 deletions(-) diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/RaceState2.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/RaceState2.java index 496e400ac36..c24ab19f0f5 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/RaceState2.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/RaceState2.java @@ -36,10 +36,10 @@ public interface RaceState2 extends RaceStateEventProcessor { void setAborted(TimePoint timePoint, boolean isPostponed, Flags abortFlag); void setGeneralRecall(TimePoint timePoint); - void setFinishPositioningListChanged(CompetitorResults positionedCompetitors); + void setFinishPositioningListChanged(TimePoint timePoint, CompetitorResults positionedCompetitors); CompetitorResults getFinishPositioningList(); - void setFinishPositioningConfirmed(); + void setFinishPositioningConfirmed(TimePoint timePoint); boolean isFinishPositioningConfirmed(); void setCourseDesign(CourseBase courseDesign); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceState2Impl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceState2Impl.java index acb2676d013..6f4441ed68c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceState2Impl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/impl/RaceState2Impl.java @@ -203,9 +203,9 @@ public class RaceState2Impl implements RaceState2, RaceLogChangedListener { } @Override - public void setFinishPositioningListChanged(CompetitorResults positionedCompetitors) { + public void setFinishPositioningListChanged(TimePoint timePoint, CompetitorResults positionedCompetitors) { raceLog.add(factory.createFinishPositioningListChangedEvent( - MillisecondsTimePoint.now(), author, raceLog.getCurrentPassId(), positionedCompetitors)); + timePoint, author, raceLog.getCurrentPassId(), positionedCompetitors)); } @Override @@ -214,9 +214,9 @@ public class RaceState2Impl implements RaceState2, RaceLogChangedListener { } @Override - public void setFinishPositioningConfirmed() { + public void setFinishPositioningConfirmed(TimePoint timePoint) { raceLog.add(factory.createFinishPositioningConfirmedEvent( - MillisecondsTimePoint.now(), author, raceLog.getCurrentPassId(), getFinishPositioningList())); + timePoint, author, raceLog.getCurrentPassId(), getFinishPositioningList())); } @Override diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/GateStartChangedListener.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/GateStartChangedListener.java index de00a23d527..c6493b6c136 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/GateStartChangedListener.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/GateStartChangedListener.java @@ -2,6 +2,7 @@ package com.sap.sailing.domain.racelog.state.racingprocedure; public interface GateStartChangedListener extends RacingProcedureChangedListener { - void onGateLineOpeningTimeChanged(GateStartRacingProcedure gateStartRacingProcedure); + void onGateLineOpeningTimeChanged(GateStartRacingProcedure procedure); + void onPathfinderChanged(GateStartRacingProcedure procedure); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/GateStartRacingProcedure.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/GateStartRacingProcedure.java index b9f8b5cfcc3..08658a7ac34 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/GateStartRacingProcedure.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/GateStartRacingProcedure.java @@ -5,10 +5,15 @@ import com.sap.sailing.domain.common.TimePoint; public interface GateStartRacingProcedure extends RacingProcedure2 { + public final static long GolfDownStandardInterval = 4 * 60 * 1000; // minutes * seconds * milliseconds + void addChangedListener(GateStartChangedListener listener); TimePoint getGateShutdownTime(TimePoint startTime); Long getGateLineOpeningTime(); - void setGateLineOpeningTime(long milliseconds); + void setGateLineOpeningTime(TimePoint timePoint, long milliseconds); + + String getPathfinder(); + void setPathfinder(TimePoint timePoint, String sailingId); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/GateStartChangedListeners.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/GateStartChangedListeners.java index e0ba620c6f5..363daba7100 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/GateStartChangedListeners.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/state/racingprocedure/impl/GateStartChangedListeners.java @@ -15,5 +15,12 @@ public class GateStartChangedListeners extends RacingProcedureChangedListeners item = positioningAdapter.getItem(from); setItemToNewPositioning(from, to, item); - getRace().getState().setFinishPositioningListChanged(positionedCompetitors); + getRaceState().setFinishPositioningListChanged(MillisecondsTimePoint.now(), positionedCompetitors); } } }); @@ -221,13 +222,8 @@ public class PositioningFragment extends RaceDialogFragment { } private CompetitorResults initializeFinishPositioningList() { - CompetitorResults positionings; - if (getRace().getState().getFinishPositioningList() != null) { - positionings = getRace().getState().getFinishPositioningList(); - } else { - positionings = new CompetitorResultsImpl(); - } - return positionings; + CompetitorResults positionings = getRaceState().getFinishPositioningList(); + return positionings == null ? new CompetitorResultsImpl() : positionings; } private void setItemToNewPositioning(int from, int to, Triple item) { @@ -267,7 +263,7 @@ public class PositioningFragment extends RaceDialogFragment { if (!maxPointsReason.equals(MaxPointsReason.NONE)) { setCompetitorToBottomOfPositioningList(newItem); } - getRace().getState().setFinishPositioningListChanged(positionedCompetitors); + getRaceState().setFinishPositioningListChanged(MillisecondsTimePoint.now(), positionedCompetitors); } private void replaceItemInPositioningList(int currentIndexOfItem, @@ -285,7 +281,7 @@ public class PositioningFragment extends RaceDialogFragment { protected void onCompetitorClickedOnGrid(Competitor competitor) { addNewCompetitorToPositioningList(competitor); removeCompetitorFromGrid(competitor); - getRace().getState().setFinishPositioningListChanged(positionedCompetitors); + getRaceState().setFinishPositioningListChanged(MillisecondsTimePoint.now(), positionedCompetitors); } protected void removeCompetitorFromGrid(Competitor competitor) { @@ -305,7 +301,7 @@ public class PositioningFragment extends RaceDialogFragment { Competitor competitor = getCompetitorStore().getExistingCompetitorById(item.getA()); addNewCompetitorToCompetitorList(competitor); removeCompetitorFromPositionings(item); - getRace().getState().setFinishPositioningListChanged(positionedCompetitors); + getRaceState().setFinishPositioningListChanged(MillisecondsTimePoint.now(), positionedCompetitors); } private void addNewCompetitorToCompetitorList(Competitor competitor) { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/ProtestTimeDialogFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/ProtestTimeDialogFragment.java index 9092ebe54bd..746171b3346 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/ProtestTimeDialogFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/ProtestTimeDialogFragment.java @@ -160,7 +160,7 @@ public class ProtestTimeDialogFragment extends AttachedDialogFragment { TimePoint recentFinishedTime = null; for (ManagedRace race : races) { - TimePoint currentFinishedTime = race.getState().getFinishedTime(); + TimePoint currentFinishedTime = race.getState2().getFinishedTime(); if (currentFinishedTime != null && (recentFinishedTime == null || recentFinishedTime.before(currentFinishedTime))) { recentFinishedTime = currentFinishedTime; @@ -198,7 +198,7 @@ public class ProtestTimeDialogFragment extends AttachedDialogFragment { List selectedRaces = getSelectedRaces(); TimePoint protestTime = getProtestTime(); for (ManagedRace race : selectedRaces) { - race.getState().setProtestStartTime(protestTime); + race.getState2().setProtestTime(protestTime); } } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceChooseGateLineOpeningTimeDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceChooseGateLineOpeningTimeDialog.java index b809727936f..d9275c08cab 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceChooseGateLineOpeningTimeDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceChooseGateLineOpeningTimeDialog.java @@ -10,9 +10,9 @@ import android.widget.Button; import android.widget.EditText; import android.widget.Toast; +import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.racelog.state.racingprocedure.GateStartRacingProcedure; import com.sap.sailing.racecommittee.app.R; -import com.sap.sailing.racecommittee.app.domain.startprocedure.impl.GateStartProcedure; public class RaceChooseGateLineOpeningTimeDialog extends RaceDialogFragment { @@ -35,8 +35,7 @@ public class RaceChooseGateLineOpeningTimeDialog extends RaceDialogFragment { getDialog().setTitle(getString(R.string.set_gate_line_opening_time_title)); lineOpeningTimeEditText = (EditText) getView().findViewById(R.id.lineOpeningTimeText); - lineOpeningTimeEditText.setText(String - .valueOf((GateStartProcedure.startPhaseGolfDownStandardInterval / (60 * 1000)))); + lineOpeningTimeEditText.setText(String.valueOf((GateStartRacingProcedure.GolfDownStandardInterval / (60 * 1000)))); chooseButton = (Button) getDialog().findViewById(R.id.chooseLineOpeningTimeButton); chooseButton.setOnClickListener(new OnClickListener() { @@ -50,7 +49,7 @@ public class RaceChooseGateLineOpeningTimeDialog extends RaceDialogFragment { try { Long lineOpeningTime = convertToLong(lineOpeningTimeEditText.getText().toString()); GateStartRacingProcedure procedure = getRace().getState2().getTypedRacingProcedure(); - procedure.setGateLineOpeningTime(Long.valueOf(60 * 1000 * lineOpeningTime)); + procedure.setGateLineOpeningTime(MillisecondsTimePoint.now(), Long.valueOf(60 * 1000 * lineOpeningTime)); Log.i("RACE_SET_GATELINE_OPENING_TIME", String.valueOf(lineOpeningTime)); dismiss(); } catch (NumberFormatException nfe) { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceChoosePathFinderDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceChoosePathFinderDialog.java index d5686319857..46054952f1b 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceChoosePathFinderDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceChoosePathFinderDialog.java @@ -13,8 +13,9 @@ import android.widget.Button; import android.widget.EditText; import android.widget.Toast; +import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; +import com.sap.sailing.domain.racelog.state.racingprocedure.GateStartRacingProcedure; import com.sap.sailing.racecommittee.app.R; -import com.sap.sailing.racecommittee.app.domain.startprocedure.impl.GateStartProcedure; public class RaceChoosePathFinderDialog extends RaceDialogFragment { @@ -78,9 +79,8 @@ public class RaceChoosePathFinderDialog extends RaceDialogFragment { Toast.makeText(getActivity(), "Please enter a valid pathfinder", Toast.LENGTH_LONG).show(); }else{ String sailingId = sailingNationalityEditText.getText().toString() + " " + sailingNumberEditText.getText().toString(); - if(getRace().getState().getStartProcedure() instanceof GateStartProcedure){ - ((GateStartProcedure) getRace().getState().getStartProcedure()).setPathfinder(sailingId); - } + GateStartRacingProcedure procedure = getRaceState().getTypedRacingProcedure(); + procedure.setPathfinder(MillisecondsTimePoint.now(), sailingId); Log.i("RACE_SET_PATHFINDER", sailingId); dismiss(); } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishedTimeDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishedTimeDialog.java index b2db8a2c777..d1e4352f628 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishedTimeDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/RaceFinishedTimeDialog.java @@ -35,7 +35,7 @@ public class RaceFinishedTimeDialog extends RaceDialogFragment { FinishingTimeFinder ftf = new FinishingTimeFinder(getRace().getRaceLog()); if (ftf.analyze() != null && getRace().getStatus().equals(RaceLogRaceStatus.FINISHING)) { if (ftf.analyze().before(finishedTime)) { - getRace().getState().getStartProcedure().setFinished(finishedTime); + getRaceState().setFinishedTime(finishedTime); dismiss(); }else{ Toast.makeText(getActivity(), "The given finish time is earlier than than the first finisher time. Please recheck the time.", Toast.LENGTH_LONG).show(); diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/GateStartRunningRaceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/GateStartRunningRaceFragment.java index dc04e794531..ea94b94bc2c 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/GateStartRunningRaceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/running/GateStartRunningRaceFragment.java @@ -47,6 +47,11 @@ public class GateStartRunningRaceFragment extends BaseRunningRaceFragment