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 org.qedeq.base.utility.EqualsUtility;
19  import org.qedeq.kernel.se.base.module.AuthorList;
20  import org.qedeq.kernel.se.base.module.Header;
21  import org.qedeq.kernel.se.base.module.ImportList;
22  import org.qedeq.kernel.se.base.module.LatexList;
23  import org.qedeq.kernel.se.base.module.Specification;
24  import org.qedeq.kernel.se.base.module.UsedByList;
25  
26  
27  /**
28   * Header of a qedeq file. The header specifies such things as the location of the file,
29   * the title and abstract of that module, imports and exports.
30   *
31   * @author  Michael Meyling
32   */
33  public class HeaderVo implements Header {
34  
35      /** Module specification. */
36      private Specification specification;
37  
38      /** Module title. */
39      private LatexList title;
40  
41      /** Module "abstract". */
42      private LatexList summary;
43  
44      /** Author list. */
45      private AuthorList authorList;
46  
47      /** List of imported modules. */
48      private ImportList importList;
49  
50      /** List of modules that depend on current one. */
51      private UsedByList usedByList;
52  
53      /** Email address of module administrator. */
54      private String email;
55  
56      /**
57       * Constructs a new module header.
58       */
59      public HeaderVo() {
60          // nothing to do
61      }
62  
63      /**
64       * Set module specification.
65       * @param   specification  Module specification.
66       */
67      public final void setSpecification(final SpecificationVo specification) {
68          this.specification = specification;
69      }
70  
71      public final Specification getSpecification() {
72          return specification;
73      }
74  
75      /**
76       * Set module title.
77       *
78       * @param   title   Module title texts.
79       */
80      public final void setTitle(final LatexListVo title) {
81          this.title = title;
82      }
83  
84      public final LatexList getTitle() {
85          return title;
86      }
87  
88      /**
89       * Set module summary text.
90       *
91       * @param   summary Module summary text.
92       */
93      public final void setSummary(final LatexListVo summary) {
94          this.summary = summary;
95      }
96  
97      public final LatexList getSummary() {
98          return summary;
99      }
100 
101     /**
102      * Set list of authors of this module.
103      *
104      * @param   authors Author list.
105      */
106     public final void setAuthorList(final AuthorListVo authors) {
107         this.authorList = authors;
108     }
109 
110     public final AuthorList getAuthorList() {
111         return authorList;
112     }
113 
114     /**
115      * Set list of imports needed for this module.
116      *
117      * @param   imports Module import list.
118      */
119     public final void setImportList(final ImportListVo imports) {
120         this.importList = imports;
121     }
122 
123     public final ImportList getImportList() {
124         return importList;
125     }
126 
127     /**
128      * Set list of known modules that need this module.
129      *
130      * @param   usedby  List of modules.
131      */
132     public final void setUsedByList(final UsedByListVo usedby) {
133         this.usedByList = usedby;
134     }
135 
136     public final UsedByList getUsedByList() {
137         return usedByList;
138     }
139 
140     /**
141      * Set email address of module administrator.
142      *
143      * @param   email   Email address.
144      */
145     public final void setEmail(final String email) {
146         this.email = email;
147     }
148 
149     public final String getEmail() {
150         return email;
151     }
152 
153     public boolean equals(final Object obj) {
154         if (!(obj instanceof HeaderVo)) {
155             return false;
156         }
157         final HeaderVo other = (HeaderVo) obj;
158         return  EqualsUtility.equals(getSpecification(), other.getSpecification())
159             && EqualsUtility.equals(getTitle(), other.getTitle())
160             && EqualsUtility.equals(getSummary(), other.getSummary())
161             && EqualsUtility.equals(getAuthorList(), other.getAuthorList())
162             && EqualsUtility.equals(getImportList(), other.getImportList())
163             && EqualsUtility.equals(getUsedByList(), other.getUsedByList())
164             && EqualsUtility.equals(getEmail(), other.getEmail());
165     }
166 
167     public int hashCode() {
168         return (getSpecification() != null ? getSpecification().hashCode() : 0)
169             ^ (getTitle() != null ? 1 ^ getTitle().hashCode() : 0)
170             ^ (getSummary() != null ? 2 ^ getSummary().hashCode() : 0)
171             ^ (getAuthorList() != null ? 3 ^ getAuthorList().hashCode() : 0)
172             ^ (getImportList() != null ? 4 ^ getImportList().hashCode() : 0)
173             ^ (getUsedByList() != null ? 5 ^ getUsedByList().hashCode() : 0)
174             ^ (getEmail() != null ? 6 ^ getEmail().hashCode() : 0);
175     }
176 
177     public String toString() {
178         final StringBuffer buffer = new StringBuffer("Header\n");
179         buffer.append(getSpecification() + "\n");
180         buffer.append("Title: ");
181         buffer.append(getTitle() + "\n\n");
182         buffer.append("Abstract: ");
183         buffer.append(getSummary() + "\n\n");
184         buffer.append(getAuthorList() + "\n");
185         buffer.append(getImportList() + "\n");
186         buffer.append(getUsedByList() + "\n");
187         if (getEmail() != null) {
188             buffer.append("\nModule email: <" + getEmail() + ">");
189         }
190         return buffer.toString();
191     }
192 
193 }