DataHolder.java 4.17 KB
Newer Older
Florian Grabowski's avatar
Florian Grabowski committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package de._82grfl1bif.KPI_Visualizer.data;

import de._82grfl1bif.KPI_Visualizer.structures.Building;
import de._82grfl1bif.KPI_Visualizer.structures.Foundation;
import de._82grfl1bif.KPI_Visualizer.structures.Structure;
import org.bukkit.Material;

import java.util.ArrayList;
import java.util.concurrent.ThreadLocalRandom;

public class DataHolder {

    public static Foundation foundation = new Foundation(0, Material.COBBLESTONE);

15
16
    @Deprecated
    public static void generateSimpleData(int buildingCount) {
Florian Grabowski's avatar
Florian Grabowski committed
17
18
        foundation.removeChildren();
        ArrayList<Structure> buildings = new ArrayList<>();
19
        for (int c = 0; c < buildingCount; c++) {
Florian Grabowski's avatar
Florian Grabowski committed
20
21
22
23
24
25
            buildings.add(generateBuilding());
        }
        foundation.addChildren(buildings);
        foundation.optimizeLayout();
    }

26
27
28
    @Deprecated
    public static void ComplexData() {
        Foundation foundation3 = new Foundation(3, Material.BLACK_CONCRETE);
29
        ArrayList<Structure> buildings3 = new ArrayList<>();
Florian Grabowski's avatar
Florian Grabowski committed
30
        for (int i = 0; i < 5; i++) {
31
            buildings3.add(generateBuilding());
Florian Grabowski's avatar
Florian Grabowski committed
32
        }
33
        foundation3.addChildren(buildings3);
Florian Grabowski's avatar
Florian Grabowski committed
34
35


36
        ArrayList<Structure> buildings2_1 = new ArrayList<>();
37
        Foundation foundation2_1 = new Foundation(2, Material.BROWN_CONCRETE);
Florian Grabowski's avatar
Florian Grabowski committed
38
        for (int i = 0; i < 5; i++) {
39
            buildings2_1.add(generateBuilding());
Florian Grabowski's avatar
Florian Grabowski committed
40
        }
41
42
        buildings2_1.add(foundation3);
        foundation2_1.addChildren(buildings2_1);
Florian Grabowski's avatar
Florian Grabowski committed
43

44
        ArrayList<Structure> buildings2_2 = new ArrayList<>();
45
        Foundation foundation2_2 = new Foundation(2, Material.LIGHT_GRAY_CONCRETE);
Florian Grabowski's avatar
Florian Grabowski committed
46
        for (int i = 0; i < 5; i++) {
47
            buildings2_2.add(generateBuilding());
Florian Grabowski's avatar
Florian Grabowski committed
48
        }
49
        foundation2_2.addChildren(buildings2_2);
Florian Grabowski's avatar
Florian Grabowski committed
50
51


52
        ArrayList<Structure> buildings1 = new ArrayList<>();
53
        Foundation foundation1 = new Foundation(1, Material.GRAY_CONCRETE);
Florian Grabowski's avatar
Florian Grabowski committed
54
        for (int i = 0; i < 5; i++) {
55
            buildings1.add(generateBuilding());
Florian Grabowski's avatar
Florian Grabowski committed
56
        }
57
58
59
        buildings1.add(foundation2_1);
        buildings1.add(foundation2_2);
        foundation1.addChildren(buildings1);
Florian Grabowski's avatar
Florian Grabowski committed
60

61
        ArrayList<Structure> buildings0 = new ArrayList<>();
Florian Grabowski's avatar
Florian Grabowski committed
62
        for (int i = 0; i < 5; i++) {
63
            buildings1.add(generateBuilding());
Florian Grabowski's avatar
Florian Grabowski committed
64
        }
65
        buildings0.add(foundation1);
66
        foundation = new Foundation(0, Material.COBBLESTONE);
67
        foundation.addChildren(buildings0);
Florian Grabowski's avatar
Florian Grabowski committed
68
69
70
        foundation.setDepth(0);
    }

71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
    public static void generateTreeFromKlassenList(ArrayList<Klasse> klassen) {
        foundation = new Foundation(0, Material.YELLOW_CONCRETE);
        ArrayList<String> Pakete = new ArrayList<>();
        for (Klasse currentKlasse : klassen) {
            if (currentKlasse.depth >= 0) {
                String[] strings = currentKlasse.path.split("/");
                Foundation f = foundation;
                StringBuilder sb = new StringBuilder();
                for (int i = 2; i < currentKlasse.depth + 2; i++) {
                    sb.append(strings[i]);
                    if (!(strings[i].contains(".java"))){//is foundation
                        sb.append("/");
                    }
                    if (foundation.getFromTree(sb.toString()) == null) {// checks Tree for Element doesn't find it
                        if (strings[i].contains(".java")) {//is not foundation
                            f.generateChild(false, currentKlasse, sb.toString());
                            f = foundation;
                        } else {
                            f = (Foundation) f.generateChild(true,currentKlasse,sb.toString());
                        }
                    }else{//finds Element in tree
                        if ((foundation.getFromTree(sb.toString()).getClass() == Foundation.class)){
                            f = (Foundation) foundation.getFromTree(sb.toString());
                        }
                    }
                }
            }
        }
    }

Florian Grabowski's avatar
Florian Grabowski committed
101
    private static Building generateBuilding() {
102
        Building result = new Building(ThreadLocalRandom.current().nextInt(4, 60 + 1), ThreadLocalRandom.current().nextInt(4, 200 + 1), Material.LIME_CONCRETE);
Florian Grabowski's avatar
Florian Grabowski committed
103
104
105
106
        result.setLocation(foundation.getLocation());
        return result;
    }
}