1 /* Copyright 2002-2025 CS GROUP 2 * Licensed to CS GROUP (CS) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * CS licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.orekit.files.ccsds.definitions; 18 19 import org.orekit.annotation.DefaultDataContext; 20 import org.orekit.bodies.CelestialBodies; 21 import org.orekit.bodies.CelestialBody; 22 import org.orekit.data.DataContext; 23 24 /** Facade in front of several center bodies in CCSDS messages. 25 * @author Luc Maisonobe 26 * @since 11.0 27 */ 28 public class BodyFacade { 29 30 /** Name of the center. */ 31 private final String name; 32 33 /** Celestial body (may be null). */ 34 private final CelestialBody body; 35 36 /** Simple constructor. 37 * @param name name of the frame 38 * @param body celestial body (may be null) 39 */ 40 public BodyFacade(final String name, final CelestialBody body) { 41 this.name = name; 42 this.body = body; 43 } 44 45 /** Get the CCSDS name for the body. 46 * @return CCSDS name 47 */ 48 public String getName() { 49 return name; 50 } 51 52 /** Get the celestial body. 53 * @return celestial body (may be null) 54 */ 55 public CelestialBody getBody() { 56 return body; 57 } 58 59 /** 60 * Create a body facade from an input center name. 61 * 62 * <p>This method uses the {@link DataContext#getDefault() default data context}. 63 * 64 * @param centerName input center name 65 * @return a body facade corresponding to the input center name 66 * @since 11.2 67 */ 68 @DefaultDataContext 69 public static BodyFacade create(final CenterName centerName) { 70 return create(centerName, DataContext.getDefault()); 71 } 72 73 /** 74 * Create a body facade from an input center name. 75 * 76 * @param centerName input center name 77 * @param context data context 78 * @return a body facade corresponding to the input center name 79 * @since 12.0 80 */ 81 public static BodyFacade create(final CenterName centerName, final DataContext context) { 82 return create(centerName, context.getCelestialBodies()); 83 } 84 85 /** 86 * Create a body facade from an input center name. 87 * 88 * @param centerName input center name 89 * @param bodies celestial bodies 90 * @return a body facade corresponding to the input center name 91 * @since 12.0 92 */ 93 public static BodyFacade create(final CenterName centerName, final CelestialBodies bodies) { 94 return new BodyFacade(centerName.name(), centerName.getCelestialBody(bodies)); 95 } 96 97 }