001    /**
002     * Copyright (C) 2007-2011, Jens Lehmann
003     *
004     * This file is part of DL-Learner.
005     *
006     * DL-Learner is free software; you can redistribute it and/or modify
007     * it under the terms of the GNU General Public License as published by
008     * the Free Software Foundation; either version 3 of the License, or
009     * (at your option) any later version.
010     *
011     * DL-Learner is distributed in the hope that it will be useful,
012     * but WITHOUT ANY WARRANTY; without even the implied warranty of
013     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014     * GNU General Public License for more details.
015     *
016     * You should have received a copy of the GNU General Public License
017     * along with this program.  If not, see <http://www.gnu.org/licenses/>.
018     */
019    
020    package org.dllearner.prolog;
021    
022    /**
023     * 
024     * @author Sebastian Bader
025     * 
026     */
027    public class PredicateDefinition {
028            private String name;
029            private int arity;
030    
031            public PredicateDefinition(String name, int arity) {
032                    super();
033                    this.name = name;
034                    this.arity = arity;
035            }
036    
037            public PredicateDefinition(Atom atom) {
038                    this(atom.getName(), atom.getArity());
039            }
040    
041            public int getArity() {
042                    return arity;
043            }
044    
045            public String getName() {
046                    return name;
047            }
048    
049            @Override
050            public int hashCode() {
051                    return name.hashCode() * (arity + 1);
052            }
053    
054            @Override
055            public boolean equals(Object obj) {
056                    if (obj == null)
057                            return false;
058                    try {
059                            PredicateDefinition pd = (PredicateDefinition) obj;
060                            if (pd.getArity() != getArity())
061                                    return false;
062                            if (!pd.getName().equals(getName()))
063                                    return false;
064                    } catch (ClassCastException cce) {
065                            return false;
066                    }
067                    return true;
068            }
069    
070            @Override
071            public String toString() {
072                    return name + "/" + arity;
073            }
074    
075    }