EMMA Coverage Report (generated Fri Feb 14 08:28:31 UTC 2014)
[all classes][org.qedeq.kernel.bo.common]

COVERAGE SUMMARY FOR SOURCE FILE [QedeqBoSet.java]

nameclass, %method, %block, %line, %
QedeqBoSet.java100% (1/1)89%  (16/18)76%  (205/268)79%  (57/72)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class QedeqBoSet100% (1/1)89%  (16/18)76%  (205/268)79%  (57/72)
asLongList (): String 0%   (0/1)0%   (0/29)0%   (0/7)
asShortList (): String 0%   (0/1)0%   (0/29)0%   (0/7)
QedeqBoSet (QedeqBo []): void 100% (1/1)71%  (12/17)80%  (4/5)
QedeqBoSet (): void 100% (1/1)100% (8/8)100% (3/3)
QedeqBoSet (QedeqBo): void 100% (1/1)100% (20/20)100% (6/6)
QedeqBoSet (QedeqBoSet): void 100% (1/1)100% (17/17)100% (5/5)
add (QedeqBo): QedeqBoSet 100% (1/1)100% (14/14)100% (4/4)
add (QedeqBoSet): QedeqBoSet 100% (1/1)100% (15/15)100% (4/4)
contains (QedeqBo): boolean 100% (1/1)100% (12/12)100% (3/3)
equals (Object): boolean 100% (1/1)100% (12/12)100% (3/3)
hashCode (): int 100% (1/1)100% (4/4)100% (1/1)
intersection (QedeqBoSet): QedeqBoSet 100% (1/1)100% (15/15)100% (4/4)
isEmpty (): boolean 100% (1/1)100% (4/4)100% (1/1)
iterator (): Iterator 100% (1/1)100% (4/4)100% (1/1)
remove (QedeqBo): QedeqBoSet 100% (1/1)100% (14/14)100% (4/4)
remove (QedeqBoSet): QedeqBoSet 100% (1/1)100% (15/15)100% (4/4)
size (): int 100% (1/1)100% (4/4)100% (1/1)
toString (): String 100% (1/1)100% (35/35)100% (9/9)

