From c3c86940fa3f93963b520045cacf0e3cb61a576d Mon Sep 17 00:00:00 2001
From: Luc Maisonobe <luc@orekit.org>
Date: Mon, 25 Oct 2021 14:27:24 +0200
Subject: [PATCH] Updated to Orekit 11.X API.

---
 pom.xml                                       |  4 ++--
 src/changes/changes.xml                       |  5 +++-
 .../org/orekit/rugged/api/RuggedBuilder.java  | 23 +++++++-----------
 src/site/markdown/index.md                    |  2 +-
 .../java/org/orekit/rugged/TestUtils.java     | 23 ++++++------------
 .../adjustment/util/PleiadesOrbitModel.java   | 22 ++++++++---------
 .../orekit/rugged/api/RuggedBuilderTest.java  | 23 ++++++------------
 .../org/orekit/rugged/api/RuggedTest.java     |  5 ++--
 .../SensorMeanPlaneCrossingTest.java          | 24 ++++++-------------
 .../utils/RoughVisibilityEstimatorTest.java   | 23 ++++++++----------
 10 files changed, 59 insertions(+), 95 deletions(-)

diff --git a/pom.xml b/pom.xml
index 43a00d58..6f951772 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.orekit</groupId>
   <artifactId>rugged</artifactId>
-  <version>2.3-SNAPSHOT</version>
+  <version>3.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>Rugged</name>
   <url>https://www.orekit.org/rugged</url>
@@ -19,7 +19,7 @@
 
     
     <!-- COTS version -->
-    <rugged.orekit.version>10.2</rugged.orekit.version>
+    <rugged.orekit.version>11.0.1</rugged.orekit.version>
     <rugged.junit.version>4.13.2</rugged.junit.version>
     
     <!-- Compilers and Tools version -->
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 8510a3b3..fbc9ab78 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -20,7 +20,10 @@
     <title>Rugged Changes</title>
   </properties>
   <body>
-    <release version="2.3" date="TBD" description="TBD">
+    <release version="3.0" date="TBD" description="TBD">
+      <action dev="luc" type="update" issue="387">
+        Updated dependencies to Orekit 11.0.1 (and Hipparchus 2.0).
+      </action>
     </release>
     <release version="2.2" date="2020-07-31" description="This is a minor release.
      It adds access to algorithm identifier, 
diff --git a/src/main/java/org/orekit/rugged/api/RuggedBuilder.java b/src/main/java/org/orekit/rugged/api/RuggedBuilder.java
index b1ffd05d..7c4f9c7d 100644
--- a/src/main/java/org/orekit/rugged/api/RuggedBuilder.java
+++ b/src/main/java/org/orekit/rugged/api/RuggedBuilder.java
@@ -32,8 +32,6 @@ import org.orekit.bodies.OneAxisEllipsoid;
 import org.orekit.frames.Frame;
 import org.orekit.frames.FramesFactory;
 import org.orekit.propagation.Propagator;
-import org.orekit.propagation.SpacecraftState;
-import org.orekit.propagation.sampling.OrekitFixedStepHandler;
 import org.orekit.rugged.errors.RuggedException;
 import org.orekit.rugged.errors.RuggedInternalError;
 import org.orekit.rugged.errors.RuggedMessages;
