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.LinkList;
23  
24  
25  /**
26   * List of links. A link is just a string that identifies something.
27   *
28   * @author  Michael Meyling
29   */
30  public class LinkListVo implements LinkList {
31  
32      /** Contains all list elements. */
33      private final List list;
34  
35      /**
36       * Constructs an empty list of links.
37       */
38      public LinkListVo() {
39          this.list = new ArrayList();
40  
41      }
42  
43      /**
44       * Add link to list.
45       *
46       * @param   id  Identifier to add.
47       */
48      public final void add(final String id) {
49          list.add(id);
50      }
51  
52      public final int size() {
53          return list.size();
54      }
55  
56      public final String get(final int index) {
57          return (String) list.get(index);
58      }
59  
60      public boolean equals(final Object obj) {
61          if (!(obj instanceof LinkListVo)) {
62              return false;
63          }
64          final LinkListVo otherList = (LinkListVo) obj;
65          if (size() != otherList.size()) {
66              return false;
67          }
68          for (int i = 0; i < size(); i++) {
69              if (!EqualsUtility.equals(get(i), otherList.get(i))) {
70                  return false;
71              }
72          }
73          return true;
74      }
75  
76      public int hashCode() {
77          int hash = 0;
78          for (int i = 0; i < size(); i++) {
79              hash = hash ^ (i + 1);
80              if (get(i) != null) {
81                  hash = hash ^ get(i).hashCode();
82              }
83          }
84          return hash;
85      }
86  
87      public String toString() {
88          final StringBuffer buffer = new StringBuffer("List of links:\n");
89          for (int i = 0; i < size(); i++) {
90              if (i != 0) {
91                  buffer.append("\n");
92              }
93              buffer.append((i + 1) + ":\n");
94              buffer.append(get(i) != null ? get(i) : null);
95          }
96          return buffer.toString();
97      }
98  
99  }