View Javadoc

1   /* This file is part of the project "Hilbert II" - http://www.qedeq.org" target="alexandria_uri">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  
16  package org.qedeq.kernel.se.dto.module;
17  
18  import java.util.ArrayList;
19  import java.util.List;
20  
21  import org.qedeq.base.utility.EqualsUtility;
22  import org.qedeq.kernel.se.base.module.Specification;
23  import org.qedeq.kernel.se.base.module.UsedByList;
24  
25  
26  /**
27   * List of modules which use the current one.
28   *
29   * @author  Michael Meyling
30   */
31  public class UsedByListVo implements UsedByList {
32  
33      /** Contains all list elements. */
34      private final List list;
35  
36      /**
37       * Constructs an empty list of used by modules.
38       */
39      public UsedByListVo() {
40          this.list = new ArrayList();
41  
42      }
43  
44      /**
45       * Add specification of module.
46       *
47       * @param   specification   Module specification
48       */
49      public final void add(final SpecificationVo specification) {
50          list.add(specification);
51      }
52  
53      public final int size() {
54          return list.size();
55      }
56  
57      public final Specification get(final int index) {
58          return (Specification) list.get(index);
59      }
60  
61      public boolean equals(final Object obj) {
62          if (!(obj instanceof UsedByListVo)) {
63              return false;
64          }
65          final UsedByListVo otherList = (UsedByListVo) obj;
66          if (size() != otherList.size()) {
67              return false;
68          }
69          for (int i = 0; i < size(); i++) {
70              if (!EqualsUtility.equals(get(i), otherList.get(i))) {
71                  return false;
72              }
73          }
74          return true;
75      }
76  
77      public int hashCode() {
78          int hash = 0;
79          for (int i = 0; i < size(); i++) {
80              hash = hash ^ (i + 1);
81              if (get(i) != null) {
82                  hash = hash ^ get(i).hashCode();
83              }
84          }
85          return hash;
86      }
87  
88      public String toString() {
89          final StringBuffer buffer = new StringBuffer("List of modules that use the current one:\n");
90          for (int i = 0; i < size(); i++) {
91              if (i != 0) {
92                  buffer.append("\n");
93              }
94              buffer.append((i + 1) + ":\t");
95              buffer.append(get(i) != null ? get(i).toString() : null);
96          }
97          return buffer.toString();
98      }
99  
100 }