@@ -733,19 +731,14 @@ public class RuggedBuilder {
                 new ArrayList<TimeStampedPVCoordinates>();
         final List<TimeStampedAngularCoordinates> quaternions =
                 new ArrayList<TimeStampedAngularCoordinates>();
-        propagator.setMasterMode(interpolationStep, new OrekitFixedStepHandler() {
-
-            /** {@inheritDoc} */
-            @Override
-            public void handleStep(final SpacecraftState currentState, final boolean isLast) {
-                final AbsoluteDate  date = currentState.getDate();
-                final PVCoordinates pv   = currentState.getPVCoordinates(inertialFrame);
-                final Rotation      q    = currentState.getAttitude().getRotation();
-                positionsVelocities.add(new TimeStampedPVCoordinates(date, pv.getPosition(), pv.getVelocity(), Vector3D.ZERO));
-                quaternions.add(new TimeStampedAngularCoordinates(date, q, Vector3D.ZERO, Vector3D.ZERO));
-            }
-
-        });
+        propagator.getMultiplexer().add(interpolationStep,
+                                        currentState -> {
+                                            final AbsoluteDate  date = currentState.getDate();
+                                            final PVCoordinates pv   = currentState.getPVCoordinates(inertialFrame);
+                                            final Rotation      q    = currentState.getAttitude().getRotation();
+                                            positionsVelocities.add(new TimeStampedPVCoordinates(date, pv.getPosition(), pv.getVelocity(), Vector3D.ZERO));
+                                            quaternions.add(new TimeStampedAngularCoordinates(date, q, Vector3D.ZERO, Vector3D.ZERO));
+                                        });
         propagator.propagate(minDate.shiftedBy(-interpolationStep), maxDate.shiftedBy(interpolationStep));
 
         // orbit/attitude to body converter
diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md
index da4f937d..01ee8f9b 100644
--- a/src/site/markdown/index.md
+++ b/src/site/markdown/index.md
@@ -98,7 +98,7 @@ interoperability in space systems.
 
 ## Maintained library
 
-Rugged has been in development since 2014 inside [CS GROUP](http://www.c-s.fr/ "CS GROUP homepage")
+Rugged has been in development since 2014 inside [CS GROUP](https://www.csgroup.eu/ "CS GROUP homepage")
 and is still used and maintained by its dual teams
 of space dynamics and image processing experts.
 
diff --git a/src/test/java/org/orekit/rugged/TestUtils.java b/src/test/java/org/orekit/rugged/TestUtils.java
index 418a9a1b..baaea0d9 100644
--- a/src/test/java/org/orekit/rugged/TestUtils.java
+++ b/src/test/java/org/orekit/rugged/TestUtils.java
@@ -58,7 +58,6 @@ import org.orekit.propagation.Propagator;
 import org.orekit.propagation.SpacecraftState;
 import org.orekit.propagation.analytical.KeplerianPropagator;
 import org.orekit.propagation.numerical.NumericalPropagator;
-import org.orekit.propagation.sampling.OrekitFixedStepHandler;
 import org.orekit.propagation.semianalytical.dsst.utilities.JacobiPolynomials;
 import org.orekit.propagation.semianalytical.dsst.utilities.NewcombOperators;
 import org.orekit.rugged.linesensor.SensorPixel;
@@ -302,14 +301,10 @@ public class TestUtils {
         propagator.setAttitudeProvider(new YawCompensation(orbit.getFrame(), new NadirPointing(orbit.getFrame(), earth)));
         propagator.propagate(minDate);
         final List<TimeStampedPVCoordinates> list = new ArrayList<TimeStampedPVCoordinates>();
-        propagator.setMasterMode(step, new OrekitFixedStepHandler() {
-            public void handleStep(SpacecraftState currentState, boolean isLast) {
-                list.add(new TimeStampedPVCoordinates(currentState.getDate(),
-                                                      currentState.getPVCoordinates().getPosition(),
-                                                      currentState.getPVCoordinates().getVelocity(),
-                                                      Vector3D.ZERO));
-            }
-        });
+        propagator.getMultiplexer().add(step, currentState -> list.add(new TimeStampedPVCoordinates(currentState.getDate(),
+                                                                                                    currentState.getPVCoordinates().getPosition(),
+                                                                                                    currentState.getPVCoordinates().getVelocity(),
+                                                                                                    Vector3D.ZERO)));
         propagator.propagate(maxDate);
         return list;
     }
@@ -325,13 +320,9 @@ public class TestUtils {
         propagator.setAttitudeProvider(new YawCompensation(orbit.getFrame(), new NadirPointing(orbit.getFrame(), earth)));
         propagator.propagate(minDate);
         final List<TimeStampedAngularCoordinates> list = new ArrayList<TimeStampedAngularCoordinates>();
-        propagator.setMasterMode(step, new OrekitFixedStepHandler() {
-            public void handleStep(SpacecraftState currentState, boolean isLast) {
-                list.add(new TimeStampedAngularCoordinates(currentState.getDate(),
-                                                           currentState.getAttitude().getRotation(),
-                                                           Vector3D.ZERO, Vector3D.ZERO));
-            }
-        });
+        propagator.getMultiplexer().add(step, currentState -> list.add(new TimeStampedAngularCoordinates(currentState.getDate(),
+                                                                                                         currentState.getAttitude().getRotation(),
+                                                                                                         Vector3D.ZERO, Vector3D.ZERO)));
         propagator.propagate(maxDate);
         return list;
     }
diff --git a/src/test/java/org/orekit/rugged/adjustment/util/PleiadesOrbitModel.java b/src/test/java/org/orekit/rugged/adjustment/util/PleiadesOrbitModel.java
index 5f76ebb8..cca8dbc4 100644
--- a/src/test/java/org/orekit/rugged/adjustment/util/PleiadesOrbitModel.java
+++ b/src/test/java/org/orekit/rugged/adjustment/util/PleiadesOrbitModel.java
@@ -166,12 +166,11 @@ public class PleiadesOrbitModel {
 
         propagator.propagate(minDate);
         final List<TimeStampedPVCoordinates> list = new ArrayList<TimeStampedPVCoordinates>();
-        propagator.setMasterMode(step,
-                                 (currentState, isLast) ->
-                                 list.add(new TimeStampedPVCoordinates(currentState.getDate(),
-                                                                       currentState.getPVCoordinates().getPosition(),
-                                                                       currentState.getPVCoordinates().getVelocity(),
-                                                                       Vector3D.ZERO)));
+        propagator.getMultiplexer().add(step,
+                                 currentState -> list.add(new TimeStampedPVCoordinates(currentState.getDate(),
+                                                                                       currentState.getPVCoordinates().getPosition(),
+                                                                                       currentState.getPVCoordinates().getVelocity(),
+                                                                                       Vector3D.ZERO)));
         propagator.propagate(maxDate);
 
         return list;
@@ -187,12 +186,11 @@ public class PleiadesOrbitModel {
         propagator.setAttitudeProvider(createAttitudeProvider(earth, orbit));
         propagator.propagate(minDate);
         final List<TimeStampedAngularCoordinates> list = new ArrayList<>();
-        propagator.setMasterMode(step,
-                                 (currentState, isLast) ->
-                                 list.add(new TimeStampedAngularCoordinates(currentState.getDate(),
-                                                                            currentState.getAttitude().getRotation(),
-                                                                            Vector3D.ZERO,
-                                                                            Vector3D.ZERO)));
+        propagator.getMultiplexer().add(step,
+                                        currentState -> list.add(new TimeStampedAngularCoordinates(currentState.getDate(),
+                                                                                                   currentState.getAttitude().getRotation(),
+                                                                                                   Vector3D.ZERO,
+                                                                                                   Vector3D.ZERO)));
         propagator.propagate(maxDate);
 
         return list;
diff --git a/src/test/java/org/orekit/rugged/api/RuggedBuilderTest.java b/src/test/java/org/orekit/rugged/api/RuggedBuilderTest.java
index f24730bd..825e85ae 100644
--- a/src/test/java/org/orekit/rugged/api/RuggedBuilderTest.java
+++ b/src/test/java/org/orekit/rugged/api/RuggedBuilderTest.java
@@ -63,7 +63,6 @@ import org.orekit.propagation.Propagator;
 import org.orekit.propagation.SpacecraftState;
 import org.orekit.propagation.analytical.KeplerianPropagator;
 import org.orekit.propagation.numerical.NumericalPropagator;
-import org.orekit.propagation.sampling.OrekitFixedStepHandler;
 import org.orekit.rugged.errors.RuggedException;
 import org.orekit.rugged.errors.RuggedMessages;
 import org.orekit.rugged.linesensor.LineDatation;
@@ -825,14 +824,10 @@ public class RuggedBuilderTest {
         propagator.setAttitudeProvider(new YawCompensation(orbit.getFrame(), new NadirPointing(orbit.getFrame(), earth)));
         propagator.propagate(minDate);
         final List<TimeStampedPVCoordinates> list = new ArrayList<TimeStampedPVCoordinates>();
-        propagator.setMasterMode(step, new OrekitFixedStepHandler() {
-            public void handleStep(SpacecraftState currentState, boolean isLast) {
-                list.add(new TimeStampedPVCoordinates(currentState.getDate(),
-                                                      currentState.getPVCoordinates().getPosition(),
-                                                      currentState.getPVCoordinates().getVelocity(),
-                                                      Vector3D.ZERO));
-            }
-        });
+        propagator.getMultiplexer().add(step, currentState -> list.add(new TimeStampedPVCoordinates(currentState.getDate(),
+                                                                                                    currentState.getPVCoordinates().getPosition(),
+                                                                                                    currentState.getPVCoordinates().getVelocity(),
+                                                                                                    Vector3D.ZERO)));
         propagator.propagate(maxDate);
         return list;
     }
@@ -845,13 +840,9 @@ public class RuggedBuilderTest {
         propagator.setAttitudeProvider(new YawCompensation(orbit.getFrame(), new NadirPointing(orbit.getFrame(), earth)));
         propagator.propagate(minDate);
         final List<TimeStampedAngularCoordinates> list = new ArrayList<TimeStampedAngularCoordinates>();
-        propagator.setMasterMode(step, new OrekitFixedStepHandler() {
-            public void handleStep(SpacecraftState currentState, boolean isLast) {
-                list.add(new TimeStampedAngularCoordinates(currentState.getDate(),
-                                                           currentState.getAttitude().getRotation(),
-                                                           Vector3D.ZERO, Vector3D.ZERO));
-            }
-        });
+        propagator.getMultiplexer().add(step, currentState -> list.add(new TimeStampedAngularCoordinates(currentState.getDate(),
+                                                                                                         currentState.getAttitude().getRotation(),
+                                                                                                         Vector3D.ZERO, Vector3D.ZERO)));
         propagator.propagate(maxDate);
         return list;
     }
diff --git a/src/test/java/org/orekit/rugged/api/RuggedTest.java b/src/test/java/org/orekit/rugged/api/RuggedTest.java
index cd8aae3f..29ea82e5 100644
--- a/src/test/java/org/orekit/rugged/api/RuggedTest.java
+++ b/src/test/java/org/orekit/rugged/api/RuggedTest.java
@@ -59,6 +59,7 @@ import org.orekit.forces.gravity.potential.NormalizedSphericalHarmonicsProvider;
 import org.orekit.frames.Frame;
 import org.orekit.frames.FramesFactory;
 import org.orekit.orbits.Orbit;
+import org.orekit.propagation.EphemerisGenerator;
 import org.orekit.propagation.Propagator;
 import org.orekit.rugged.TestUtils;
 import org.orekit.rugged.adjustment.GroundOptimizationProblemBuilder;
@@ -136,9 +137,9 @@ public class RuggedTest {
 
         Propagator propagator = TestUtils.createPropagator(earth, gravityField, orbit);
         propagator.propagate(lineDatation.getDate(firstLine).shiftedBy(-1.0));
-        propagator.setEphemerisMode();
+       final EphemerisGenerator generator = propagator.getEphemerisGenerator();
         propagator.propagate(lineDatation.getDate(lastLine).shiftedBy(+1.0));
-        Propagator ephemeris = propagator.getGeneratedEphemeris();
+        Propagator ephemeris = generator.getGeneratedEphemeris();
 
         Rugged rugged = new RuggedBuilder().
                 setDigitalElevationModel(updater, 8).
diff --git a/src/test/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossingTest.java b/src/test/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossingTest.java
index 91070786..3b051ac6 100644
--- a/src/test/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossingTest.java
+++ b/src/test/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossingTest.java
@@ -44,9 +44,7 @@ import org.orekit.orbits.CircularOrbit;
 import org.orekit.orbits.Orbit;
 import org.orekit.orbits.PositionAngle;
 import org.orekit.propagation.Propagator;
-import org.orekit.propagation.SpacecraftState;
 import org.orekit.propagation.analytical.KeplerianPropagator;
-import org.orekit.propagation.sampling.OrekitFixedStepHandler;
 import org.orekit.rugged.TestUtils;
 import org.orekit.rugged.linesensor.SensorMeanPlaneCrossing.CrossingResult;
 import org.orekit.rugged.los.LOSBuilder;
@@ -316,14 +314,10 @@ public class SensorMeanPlaneCrossingTest {
         propagator.setAttitudeProvider(new YawCompensation(orbit.getFrame(), new NadirPointing(orbit.getFrame(), earth)));
         propagator.propagate(minDate);
         final List<TimeStampedPVCoordinates> list = new ArrayList<TimeStampedPVCoordinates>();
-        propagator.setMasterMode(step, new OrekitFixedStepHandler() {
-            public void handleStep(SpacecraftState currentState, boolean isLast) {
-                list.add(new TimeStampedPVCoordinates(currentState.getDate(),
-                                                      currentState.getPVCoordinates().getPosition(),
-                                                      currentState.getPVCoordinates().getVelocity(),
-                                                      Vector3D.ZERO));
-            }
-        });
+        propagator.getMultiplexer().add(step, currentState -> list.add(new TimeStampedPVCoordinates(currentState.getDate(),
+                                                                                                    currentState.getPVCoordinates().getPosition(),
+                                                                                                    currentState.getPVCoordinates().getVelocity(),
+                                                                                                    Vector3D.ZERO)));
         propagator.propagate(maxDate);
         return list;
     }
@@ -336,13 +330,9 @@ public class SensorMeanPlaneCrossingTest {
         propagator.setAttitudeProvider(new YawCompensation(orbit.getFrame(), new NadirPointing(orbit.getFrame(), earth)));
         propagator.propagate(minDate);
         final List<TimeStampedAngularCoordinates> list = new ArrayList<TimeStampedAngularCoordinates>();
-        propagator.setMasterMode(step, new OrekitFixedStepHandler() {
-            public void handleStep(SpacecraftState currentState, boolean isLast) {
-                list.add(new TimeStampedAngularCoordinates(currentState.getDate(),
-                                                           currentState.getAttitude().getRotation(),
-                                                           Vector3D.ZERO, Vector3D.ZERO));
-            }
-        });
+        propagator.getMultiplexer().add(step, currentState -> list.add(new TimeStampedAngularCoordinates(currentState.getDate(),
+                                                                                                         currentState.getAttitude().getRotation(),
+                                                                                                         Vector3D.ZERO, Vector3D.ZERO)));
         propagator.propagate(maxDate);
         return list;
     }
diff --git a/src/test/java/org/orekit/rugged/utils/RoughVisibilityEstimatorTest.java b/src/test/java/org/orekit/rugged/utils/RoughVisibilityEstimatorTest.java
index e26b8eaf..ccca03bc 100644
--- a/src/test/java/org/orekit/rugged/utils/RoughVisibilityEstimatorTest.java
+++ b/src/test/java/org/orekit/rugged/utils/RoughVisibilityEstimatorTest.java
@@ -50,7 +50,6 @@ import org.orekit.orbits.PositionAngle;
 import org.orekit.propagation.Propagator;
 import org.orekit.propagation.SpacecraftState;
 import org.orekit.propagation.numerical.NumericalPropagator;
-import org.orekit.propagation.sampling.OrekitFixedStepHandler;
 import org.orekit.time.AbsoluteDate;
 import org.orekit.time.TimeScalesFactory;
 import org.orekit.utils.Constants;
@@ -69,18 +68,17 @@ public class RoughVisibilityEstimatorTest {
         Orbit      orbit                                  = createOrbit(gravityField.getMu());
         Propagator propagator                             = createPropagator(earth, gravityField, orbit);
         final List<TimeStampedPVCoordinates> pv = new ArrayList<TimeStampedPVCoordinates>();
-        propagator.setMasterMode(1.0, new OrekitFixedStepHandler() {
-            public void handleStep(SpacecraftState currentState, boolean isLast) {
-                pv.add(currentState.getPVCoordinates());
-            }
-        });
+        propagator.getMultiplexer().add(1.0, currentState -> pv.add(currentState.getPVCoordinates()));
         propagator.propagate(orbit.getDate().shiftedBy(3 * orbit.getKeplerianPeriod()));
 
         RoughVisibilityEstimator estimator = new RoughVisibilityEstimator(ellipsoid, orbit.getFrame(), pv);
         AbsoluteDate d = estimator.estimateVisibility(new GeodeticPoint(FastMath.toRadians(-81.5),
                                                                         FastMath.toRadians(-2.0),
                                                                         0.0));
-        Assert.assertEquals("2012-01-01T03:47:08.814", d.toString(TimeScalesFactory.getUTC()));
+        Assert.assertEquals(0.0,
+                            new AbsoluteDate("2012-01-01T03:47:08.814121623",
+                                             TimeScalesFactory.getUTC()).durationFrom(d),
+                            1.0e-9);
 
     }
 
@@ -94,18 +92,17 @@ public class RoughVisibilityEstimatorTest {
         Orbit      orbit                                  = createOrbit(gravityField.getMu());
         Propagator propagator                             = createPropagator(earth, gravityField, orbit);
         final List<TimeStampedPVCoordinates> pv = new ArrayList<TimeStampedPVCoordinates>();
-        propagator.setMasterMode(1.0, new OrekitFixedStepHandler() {
-            public void handleStep(SpacecraftState currentState, boolean isLast) {
-                pv.add(currentState.getPVCoordinates());
-            }
-        });
+        propagator.getMultiplexer().add(1.0,  currentState -> pv.add(currentState.getPVCoordinates()));
         propagator.propagate(orbit.getDate().shiftedBy(orbit.getKeplerianPeriod()));
 
         RoughVisibilityEstimator estimator = new RoughVisibilityEstimator(ellipsoid, orbit.getFrame(), pv);
         AbsoluteDate d = estimator.estimateVisibility(new GeodeticPoint(FastMath.toRadians(43.303),
                                                                         FastMath.toRadians(-46.126),
                                                                         0.0));
-        Assert.assertEquals("2012-01-01T01:02:39.123", d.toString(TimeScalesFactory.getUTC()));
+        Assert.assertEquals(0.0,
+                            new AbsoluteDate("2012-01-01T01:02:39.122526662",
+                                             TimeScalesFactory.getUTC()).durationFrom(d),
+                            1.0e-9);
 
     }
 
-- 
GitLab