View Javadoc

1   /*
2    wsmo4j - a WSMO API and Reference Implementation
3    
4    Copyright (c) 2004-2005, OntoText Lab. / SIRMA
5                            University of Innsbruck, Austria
6    
7    This library is free software; you can redistribute it and/or modify it under
8    the terms of the GNU Lesser General Public License as published by the Free
9    Software Foundation; either version 2.1 of the License, or (at your option)
10   any later version.
11   This library is distributed in the hope that it will be useful, but WITHOUT
12   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13   FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14   details.
15   You should have received a copy of the GNU Lesser General Public License along
16   with this library; if not, write to the Free Software Foundation, Inc.,
17   59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18   */
19  
20  /**
21   * <p>Title: WSMO4J</p>
22   * <p>Description: WSMO API and a Reference Implementation</p>
23   * <p>Copyright:  Copyright (c) 2004-2005</p>
24   * <p>Company: OntoText Lab. / SIRMA </p>
25   */
26  
27  package com.ontotext.wsmo4j.ontology;
28  
29  import org.omwg.ontology.*;
30  import org.omwg.ontology.ComplexDataType;
31  import org.omwg.ontology.SimpleDataType;
32  import org.wsmo.common.IRI;
33  
34  
35  public class ComplexDataTypeImpl implements ComplexDataType{
36  
37      private IRI iri;
38      private SimpleDataType[] types;
39  
40      public ComplexDataTypeImpl(IRI typeIRI, SimpleDataType[] types) {
41          assert types != null;
42          assert typeIRI != null;
43          
44          iri = typeIRI;
45          this.types = new SimpleDataType[types.length];
46          System.arraycopy(types, 0, this.types, 0, types.length);
47      }
48      
49      public byte getArity() {
50          return (byte)this.types.length;
51      }
52  
53      public SimpleDataType getArgumentRange(byte pos) {
54          if (pos < 0
55                  || pos >= types.length) {
56              throw new IllegalArgumentException(
57                      "Invalid argument position for type '"
58                      + getIRI().toString()
59                      + "'!");
60          }
61          return types[pos];
62      }
63      
64      public String toString() {
65          return iri.toString();
66      }
67      
68      public IRI getIRI() {
69          return iri;
70      }
71      
72      public boolean equals(Object object) {
73          if (object == this) {
74              return true;
75          }
76          if (object == null
77                  || false == object instanceof WsmlDataType) {
78              return false;
79          }
80          return toString().equals(object.toString());
81      }
82      
83      public int hashCode() {
84          return iri.hashCode();
85      }
86  
87  }
88  
89  /*
90   * $Log$
91   * Revision 1.3  2005/09/16 14:02:44  alex_simov
92   * Identifier.asString() removed, use Object.toString() instead
93   * (Implementations MUST override toString())
94   *
95   * Revision 1.2  2005/09/06 18:33:42  holgerlausen
96   *   support for datatypes: updated implementation according to interfaces
97   *   renamed WsmlDataTypeImpl to SimpleDataTypeImpl
98   *   moved DataValueImpl to ComplexDataValueImpl
99   *   added SimpleDataValueImpl for basic strings, decimal, ints
100  *
101  * Revision 1.1  2005/07/04 15:25:16  alex_simov
102  * DataValue/DataType changes
103  *
104  */
105