1/* This file is part of the project "Hilbert II" - http://www.qedeq.org
2 *
3 * Copyright 2000-2014,  Michael Meyling <mime@qedeq.org>.
4 *
5 * "Hilbert II" is free software; you can redistribute
6 * it and/or modify it under the terms of the GNU General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15 
16package org.qedeq.kernel.bo.common;
17 
18import java.util.Arrays;
19import java.util.HashSet;
20import java.util.Iterator;
21import java.util.Set;
22 
23 
24/**
25 * This class represents a set of {@link QedeqBo}s.
26 *
27 * @author  Michael Meyling
28 */
29public class QedeqBoSet {
30 
31 
32    /** Here are the elements stored. */
33    private final Set elements;
34 
35 
36    /**
37     * Constructs an empty element set.
38     */
39    public QedeqBoSet() {
40        this.elements = new HashSet();
41    }
42 
43 
44    /**
45     * Constructs an element set.
46     *
47     * @param  elements the elements to put into the set
48     * @throws IllegalArgumentException if <code>elements</code> was a NullPointer
49     */
50    public QedeqBoSet(final QedeqBo[] elements) {
51        if (elements == null) {
52            throw new IllegalArgumentException(
53                "NullPointer as element array is not allowed");
54        }
55        this.elements = new HashSet(Arrays.asList(elements));
56    }
57 
58    /**
59     * Constructs an element set.
60     *
61     * @param  element  Put this element into the set
62     * @throws IllegalArgumentException if <code>element</code> was a NullPointer
63     */
64    public QedeqBoSet(final QedeqBo element) {
65        if (element == null) {
66            throw new IllegalArgumentException(
67                "NullPointer as element array is not allowed");
68        }
69        this.elements = new HashSet();
70        elements.add(element);
71    }
72 
73    /**
74     * Constructs an element set.
75     *
76     * @param  set  contains the elements to put into the set
77     * @throws IllegalArgumentException if <code>set</code> was a
78     *         NullPointer
79     */
80    public QedeqBoSet(final QedeqBoSet set) {
81        if (set == null) {
82            throw new IllegalArgumentException(
83                "NullPointer as set is not allowed");
84        }
85        this.elements = new HashSet(set.elements);
86    }
87 
88 
89    /**
90     * Is element in set?
91     *
92     * @param   element    QedeqBo to check for.
93     * @return  Is <code>element</code> in this set?
94     * @throws  IllegalArgumentException if the element was a
95     *          NullPointer
96     */
97    public final boolean contains(final QedeqBo element) {
98        if (element == null) {
99            throw new IllegalArgumentException("NullPointer as element is not allowed");
100        }
101        return this.elements.contains(element);
102    }
103 
104    /**
105     * Is this set empty?
106     *
107     * @return  Is this set empty?
108     */
109    public final boolean isEmpty() {
110        return elements.isEmpty();
111    }
112 
113 
114    /**
115     * Add an element to set. This object is after the method the
116     * union of this set with {<code>element</code>}
117     *
118     * @param   element    element to put into the set
119     * @return  Possibly changed <code>this</code>.
120     * @throws  IllegalArgumentException if the element was a
121     *          NullPointer
122     */
123    public final QedeqBoSet add(final QedeqBo element) {
124        if (element == null) {
125            throw new IllegalArgumentException("NullPointer as element is not allowed");
126        }
127        elements.add(element);
128        return this;
129    }
130 
131 
132    /**
133     * Add elements from another {@link QedeqBoSet} to this set.
134     * After this method this object is the union of the two sets.
135     *
136     * @param   set    add all elements that are here
137     * @return  Possibly changed <code>this</code>.
138     * @throws  IllegalArgumentException if the set was a
139     *          NullPointer
140     */
141    public final QedeqBoSet add(final QedeqBoSet set) {
142        if (set == null) {
143            throw new IllegalArgumentException(
144                "NullPointer as set is not allowed");
145        }
146        elements.addAll(set.elements);
147        return this;
148    }
149 
150 
151    /**
152     * Remove an element from this set.
153     *
154     * @param   element    QedeqBo to remove from the set. Must not be <code>null</code>.
155     * @return  Possibly changed <code>this</code>.
156     * @throws  IllegalArgumentException if the element was a
157     *          NullPointer
158     */
159    public final QedeqBoSet remove(final QedeqBo element) {
160        if (element == null) {
161            throw new IllegalArgumentException(
162                "NullPointer as element is not allowed");
163        }
164        elements.remove(element);
165        return this;
166    }
167 
168    /**
169     * Remove elements from another {@link QedeqBoSet} from this set.
170     * After this method this object is the asymmetric set difference of the
171     * two sets: <code>this</code> \ <code>set</code>.
172     *
173     * @param   set    Remove all elements that are in this set from
174     *                 <code>this</code>.
175     * @return  Possibly changed <code>this</code>.
176     * @throws  IllegalArgumentException if the set was a
177     *          NullPointer
178     */
179    public final QedeqBoSet remove(final QedeqBoSet set) {
180        if (set == null) {
181            throw new IllegalArgumentException(
182                "NullPointer as set is not allowed");
183        }
184        this.elements.removeAll(set.elements);
185        return this;
186    }
187 
188    /**
189     * Build the intersection.
190     *
191     * @param   set    Check for these elements.
192     * @return  Possibly changed <code>this</code>.
193     * @throws  IllegalArgumentException if the set was a
194     *          NullPointer
195     */
196    public final QedeqBoSet intersection(final QedeqBoSet set) {
197        if (set == null) {
198            throw new IllegalArgumentException(
199                "NullPointer as set is not allowed");
200        }
201        this.elements.retainAll(set.elements);
202        return this;
203    }
204 
205 
206    /**
207     * Get number of elements.
208     *
209     * @return  Number of elements in this set.
210     */
211    public final int size() {
212        return this.elements.size();
213    }
214 
215    /**
216     * Returns an iterator over the elements in this set.  The elements are
217     * returned in no particular order (unless this set is an instance of some
218     * class that provides a guarantee).
219     *
220     * @return  Iterator over the elements in this set.
221     */
222    public Iterator iterator() {
223        return this.elements.iterator();
224    }
225 
226    public final boolean equals(final Object obj) {
227        if (obj instanceof QedeqBoSet) {
228            return this.elements.equals(((QedeqBoSet) obj).elements);
229        }
230        return false;
231    }
232 
233    public final int hashCode() {
234        return elements.hashCode();
235    }
236 
237    public final String toString() {
238        final StringBuffer result = new StringBuffer();
239        result.append("{");
240        final Iterator iterator = elements.iterator();
241        while (iterator.hasNext()) {
242            result.append(iterator.next());
243            if (iterator.hasNext()) {
244                result.append(", ");
245            }
246        }
247        result.append("}");
248        return result.toString();
249    }
250 
251 
252    public String asLongList() {
253        final StringBuffer result = new StringBuffer();
254        final Iterator iterator = elements.iterator();
255        while (iterator.hasNext()) {
256            result.append(((QedeqBo) iterator.next()).getUrl());
257            if (iterator.hasNext()) {
258                result.append(", ");
259            }
260        }
261        return result.toString();
262    }
263 
264 
265    public String asShortList() {
266        final StringBuffer result = new StringBuffer();
267        final Iterator iterator = elements.iterator();
268        while (iterator.hasNext()) {
269            result.append(((QedeqBo) iterator.next()).getName());
270            if (iterator.hasNext()) {
271                result.append(", ");
272            }
273        }
274        return result.toString();
275    }
276 
277 
278}

[all classes][org.qedeq.kernel.bo.common]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov