1. /*
  2. * $Header: /home/cvs/jakarta-commons/primitives/src/java/org/apache/commons/collections/primitives/adapters/AbstractCollectionCharCollection.java,v 1.2 2003/10/14 20:04:17 scolebourne Exp $
  3. * ====================================================================
  4. * The Apache Software License, Version 1.1
  5. *
  6. * Copyright (c) 2003 The Apache Software Foundation. All rights
  7. * reserved.
  8. *
  9. * Redistribution and use in source and binary forms, with or without
  10. * modification, are permitted provided that the following conditions
  11. * are met:
  12. *
  13. * 1. Redistributions of source code must retain the above copyright
  14. * notice, this list of conditions and the following disclaimer.
  15. *
  16. * 2. Redistributions in binary form must reproduce the above copyright
  17. * notice, this list of conditions and the following disclaimer in
  18. * the documentation and/or other materials provided with the
  19. * distribution.
  20. *
  21. * 3. The end-user documentation included with the redistribution, if
  22. * any, must include the following acknowledgement:
  23. * "This product includes software developed by the
  24. * Apache Software Foundation (http://www.apache.org/)."
  25. * Alternately, this acknowledgement may appear in the software itself,
  26. * if and wherever such third-party acknowledgements normally appear.
  27. *
  28. * 4. The names "The Jakarta Project", "Commons", and "Apache Software
  29. * Foundation" must not be used to endorse or promote products derived
  30. * from this software without prior written permission. For written
  31. * permission, please contact apache@apache.org.
  32. *
  33. * 5. Products derived from this software may not be called "Apache"
  34. * nor may "Apache" appear in their names without prior written
  35. * permission of the Apache Software Foundation.
  36. *
  37. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  38. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  39. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  40. * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  41. * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  42. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  43. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  44. * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  45. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  46. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  47. * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  48. * SUCH DAMAGE.
  49. * ====================================================================
  50. *
  51. * This software consists of voluntary contributions made by many
  52. * individuals on behalf of the Apache Software Foundation. For more
  53. * information on the Apache Software Foundation, please see
  54. * <http://www.apache.org/>.
  55. *
  56. */
  57. package org.apache.commons.collections.primitives.adapters;
  58. import java.util.Collection;
  59. import org.apache.commons.collections.primitives.CharCollection;
  60. import org.apache.commons.collections.primitives.CharIterator;
  61. /**
  62. * @since Commons Primitives 0.1
  63. * @version $Revision: 1.2 $ $Date: 2003/10/14 20:04:17 $
  64. * @author Rodney Waldhoff
  65. */
  66. abstract class AbstractCollectionCharCollection implements CharCollection {
  67. protected AbstractCollectionCharCollection() {
  68. }
  69. public boolean add(char element) {
  70. return getCollection().add(new Character(element));
  71. }
  72. public boolean addAll(CharCollection c) {
  73. return getCollection().addAll(CharCollectionCollection.wrap(c));
  74. }
  75. public void clear() {
  76. getCollection().clear();
  77. }
  78. public boolean contains(char element) {
  79. return getCollection().contains(new Character(element));
  80. }
  81. public boolean containsAll(CharCollection c) {
  82. return getCollection().containsAll(CharCollectionCollection.wrap(c));
  83. }
  84. public String toString() {
  85. return getCollection().toString();
  86. }
  87. public boolean isEmpty() {
  88. return getCollection().isEmpty();
  89. }
  90. /**
  91. * {@link IteratorCharIterator#wrap wraps} the
  92. * {@link java.util.Iterator Iterator}
  93. * returned by my underlying
  94. * {@link Collection Collection},
  95. * if any.
  96. */
  97. public CharIterator iterator() {
  98. return IteratorCharIterator.wrap(getCollection().iterator());
  99. }
  100. public boolean removeElement(char element) {
  101. return getCollection().remove(new Character(element));
  102. }
  103. public boolean removeAll(CharCollection c) {
  104. return getCollection().removeAll(CharCollectionCollection.wrap(c));
  105. }
  106. public boolean retainAll(CharCollection c) {
  107. return getCollection().retainAll(CharCollectionCollection.wrap(c));
  108. }
  109. public int size() {
  110. return getCollection().size();
  111. }
  112. public char[] toArray() {
  113. Object[] src = getCollection().toArray();
  114. char[] dest = new char[src.length];
  115. for(int i=0;i<src.length;i++) {
  116. dest[i] = ((Character)(src[i])).charValue();
  117. }
  118. return dest;
  119. }
  120. public char[] toArray(char[] dest) {
  121. Object[] src = getCollection().toArray();
  122. if(dest.length < src.length) {
  123. dest = new char[src.length];
  124. }
  125. for(int i=0;i<src.length;i++) {
  126. dest[i] = ((Character)(src[i])).charValue();
  127. }
  128. return dest;
  129. }
  130. protected abstract Collection getCollection();
  131. }