001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.commons.betwixt.schema;
019
020 import java.beans.IntrospectionException;
021 import java.util.Collection;
022 import java.util.Iterator;
023
024 import org.apache.commons.betwixt.ElementDescriptor;
025
026 /**
027 * Models a local <code>complexType</code> definition.
028 * @author <a href='http://commons.apache.org/'>Apache Commons Team</a>
029 * @version $Revision: 561314 $
030 */
031 public class LocalComplexType extends ComplexType {
032
033
034 public LocalComplexType() {}
035
036 public LocalComplexType(TranscriptionConfiguration configuration, ElementDescriptor elementDescriptor, Schema schema) throws IntrospectionException {
037 super(configuration, elementDescriptor, schema);
038 }
039
040 public boolean equals(Object obj) {
041 boolean result = false;
042 if (obj instanceof GlobalComplexType) {
043 GlobalComplexType complexType = (GlobalComplexType) obj;
044 result =
045 equalContents(attributes, complexType.attributes) &&
046 equalContents(elements, complexType.elements);
047
048 }
049 return result;
050 }
051
052
053 private boolean equalContents(Collection one, Collection two)
054 {
055 // doesn't check cardinality but should be ok
056 if (one.size() != two.size()) {
057 return false;
058 }
059 for (Iterator it=one.iterator();it.hasNext();) {
060 Object object = it.next();
061 if (!two.contains(object)) {
062 return false;
063 }
064 }
065 return true;
066 }
067
068 public int hashCode() {
069 return 0;
070 }
071
072 /**
073 * Null safe equals method
074 * @param one
075 * @param two
076 * @return
077 */
078 private boolean isEqual(String one, String two) {
079 boolean result = false;
080 if (one == null) {
081 result = (two == null);
082 }
083 else
084 {
085 result = one.equals(two);
086 }
087
088 return result;
089 }
090
091 public String toString() {
092 StringBuffer buffer = new StringBuffer();
093 buffer.append("<xsd:complexType>");
094 buffer.append("<xsd:sequence>");
095 for (Iterator it=elements.iterator(); it.hasNext();) {
096 buffer.append(it.next());
097 }
098 buffer.append("</xsd:sequence>");
099
100 for (Iterator it=attributes.iterator(); it.hasNext();) {
101 buffer.append(it.next());
102 }
103 buffer.append("</xsd:complexType>");
104 return buffer.toString();
105 }
106 }