annotate artifact-database/src/main/java/org/dive4elements/artifactdatabase/state/DefaultSection.java @ 473:d0ac790a6c89 dive4elements-move

Moved directories to org.dive4elements
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 10:57:18 +0200
parents artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultSection.java@92b51af2d02d
children 415df0fc4fa1
rev   line source
359
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.artifactdatabase.state;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.util.ArrayList;
419
92b51af2d02d Keep insertion order of attributes in DefaultSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 398
diff changeset
4 import java.util.LinkedHashMap;
359
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 import java.util.List;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import java.util.Map;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import java.util.Set;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import org.w3c.dom.Document;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 import org.w3c.dom.Element;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import org.w3c.dom.Node;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 /**
419
92b51af2d02d Keep insertion order of attributes in DefaultSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 398
diff changeset
14 * Attributes keep the order in which they were inserted.
359
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 */
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 public class DefaultSection implements Section {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 protected String id;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 protected List<Section> subsections;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
419
92b51af2d02d Keep insertion order of attributes in DefaultSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 398
diff changeset
23 /** Attribute-map. */
359
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 protected Map<String, Attribute> attributes;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 /**
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 * Creates a new DefaultSection instance. <b>Note, that the <i>id</i> is used
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 * as Node name of the new Element that is created in toXML().</b>
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 */
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 public DefaultSection(String id) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 this.id = id;
419
92b51af2d02d Keep insertion order of attributes in DefaultSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 398
diff changeset
33 // Use LinkedHashMap to keep insertion order.
92b51af2d02d Keep insertion order of attributes in DefaultSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 398
diff changeset
34 this.attributes = new LinkedHashMap<String, Attribute>();
359
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 this.subsections = new ArrayList<Section>();
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 @Override
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 public String getId() {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 return id;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 @Override
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 public void addSubsection(Section subsection) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 if (subsection != null) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 subsections.add(subsection);
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 @Override
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 public int getSubsectionCount() {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 return subsections.size();
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 @Override
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 public Section getSubsection(int pos) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 if (pos >= 0 && pos < getSubsectionCount()) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 return subsections.get(pos);
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 return null;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68
419
92b51af2d02d Keep insertion order of attributes in DefaultSection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 398
diff changeset
69 /** Adding attribute to end of list. */
359
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 @Override
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 public void addAttribute(String key, Attribute attribute) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 if (key != null && key.length() > 0 && attribute != null) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 attributes.put(key, attribute);
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 @Override
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 public Attribute getAttribute(String key) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 if (key == null || key.length() == 0) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 return null;
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 return attributes.get(key);
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 @Override
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 public Set<String> getKeys() {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 return attributes.keySet();
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 @Override
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 public void toXML(Node parent) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 Document owner = parent.getOwnerDocument();
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 Element sectionEl = owner.createElement(getId());
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 parent.appendChild(sectionEl);
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 for (String key: getKeys()) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 Attribute attr = getAttribute(key);
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 attr.toXML(sectionEl);
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 for (int i = 0, n = getSubsectionCount(); i < n; i++) {
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 Section subsection = getSubsection(i);
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 subsection.toXML(sectionEl);
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 }
f93edbfcf2bc Improved the Settings and Section interfaces and added default implementations for both.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org