blob: fd050eed55bd77009a3cab1d8b68a5661a3e04fb [file] [log] [blame]
/**
* *******************************************************************************
* Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Regent L'Archeveque - initial API and implementation
*
* SPDX-License-Identifier: EPL-1.0
* *******************************************************************************
*/
package org.eclipse.apogy.core.environment.earth.orbit.planner;
import java.util.List;
import org.eclipse.apogy.common.emf.EObjectReferencesList;
import org.eclipse.apogy.core.environment.earth.orbit.VisibilityPass;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.ecore.EObject;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Facade</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* Planner Facade.
* <!-- end-model-doc -->
*
*
* @see org.eclipse.apogy.core.environment.earth.orbit.planner.ApogyCoreEnvironmentEarthOrbitPlannerPackage#getApogyCoreEnvironmentEarthOrbitPlannerFacade()
* @model annotation="http://www.eclipse.org/apogy isSingleton='true' hasCustomClass='true'"
* @generated
*/
public interface ApogyCoreEnvironmentEarthOrbitPlannerFacade extends EObject {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Analyzes and generate the opportunities plan tree. This tree contains all the possible sequences
* to handle the requested observation target. This method runs inside a Job.
* @param passes List of passes to analyze.
* @param monitor Progress monitor. If null, NullProgressMonitor will be used.
* @return Refers the root node of the tree.
* <!-- end-model-doc -->
* @model unique="false" passesDataType="org.eclipse.apogy.core.environment.earth.orbit.planner.VisibilityPassesList" passesUnique="false" monitorDataType="org.eclipse.apogy.core.environment.earth.orbit.planner.IProgressMonitor" monitorUnique="false"
* @generated
*/
ObservationAnalysisPlannerNode generateObservationsPlanTree(List<VisibilityPass> passes, IProgressMonitor monitor);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Browses and processes the cost of each branches contained in the plan tree. This method runs in a job.
* @param data Observation analysis data that contains the context and the results required to conduct the analysis.
* @param monitor Progress monitor. If null, NullProgressMonitor will be used.
* @return Refers to the original planner but with updated data.
* <!-- end-model-doc -->
* @model unique="false" plannerUnique="false" monitorDataType="org.eclipse.apogy.core.environment.earth.orbit.planner.IProgressMonitor" monitorUnique="false"
* @generated
*/
ObservationAnalysisPlanner computePlanCosts(ObservationAnalysisPlanner planner, IProgressMonitor monitor);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Returns the {@link ObservationAnalysisPlannerTool} singleton of the active session.
* @return The reference to the {@link ObservationAnalysisPlannerTool} or null if not found.
* <!-- end-model-doc -->
* @model kind="operation" unique="false"
* @generated
*/
ObservationAnalysisPlannerTool getObservationAnalysisPlannerTool();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* This method returns all the leafs of the specified root node. Each path from root to the leafs represents a solution.
* @param root Refers to the root of the tree structure.
* @return List of Observation Analysis Planner Leaf Nodes.
* <!-- end-model-doc -->
* @model dataType="org.eclipse.apogy.core.environment.earth.orbit.planner.ObservationAnalysisPlannerNodeList" unique="false" rootUnique="false"
* @generated
*/
List<ObservationAnalysisPlannerNode> getLeafs(ObservationAnalysisPlannerNode root);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* This method solution path based on the specified leaf.
* @param leaf Refers to a leaf that represents a solution of the tree structure.
* @return List of {@link ObservationAnalysisPlannerNode} from root to leaf. The leaf
* is included in the list but not the root.
* <!-- end-model-doc -->
* @model dataType="org.eclipse.apogy.core.environment.earth.orbit.planner.ObservationPlan" unique="false" leafUnique="false"
* @generated
*/
EObjectReferencesList<ObservationAnalysisPlannerNode> getPlannerSolution(ObservationAnalysisPlannerNode leaf);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Returns the list of {@link VisibilityPass} contains in the specified list of nodes.
* @param nodesList List of nodes.
* @return Refers the list of passes.
* <!-- end-model-doc -->
* @model dataType="org.eclipse.apogy.core.environment.earth.orbit.planner.VisibilityPassReferencesList" unique="false" nodesListDataType="org.eclipse.apogy.core.environment.earth.orbit.planner.ObservationAnalysisPlannerNodeList" nodesListUnique="false"
* @generated
*/
EObjectReferencesList<VisibilityPass> getVisibilityPasses(List<ObservationAnalysisPlannerNode> nodesList);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Returns the total cost of all the stateless cost functions applicable to the specified visibility pass.
* @param node Refers the planner node.
* @return The total cost after the application of {@link AbstractCostFunction#getCoefficient()}.
* <!-- end-model-doc -->
* @model unique="false" nodeUnique="false"
* @generated
*/
double getNodeStatelessTotalCost(ObservationAnalysisPlannerNode node);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Returns the total cost of all the stateful cost functions applicable to the specified planner node.
* @param node Refers the planner node.
* @return The total cost after the application of {@link AbstractCostFunction#getCoefficient()}.
* <!-- end-model-doc -->
* @model unique="false" nodeUnique="false"
* @generated
*/
double getNodeStatefulTotalCost(ObservationAnalysisPlannerNode node);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Returns the total cost of all cost functions applicable to the specified planner node.
* @param node Refers the planner node.
* @return The total cost after the application of {@link AbstractCostFunction#getCoefficient()}.
* @see #getStatelessCostFunctionTotalCost(VisibilityPass)
* @see #getStatefulCostFunctionTotalCost(ObservationAnalysisPlannerNode)
* <!-- end-model-doc -->
* @model unique="false" nodeUnique="false"
* @generated
*/
double getNodeTotalCost(ObservationAnalysisPlannerNode node);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Returns the total cost of the specified plan.
* @param plan Refers the plan.
* @return The total cost after the application of {@link AbstractCostFunction#getCoefficient()}.
* @see #getStatelessCostFunctionTotalCost(VisibilityPass)
* @see #getStatefulCostFunctionTotalCost(ObservationAnalysisPlannerNode)
* <!-- end-model-doc -->
* @model unique="false" planDataType="org.eclipse.apogy.core.environment.earth.orbit.planner.ObservationPlan" planUnique="false"
* @generated
*/
double getSolutionTotalCost(EObjectReferencesList<ObservationAnalysisPlannerNode> plan);
/**
* Returns a '{@link org.eclipse.apogy.core.environment.earth.orbit.planner.ApogyCoreEnvironmentEarthOrbitPlannerFacade}' singleton.
* @generated
*/
public static ApogyCoreEnvironmentEarthOrbitPlannerFacade INSTANCE = ApogyCoreEnvironmentEarthOrbitPlannerFactory.eINSTANCE.createApogyCoreEnvironmentEarthOrbitPlannerFacade();
} // ApogyCoreEnvironmentEarthOrbitPlannerFacade