annotate gwt-client/src/main/java/org/dive4elements/river/client/shared/model/DataCageTree.java @ 8871:78cd6572778d

Introduced groups for modules. Modules marked with the same group-id, will be put together in the ui. Also using now the localization info from the server instead of localizing the modules again on the client side.
author gernotbelger
date Wed, 07 Feb 2018 12:02:58 +0100
parents 4b29bb2c785f
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