blob: 07d65177ea17351eacd9c4a711d5c21f625f6526 [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:
* Pierre Allard,
* Regent L'Archeveque,
* Sebastien Gemme - initial API and implementation
*
* SPDX-License-Identifier: EPL-1.0
*
*******************************************************************************/
package org.eclipse.apogy.addons.mobility.pathplanners.graph.impl;
import java.util.Iterator;
import org.eclipse.apogy.addons.mobility.pathplanners.graph.ApogyAddonsMobilityPathplannersGraphFactory;
import org.eclipse.apogy.addons.mobility.pathplanners.graph.DisplacementCostFunction;
import org.eclipse.apogy.addons.mobility.pathplanners.graph.MobilityEdge;
public class MobilityEdgeCustomImpl extends MobilityEdgeImpl {
public Object getSource() {
return getFrom();
}
public Object getTarget() {
return getTo();
}
public Object oppositeVertex(Object v) {
if (v == getFrom()) {
return getTo();
} else if (v == getTo()) {
return getFrom();
} else {
return null;
}
}
public boolean containsVertex(Object v) {
return (v == getFrom() || (v == getTo()));
}
@Override
public double getWeight() {
Iterator<DisplacementCostFunction> it = getCostFunctions().iterator();
double cost = 0.0;
while (it.hasNext() && !Double.isInfinite(cost)) {
DisplacementCostFunction displacementCostFunction = it.next();
cost += displacementCostFunction.getCost(getFrom(), getTo());
}
return cost;
}
@Override
public Object clone() {
MobilityEdge edge = ApogyAddonsMobilityPathplannersGraphFactory.eINSTANCE.createMobilityEdge();
edge.getCostFunctions().addAll(getCostFunctions());
edge.setFrom(getFrom());
edge.setTo(getTo());
return edge;
}
@Override
public void setWeight(double weight) {
}
} // MobilityEdgeImpl