Package org.gocha.collection.graph

Source Code of org.gocha.collection.graph.AbstractPath

/*******************************************************************************
gocha.org-lib-java Библеотека общего назначения
(с) Камнев Георгий Павлович 2009 GPLv2

Данная программа является свободным программным обеспечением. Вы вправе
распространять ее и/или модифицировать в соответствии с условиями версии 2
либо по вашему выбору с условиями более поздней версии
Стандартной Общественной Лицензии GNU, опубликованной Free Software Foundation.

Мы распространяем данную программу в надежде на то, что она будет вам полезной,
однако НЕ ПРЕДОСТАВЛЯЕМ НА НЕЕ НИКАКИХ ГАРАНТИЙ,
в том числе ГАРАНТИИ ТОВАРНОГО СОСТОЯНИЯ ПРИ ПРОДАЖЕ
и ПРИГОДНОСТИ ДЛЯ ИСПОЛЬЗОВАНИЯ В КОНКРЕТНЫХ ЦЕЛЯХ.
Для получения более подробной информации ознакомьтесь
со Стандартной Общественной Лицензией GNU.

Вместе с данной программой вы должны были получить экземпляр
Стандартной Общественной Лицензии GNU.
Если вы его не получили, сообщите об этом в Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*******************************************************************************/

package org.gocha.collection.graph;

import org.gocha.collection.graph.Path.Direction;

/**
* Путь в графе
* @author gocha
*/
public abstract class AbstractPath<N,E> implements Path<N, E> {
    @Override
    public Edge<N, E> getLastEdge() {
        int size = size();
        if( size<1 )return null;
        return get(size-1);
    }

    @Override
    public N getLastNode() {
        Edge<N,E> e = getLastEdge();
        Direction d = getDirection();
        if( e==null )return null;
        return d==null ? e.getNodeB() : (d.equals(Direction.AB) ? e.getNodeB() : e.getNodeA());
    }

    protected Path.Direction direction = Path.Direction.AB;

    public void setDirection(Path.Direction d){
        if (d== null) {
            throw new IllegalArgumentException("d==null");
        }
        this.direction = d;
    }

    @Override
    public Direction getDirection() {
        return direction;
    }

    @Override
    public boolean contains(N a, N b) {
        if (a== null) {
            throw new IllegalArgumentException("a==null");
        }
        if (b== null) {
            throw new IllegalArgumentException("b==null");
        }
        for( Edge<N,E> e : this ){
            if( a.equals(e.getNodeA()) && b.equals(e.getNodeB()) )
                return true;
        }
        return false;
    }
}
TOP

Related Classes of org.gocha.collection.graph.AbstractPath

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.