From 63240d4f77a233bc98d43945d4b04b4d9ff7aa3f Mon Sep 17 00:00:00 2001 From: ddp Date: Wed, 8 May 2002 17:38:34 +0000 Subject: [PATCH] Moving changes. git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/sandbox/graph2/trunk@144605 13f79535-47bb-0310-9956-ffa450edef68 --- .../ContractVerificationException.java | 70 +++--- .../graph/exception/CycleException.java | 176 +++++++-------- .../graph/exception/GraphException.java | 206 ++++++++++-------- .../exception/NegativeCycleException.java | 178 +++++++-------- .../graph/exception/NoPathException.java | 180 +++++++-------- .../commons/graph/factory/GraphFactory.java | 191 ++++++++++++++++ 6 files changed, 606 insertions(+), 395 deletions(-) create mode 100644 src/java/org/apache/commons/graph/factory/GraphFactory.java diff --git a/src/java/org/apache/commons/graph/exception/ContractVerificationException.java b/src/java/org/apache/commons/graph/exception/ContractVerificationException.java index bd8d135..55eb12a 100644 --- a/src/java/org/apache/commons/graph/exception/ContractVerificationException.java +++ b/src/java/org/apache/commons/graph/exception/ContractVerificationException.java @@ -1,35 +1,35 @@ -package org.apache.commons.graph.exception; - -/** - * Description of the Class - */ -public class ContractVerificationException extends GraphException -{ - /** - * Constructor for the ContractVerificationException object - */ - public ContractVerificationException() - { - super(); - } - - /** - * Constructor for the ContractVerificationException object - * - * @param msg - */ - public ContractVerificationException(String msg) - { - super(msg); - } - - /** - * Constructor for the ContractVerificationException object - * - * @param cause - */ - public ContractVerificationException(Throwable cause) - { - super(cause); - } -} +package org.apache.commons.graph.exception; + +/** + * Description of the Class + */ +public class ContractVerificationException extends GraphException +{ + /** + * Constructor for the ContractVerificationException object + */ + public ContractVerificationException() + { + super(); + } + + /** + * Constructor for the ContractVerificationException object + * + * @param msg + */ + public ContractVerificationException(String msg) + { + super(msg); + } + + /** + * Constructor for the ContractVerificationException object + * + * @param cause + */ + public ContractVerificationException(Throwable cause) + { + super(cause); + } +} diff --git a/src/java/org/apache/commons/graph/exception/CycleException.java b/src/java/org/apache/commons/graph/exception/CycleException.java index 1b388e3..bd134cf 100644 --- a/src/java/org/apache/commons/graph/exception/CycleException.java +++ b/src/java/org/apache/commons/graph/exception/CycleException.java @@ -1,88 +1,88 @@ -package org.apache.commons.graph.exception; -/* ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" and - * "Commons" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * "Commons", nor may "Apache" appear in their name, without - * prior written permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -/** - * Description of the Class - */ -public class CycleException extends GraphException -{ - /** - * Constructor for the CycleException object - */ - public CycleException() - { - super(); - } - - /** - * Constructor for the CycleException object - * - * @param msg - */ - public CycleException(String msg) - { - super(msg); - } - - /** - * Constructor for the CycleException object - * - * @param cause - */ - public CycleException(Throwable cause) - { - super(cause); - } -} +package org.apache.commons.graph.exception; +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Commons" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Commons", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + +/** + * Description of the Class + */ +public class CycleException extends GraphException +{ + /** + * Constructor for the CycleException object + */ + public CycleException() + { + super(); + } + + /** + * Constructor for the CycleException object + * + * @param msg + */ + public CycleException(String msg) + { + super(msg); + } + + /** + * Constructor for the CycleException object + * + * @param cause + */ + public CycleException(Throwable cause) + { + super(cause); + } +} diff --git a/src/java/org/apache/commons/graph/exception/GraphException.java b/src/java/org/apache/commons/graph/exception/GraphException.java index c2f0a36..cd08a26 100644 --- a/src/java/org/apache/commons/graph/exception/GraphException.java +++ b/src/java/org/apache/commons/graph/exception/GraphException.java @@ -1,93 +1,113 @@ -package org.apache.commons.graph.exception; - -/* ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" and - * "Commons" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * "Commons", nor may "Apache" appear in their name, without - * prior written permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -/** - * GraphException This is the superclass of all exceptions that can be thrown. - */ - -public class GraphException extends RuntimeException -{ - private Throwable cause = null; - - /** - * Constructor for the GraphException object - */ - public GraphException() - { - super(); - } - - /** - * Constructor for the GraphException object - * - * @param msg - */ - public GraphException(String msg) - { - super(msg); - } - - /** - * Constructor for the GraphException object - * - * @param cause - */ - public GraphException(Throwable cause) - { - super(cause.getMessage()); - this.cause = cause; - } -} +package org.apache.commons.graph.exception; + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Commons" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Commons", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + +/** + * GraphException This is the superclass of all exceptions that can be thrown. + */ + +import java.io.PrintStream; +import java.io.PrintWriter; + +public class GraphException extends RuntimeException +{ + private Throwable cause = null; + + /** + * Constructor for the GraphException object + */ + public GraphException() + { + super(); + } + + /** + * Constructor for the GraphException object + * + * @param msg + */ + public GraphException(String msg) + { + super(msg); + } + + /** + * Constructor for the GraphException object + * + * @param cause + */ + public GraphException(Throwable cause) + { + super(cause.getMessage()); + this.cause = cause; + } + + public Throwable getCause() { + return cause; + } + + public void printStackTrace() { + cause.printStackTrace(); + } + + public void printStackTrace( PrintStream s ) { + cause.printStackTrace( s ); + } + + public void printStackTrace( PrintWriter w ) { + cause.printStackTrace( w ); + } + +} diff --git a/src/java/org/apache/commons/graph/exception/NegativeCycleException.java b/src/java/org/apache/commons/graph/exception/NegativeCycleException.java index 4df0af4..0133382 100644 --- a/src/java/org/apache/commons/graph/exception/NegativeCycleException.java +++ b/src/java/org/apache/commons/graph/exception/NegativeCycleException.java @@ -1,89 +1,89 @@ -package org.apache.commons.graph.exception; - -/* ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" and - * "Commons" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * "Commons", nor may "Apache" appear in their name, without - * prior written permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -/** - * Description of the Class - */ -public class NegativeCycleException extends GraphException -{ - /** - * Constructor for the NegativeCycleException object - */ - public NegativeCycleException() - { - super(); - } - - /** - * Constructor for the NegativeCycleException object - * - * @param msg - */ - public NegativeCycleException(String msg) - { - super(msg); - } - - /** - * Constructor for the NegativeCycleException object - * - * @param cause - */ - public NegativeCycleException(Throwable cause) - { - super(cause); - } -} +package org.apache.commons.graph.exception; + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Commons" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Commons", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + +/** + * Description of the Class + */ +public class NegativeCycleException extends GraphException +{ + /** + * Constructor for the NegativeCycleException object + */ + public NegativeCycleException() + { + super(); + } + + /** + * Constructor for the NegativeCycleException object + * + * @param msg + */ + public NegativeCycleException(String msg) + { + super(msg); + } + + /** + * Constructor for the NegativeCycleException object + * + * @param cause + */ + public NegativeCycleException(Throwable cause) + { + super(cause); + } +} diff --git a/src/java/org/apache/commons/graph/exception/NoPathException.java b/src/java/org/apache/commons/graph/exception/NoPathException.java index ff6d6e1..a8b9830 100644 --- a/src/java/org/apache/commons/graph/exception/NoPathException.java +++ b/src/java/org/apache/commons/graph/exception/NoPathException.java @@ -1,90 +1,90 @@ -package org.apache.commons.graph.exception; - -/* ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" and - * "Commons" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * "Commons", nor may "Apache" appear in their name, without - * prior written permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -/** - * Description of the Class - */ -public class NoPathException - extends GraphException -{ - /** - * Constructor for the NoPathException object - */ - public NoPathException() - { - super(); - } - - /** - * Constructor for the NoPathException object - * - * @param msg - */ - public NoPathException(String msg) - { - super(msg); - } - - /** - * Constructor for the NoPathException object - * - * @param t - */ - public NoPathException(Throwable t) - { - super(t); - } -} +package org.apache.commons.graph.exception; + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Commons" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Commons", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + +/** + * Description of the Class + */ +public class NoPathException + extends GraphException +{ + /** + * Constructor for the NoPathException object + */ + public NoPathException() + { + super(); + } + + /** + * Constructor for the NoPathException object + * + * @param msg + */ + public NoPathException(String msg) + { + super(msg); + } + + /** + * Constructor for the NoPathException object + * + * @param t + */ + public NoPathException(Throwable t) + { + super(t); + } +} diff --git a/src/java/org/apache/commons/graph/factory/GraphFactory.java b/src/java/org/apache/commons/graph/factory/GraphFactory.java new file mode 100644 index 0000000..6d3adc1 --- /dev/null +++ b/src/java/org/apache/commons/graph/factory/GraphFactory.java @@ -0,0 +1,191 @@ +package org.apache.commons.graph.factory; + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Commons" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Commons", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ +import java.lang.reflect.*; + +import org.apache.commons.graph.*; +import org.apache.commons.graph.contract.*; +import org.apache.commons.graph.exception.*; +import org.apache.commons.graph.domain.basic.*; + +/** + * Description of the Class + */ +public class GraphFactory +{ + + /** + * Constructor for the GraphFactory object + */ + public GraphFactory() { } + + /** + * makeGraph + * + * @param contracts Which contracts to enforce. + * @param baseGraph Is the actual *GraphImpl which will be at the core of + * the Proxy. + * @param baseGraphType Interface which is returned. + * @param isWeighted Does the graph handle Weights? + * @param init Initialization Graph. + */ + private Object makeGraph(Contract contracts[], + InvocationHandler baseGraph, + Class baseGraphType, + boolean isWeighted) + throws GraphException + { + int interfaceCount = contracts.length; + interfaceCount++;// BaseGraph Type + if (isWeighted) + { + interfaceCount++; + }// WeightedGraph Type + + Class inter[] = new Class[interfaceCount]; + + int pos = 0; + for (pos = 0; pos < contracts.length; pos++) + { + inter[pos] = contracts[pos].getInterface(); + } + + if (isWeighted) + { + inter[pos] = org.apache.commons.graph.WeightedGraph.class; + pos++; + } + + inter[pos] = baseGraphType; + + return Proxy.newProxyInstance(baseGraph.getClass().getClassLoader(), + inter, baseGraph); + } + + /** + * makeDirectedGraph + * + * @param contracts - Array of Contracts this Graph should meet. + * @param isWeighted - If true, the Graph will implement the WeightedGraph + * interface. + * @param graph - If it is provided, the graph will initially be equal to + * the graph. + */ + public DirectedGraph makeDirectedGraph(Contract contracts[], + boolean isWeighted, + DirectedGraph graph) + throws GraphException + { + DirectedGraphImpl dgi = null; + + if (graph != null) + { + dgi = new DirectedGraphImpl(graph); + } + else + { + dgi = new DirectedGraphImpl(); + } + + for (int i = 0; i < contracts.length; i++) + { + dgi.addContract(contracts[i]); + } + + return (DirectedGraph) + makeGraph(contracts, + dgi, org.apache.commons.graph.DirectedGraph.class, + isWeighted); + } + + /** + * makeMutableDirectedGraph + * + * @param contracts - Array of Contracts this Graph should meet. + * @param isWeighted - If true, the Graph will implement the WeightedGraph + * interface. + * @param graph - If it is provided, the graph will initially be equal to + * the graph. + */ + public MutableDirectedGraph + makeMutableDirectedGraph(Contract contracts[], + boolean isWeighted, + DirectedGraph graph) + throws GraphException + { + + DirectedGraphImpl dgi = null; + + if (graph != null) + { + dgi = new DirectedGraphImpl(graph); + } + else + { + dgi = new DirectedGraphImpl(); + } + + for (int i = 0; i < contracts.length; i++) + { + dgi.addContract(contracts[i]); + } + + return (MutableDirectedGraph) + makeGraph(contracts, + dgi, + org.apache.commons.graph.MutableDirectedGraph.class, + isWeighted); + } +}