annotate gwt-client/src/main/java/org/dive4elements/river/client/shared/model/DataCageTree.java @ 7465:4b29bb2c785f

Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 30 Oct 2013 11:58:57 +0100
parents ea9eef426962
children b188255f08b3
rev   line source
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
6 * documentation coming with Dive4Elements River for details.
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
9 package org.dive4elements.river.client.shared.model;
278
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import java.io.Serializable;
7465
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
12 import java.util.List;
278
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 public class DataCageTree implements Serializable
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 {
7465
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
16
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
17 public interface Visitor {
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
18 boolean accept(DataCageNode node);
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
19 } // interface
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
20
278
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 protected DataCageNode root;
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 public DataCageTree() {
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 }
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 public DataCageTree(DataCageNode root) {
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 this.root = root;
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 }
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 public void setRoot(DataCageNode root) {
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31 this.root = root;
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 }
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 public DataCageNode getRoot() {
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 return root;
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 }
7465
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
37
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
38
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
39 protected boolean recursivePrune(DataCageNode node, Visitor visitor) {
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
40 if (!node.hasChildren()) {
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
41 return visitor.accept(node);
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
42 }
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
43
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
44 List<DataCageNode> children = node.getChildren();
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
45
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
46 for (int i = children.size()-1; i >= 0; --i) {
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
47 if (!recursivePrune(children.get(i), visitor)) {
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
48 children.remove(i);
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
49 }
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
50 }
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
51
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
52 return !children.isEmpty();
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
53 }
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
54
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
55 public boolean prune(Visitor visitor) {
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
56 return root == null || !root.hasChildren()
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
57 ? true
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
58 : recursivePrune(root, visitor);
4b29bb2c785f Datacage: Remove tree branches vom datacage tree on client side which do not contain loadable data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
59 }
278
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 }
f33af25b7490 Datacage: transport rpc result to ui.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org