Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Florian Grabowski
Informationslandschaften in Minecraft zur Visualisierung von Softwarequalität
Compare Revisions
b262e83d30dda403b59e496bceed0d9840d7d36a...a1e80c61facd177d9cfc15e414130f46f7652c44
Commits (2)
Code Style and Imports
· b7e294e8
Florian Grabowski
authored
Feb 03, 2022
b7e294e8
Language Changes
· a1e80c61
Florian Grabowski
authored
Feb 03, 2022
a1e80c61
Hide whitespace changes
Inline
Side-by-side
.gitignore
View file @
a1e80c61
/src/server/logs/
/src/server/world/
/src/server/plugins/
/src/server/world_nether/
/src/server/world_the_end/
*.class
/.idea/inspectionProfiles/Project_Default.xml
/.idea/sqldialects.xml
*.mca
.console_history
.idea/KPI_Visualizer.iml
View file @
a1e80c61
...
...
@@ -20,6 +20,10 @@
<excludeFolder
url=
"file://$MODULE_DIR$/src/server/logs"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/.idea/dataSources"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/target"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/src/server/plugins"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/src/server/world"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/src/server/world_nether"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/src/server/world_the_end"
/>
</content>
<orderEntry
type=
"inheritedJdk"
/>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/commands/
g
enerateLayout.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/commands/
G
enerateLayout.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.commands
;
package
de._82grfl1bif.
kpi
Visualizer.commands
;
import
de._82grfl1bif.KPI_Visualizer.data.DataHolder
;
import
de._82grfl1bif.KPI_Visualizer.data.JsonParser
;
import
de._82grfl1bif.KPI_Visualizer.layouts.TreeMap.Rectangle
;
import
de._82grfl1bif.KPI_Visualizer.layouts.TreeMap.Row
;
import
de._82grfl1bif.KPI_Visualizer.layouts.TreeMap.SquarifiedTreemapLayout
;
import
de._82grfl1bif.KPI_Visualizer.structures.*
;
import
de._82grfl1bif.kpiVisualizer.data.DataHolder
;
import
de._82grfl1bif.kpiVisualizer.data.JsonParser
;
import
de._82grfl1bif.kpiVisualizer.layouts.treeMap.Rectangle
;
import
de._82grfl1bif.kpiVisualizer.layouts.treeMap.Row
;
import
de._82grfl1bif.kpiVisualizer.layouts.treeMap.SquarifiedTreemapLayout
;
import
de._82grfl1bif.kpiVisualizer.structures.Builder
;
import
de._82grfl1bif.kpiVisualizer.structures.Building
;
import
de._82grfl1bif.kpiVisualizer.structures.Foundation
;
import
de._82grfl1bif.kpiVisualizer.structures.Structure
;
import
org.bukkit.Bukkit
;
import
org.bukkit.Location
;
import
org.bukkit.Material
;
...
...
@@ -21,7 +24,7 @@ import java.awt.*;
import
java.util.Map
;
import
java.util.logging.Level
;
public
class
g
enerateLayout
implements
CommandExecutor
{
public
class
G
enerateLayout
implements
CommandExecutor
{
@Override
public
boolean
onCommand
(
@NotNull
CommandSender
sender
,
@NotNull
Command
command
,
@NotNull
String
label
,
@NotNull
String
[]
args
)
{
...
...
@@ -29,7 +32,6 @@ public class generateLayout implements CommandExecutor {
sender
.
sendMessage
(
"please type or select the needed Arguments with tab."
);
return
false
;
}
sender
.
sendMessage
(
"generating SimpleSquareLayout"
);
Server
server
=
sender
.
getServer
();
Builder
builder
=
new
Builder
(
server
);
Player
player
=
server
.
getPlayer
(
sender
.
getName
());
...
...
@@ -41,6 +43,7 @@ public class generateLayout implements CommandExecutor {
if
(
player
!=
null
)
{
//check if Player exists for getting Start coordinates.
Location
location
=
player
.
getLocation
();
if
(
args
[
1
].
equals
(
"SquarifiedTreemap"
))
{
//check 2. Argument whether to use SquarifiedTreemap or SimpleSquare Layout.
sender
.
sendMessage
(
"generating SquarifiedTreemapLayout"
);
BukkitRunnable
t
=
new
BukkitRunnable
()
{
@Override
public
void
run
()
{
...
...
@@ -56,18 +59,13 @@ public class generateLayout implements CommandExecutor {
}
else
{
builder
.
fillQube
(
location
.
clone
().
add
(
r
.
getOrigin
().
x
,
s
.
getDepth
()+
100
,
r
.
getOrigin
().
y
),(
int
)(
r
.
getWidth
()),((
Building
)
s
).
getHeight
(),(
int
)(
r
.
getHeight
()),
s
.
getMaterial
());
}
if
(
r
.
getHeight
()
>=
5
&&
r
.
getWidth
()
>=
5
){
}
else
{
Bukkit
.
getLogger
().
log
(
Level
.
SEVERE
,
"the rectangle is too small"
);
}
}
}
}
};
t
.
run
();
return
true
;
}
else
{
sender
.
sendMessage
(
"generating SimpleSquareLayout"
);
BukkitRunnable
t
=
new
BukkitRunnable
()
{
@Override
public
void
run
()
{
...
...
@@ -80,11 +78,11 @@ public class generateLayout implements CommandExecutor {
}
};
t
.
run
();
return
true
;
}
return
true
;
}
else
{
Bukkit
.
getLogger
().
log
(
Level
.
SEVERE
,
"
Kein Spieler gef
und
en
."
);
Bukkit
.
getLogger
().
log
(
Level
.
SEVERE
,
"
no player fo
und."
);
return
false
;
}
}
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/commands/SetPreset.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/commands/SetPreset.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.commands
;
package
de._82grfl1bif.
kpi
Visualizer.commands
;
import
de._82grfl1bif.
KPI_
Visualizer.data.DataHolder
;
import
de._82grfl1bif.
KPI_
Visualizer.structures.Builder
;
import
de._82grfl1bif.
KPI_
Visualizer.structures.Building
;
import
de._82grfl1bif.
KPI_
Visualizer.structures.Structure
;
import
de._82grfl1bif.
kpi
Visualizer.data.DataHolder
;
import
de._82grfl1bif.
kpi
Visualizer.structures.Builder
;
import
de._82grfl1bif.
kpi
Visualizer.structures.Building
;
import
de._82grfl1bif.
kpi
Visualizer.structures.Structure
;
import
org.bukkit.Bukkit
;
import
org.bukkit.Location
;
import
org.bukkit.Server
;
...
...
@@ -15,6 +15,7 @@ import org.jetbrains.annotations.NotNull;
import
java.util.logging.Level
;
@Deprecated
public
class
SetPreset
implements
CommandExecutor
{
@Override
...
...
@@ -41,7 +42,7 @@ public class SetPreset implements CommandExecutor {
t
.
run
();
}
}
else
{
Bukkit
.
getLogger
().
log
(
Level
.
SEVERE
,
"
Kein Spieler gef
und
en
."
);
Bukkit
.
getLogger
().
log
(
Level
.
SEVERE
,
"
no player fo
und."
);
return
false
;
}
return
true
;
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/data/DataHolder.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/data/DataHolder.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.data
;
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
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
;
...
...
@@ -70,7 +70,6 @@ public class DataHolder {
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
(
"/"
);
...
...
@@ -98,6 +97,7 @@ public class DataHolder {
}
}
@Deprecated
private
static
Building
generateBuilding
()
{
Building
result
=
new
Building
(
ThreadLocalRandom
.
current
().
nextInt
(
4
,
60
+
1
),
ThreadLocalRandom
.
current
().
nextInt
(
4
,
200
+
1
),
Material
.
LIME_CONCRETE
);
result
.
setLocation
(
foundation
.
getLocation
());
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/data/JsonParser.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/data/JsonParser.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.data
;
package
de._82grfl1bif.
kpi
Visualizer.data
;
import
org.bukkit.Bukkit
;
import
org.jetbrains.annotations.NotNull
;
...
...
@@ -6,10 +6,16 @@ import org.json.simple.JSONArray;
import
org.json.simple.JSONObject
;
import
org.json.simple.parser.JSONParser
;
import
java.io.*
;
import
java.io.BufferedReader
;
import
java.io.BufferedWriter
;
import
java.io.File
;
import
java.io.FileReader
;
import
java.io.FileWriter
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.logging.Level
;
public
class
JsonParser
{
...
...
@@ -36,13 +42,13 @@ public class JsonParser {
JSONArray
entities
=
(
JSONArray
)
jsonObject
.
get
(
"entities"
);
ArrayList
<
Klasse
>
entitiesList
=
new
ArrayList
<>();
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd kk:mm:ss Z"
);
for
(
int
i
=
0
;
i
<
entities
.
size
();
i
++
)
{
JSONObject
object
=
(
JSONObject
)
entit
ies
.
get
(
i
)
;
JSONArray
commits
=
(
JSONArray
)
((
JSONObject
)
entit
ies
.
get
(
i
)
).
get
(
"commits"
);
for
(
Object
entity
:
entities
)
{
JSONObject
object
=
(
JSONObject
)
entit
y
;
JSONArray
commits
=
(
JSONArray
)
((
JSONObject
)
entit
y
).
get
(
"commits"
);
ArrayList
<
LocalDateTime
>
dates
=
new
ArrayList
<>();
for
(
Object
o:
commits
){
for
(
Object
o
:
commits
)
{
Object
date
=
((
JSONObject
)
o
).
get
(
"date"
);
LocalDateTime
time
=
LocalDateTime
.
parse
(
date
.
toString
(),
formatter
);
LocalDateTime
time
=
LocalDateTime
.
parse
(
date
.
toString
(),
formatter
);
dates
.
add
(
time
);
}
Klasse
currentKlasse
=
new
Klasse
(
...
...
@@ -56,7 +62,7 @@ public class JsonParser {
((
JSONArray
)
object
.
get
(
"variables"
)).
size
(),
Math
.
round
(
Float
.
parseFloat
(
object
.
get
(
"complexity"
).
toString
())),
dates
);
if
(
currentKlasse
.
depth
!=
-
1
)
entitiesList
.
add
(
currentKlasse
);
if
(
currentKlasse
.
depth
!=
-
1
)
entitiesList
.
add
(
currentKlasse
);
}
entitiesList
.
sort
(
new
DepthComparator
());
DataHolder
.
generateTreeFromKlassenList
(
entitiesList
);
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/data/Klasse.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/data/Klasse.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.data
;
package
de._82grfl1bif.
kpi
Visualizer.data
;
import
java.time.Duration
;
import
java.time.LocalDateTime
;
...
...
@@ -32,15 +32,15 @@ public class Klasse {
public
static
int
variablesMin
=
Integer
.
MAX_VALUE
;
public
static
int
variablesMax
;
public
Duration
bearbeiteteZeit
;
public
static
Duration
bearbeiteteZeit
Min
;
public
static
Duration
bearbeiteteZeit
Max
;
public
Duration
zeitSeitLetzterBearbeitung
;
public
static
Duration
zeitSeitLetzterBearbeitung
Min
;
public
static
Duration
zeitSeitLetzterBearbeitung
Max
;
public
Duration
zeitSeitE
rst
em
Commit
;
public
static
Duration
zeitSeitE
rst
em
CommitMin
;
public
static
Duration
zeitSeitE
rst
em
CommitMax
;
public
Duration
existingTime
;
public
static
Duration
existingTime
Min
;
public
static
Duration
existingTime
Max
;
public
Duration
lastEditingTime
;
public
static
Duration
lastEditingTime
Min
;
public
static
Duration
lastEditingTime
Max
;
public
Duration
fi
rstCommit
Time
;
public
static
Duration
fi
rstCommit
Time
Min
;
public
static
Duration
fi
rstCommit
Time
Max
;
ArrayList
<
LocalDateTime
>
commitTimes
;
public
Klasse
(
int
id
,
String
name
,
String
path
,
int
qloc
,
int
loc
,
int
commits
,
int
functions
,
int
variables
,
int
complexity
,
ArrayList
<
LocalDateTime
>
commitTimes
){
...
...
@@ -68,26 +68,26 @@ public class Klasse {
this
.
name
=
name
;
this
.
path
=
path
;
this
.
commitTimes
=
commitTimes
;
this
.
bearbeiteteZeit
=
(
commitTimes
.
isEmpty
())
?
null
:
Duration
.
between
(
commitTimes
.
get
(
commitTimes
.
size
()-
1
),
commitTimes
.
get
(
0
));
if
(
bearbeiteteZeit
!=
null
)
{
if
(
bearbeiteteZeitMax
==
null
)
bearbeiteteZeit
Max
=
Duration
.
ofMillis
(
Long
.
MIN_VALUE
);
if
(
bearbeiteteZeitMin
==
null
)
bearbeiteteZeit
Min
=
Duration
.
ofMillis
((
Long
.
MAX_VALUE
));
bearbeiteteZeitMax
=
(
bearbeiteteZeitMax
.
toMillis
()
>=
bearbeiteteZeit
.
toMillis
())
?
bearbeiteteZeitMax:
bearbeiteteZeit
;
bearbeiteteZeitMin
=
(
bearbeiteteZeitMin
.
toMillis
()
<=
bearbeiteteZeit
.
toMillis
())
?
bearbeiteteZeitMin:
bearbeiteteZeit
;
this
.
existingTime
=
(
commitTimes
.
isEmpty
())
?
null
:
Duration
.
between
(
commitTimes
.
get
(
commitTimes
.
size
()-
1
),
commitTimes
.
get
(
0
));
if
(
existingTime
!=
null
)
{
if
(
existingTimeMax
==
null
)
existingTime
Max
=
Duration
.
ofMillis
(
Long
.
MIN_VALUE
);
if
(
existingTimeMin
==
null
)
existingTime
Min
=
Duration
.
ofMillis
((
Long
.
MAX_VALUE
));
existingTimeMax
=
(
existingTimeMax
.
toMillis
()
>=
existingTime
.
toMillis
())
?
existingTimeMax
:
existingTime
;
existingTimeMin
=
(
existingTimeMin
.
toMillis
()
<=
existingTime
.
toMillis
())
?
existingTimeMin
:
existingTime
;
}
this
.
zeitSeitLetzterBearbeitung
=
(
commitTimes
.
isEmpty
())
?
null
:
Duration
.
between
(
commitTimes
.
get
(
0
),
LocalDateTime
.
now
());
if
(
zeitSeitLetzterBearbeitung
!=
null
)
{
if
(
zeitSeitLetzterBearbeitungMax
==
null
)
zeitSeitLetzterBearbeitung
Max
=
Duration
.
ofMillis
(
Long
.
MIN_VALUE
);
if
(
zeitSeitLetzterBearbeitungMin
==
null
)
zeitSeitLetzterBearbeitung
Min
=
Duration
.
ofMillis
(
Long
.
MAX_VALUE
);
zeitSeitLetzterBearbeitungMax
=
(
zeitSeitLetzterBearbeitungMax
.
toMillis
()
>=
zeitSeitLetzterBearbeitung
.
toMillis
())
?
zeitSeitLetzterBearbeitungMax:
zeitSeitLetzterBearbeitung
;
zeitSeitLetzterBearbeitungMin
=
(
zeitSeitLetzterBearbeitungMin
.
toMillis
()
<=
zeitSeitLetzterBearbeitung
.
toMillis
())
?
zeitSeitLetzterBearbeitungMin:
zeitSeitLetzterBearbeitung
;
this
.
lastEditingTime
=
(
commitTimes
.
isEmpty
())
?
null
:
Duration
.
between
(
commitTimes
.
get
(
0
),
LocalDateTime
.
now
());
if
(
lastEditingTime
!=
null
)
{
if
(
lastEditingTimeMax
==
null
)
lastEditingTime
Max
=
Duration
.
ofMillis
(
Long
.
MIN_VALUE
);
if
(
lastEditingTimeMin
==
null
)
lastEditingTime
Min
=
Duration
.
ofMillis
(
Long
.
MAX_VALUE
);
lastEditingTimeMax
=
(
lastEditingTimeMax
.
toMillis
()
>=
lastEditingTime
.
toMillis
())
?
lastEditingTimeMax
:
lastEditingTime
;
lastEditingTimeMin
=
(
lastEditingTimeMin
.
toMillis
()
<=
lastEditingTime
.
toMillis
())
?
lastEditingTimeMin
:
lastEditingTime
;
}
this
.
zeitSeitE
rst
em
Commit
=
(
commitTimes
.
isEmpty
())
?
null
:
Duration
.
between
(
commitTimes
.
get
(
commitTimes
.
size
()-
1
),
LocalDateTime
.
now
());
if
(
zeitSeitE
rst
em
Commit
!=
null
)
{
if
(
zeitSeitE
rst
em
CommitMax
==
null
)
zeitSeitE
rst
em
CommitMax
=
Duration
.
ofMillis
(
Long
.
MIN_VALUE
);
if
(
zeitSeitE
rst
em
CommitMin
==
null
)
zeitSeitE
rst
em
CommitMin
=
Duration
.
ofMillis
(
Long
.
MAX_VALUE
);
zeitSeitE
rst
em
CommitMax
=
(
zeitSeitE
rst
em
CommitMax
.
toMillis
()
>=
zeitSeitE
rst
em
Commit
.
toMillis
())
?
zeitSeitE
rst
em
Commit
Max:
zeitSeitE
rst
em
Commit
;
zeitSeitE
rst
em
CommitMin
=
(
zeitSeitE
rst
em
CommitMin
.
toMillis
()
<=
zeitSeitE
rst
em
Commit
.
toMillis
())
?
zeitSeitE
rst
em
Commit
Min:
zeitSeitE
rst
em
Commit
;
this
.
fi
rstCommit
Time
=
(
commitTimes
.
isEmpty
())
?
null
:
Duration
.
between
(
commitTimes
.
get
(
commitTimes
.
size
()-
1
),
LocalDateTime
.
now
());
if
(
fi
rstCommit
Time
!=
null
)
{
if
(
fi
rstCommit
Time
Max
==
null
)
fi
rstCommit
Time
Max
=
Duration
.
ofMillis
(
Long
.
MIN_VALUE
);
if
(
fi
rstCommit
Time
Min
==
null
)
fi
rstCommit
Time
Min
=
Duration
.
ofMillis
(
Long
.
MAX_VALUE
);
fi
rstCommit
Time
Max
=
(
fi
rstCommit
Time
Max
.
toMillis
()
>=
fi
rstCommit
Time
.
toMillis
())
?
fi
rstCommit
TimeMax
:
fi
rstCommit
Time
;
fi
rstCommit
Time
Min
=
(
fi
rstCommit
Time
Min
.
toMillis
()
<=
fi
rstCommit
Time
.
toMillis
())
?
fi
rstCommit
TimeMin
:
fi
rstCommit
Time
;
}
}
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/helpers/FileInputTabCompleter.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/helpers/FileInputTabCompleter.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.helpers
;
package
de._82grfl1bif.
kpi
Visualizer.helpers
;
import
de._82grfl1bif.
KPI_
Visualizer.data.JsonParser
;
import
de._82grfl1bif.
kpi
Visualizer.data.JsonParser
;
import
org.bukkit.command.Command
;
import
org.bukkit.command.CommandSender
;
import
org.bukkit.command.TabCompleter
;
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/layouts/
S
impleSquare/Quadrat.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/layouts/
s
impleSquare/Quadrat.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.layouts.
S
impleSquare
;
package
de._82grfl1bif.
kpi
Visualizer.layouts.
s
impleSquare
;
import
de._82grfl1bif.
KPI_
Visualizer.structures.Structure
;
import
de._82grfl1bif.
kpi
Visualizer.structures.Structure
;
import
java.awt.
*
;
import
java.awt.
Point
;
import
java.util.ArrayList
;
public
class
Quadrat
extends
Shape
{
private
Boolean
belegt
;
private
Boolean
filled
;
public
Structure
getStructure
()
{
return
structure
;
...
...
@@ -19,9 +19,9 @@ public class Quadrat extends Shape {
this
.
bottomLeftCorner
=
bottomLeftCorner
;
this
.
topRightCorner
=
topRightCorner
;
this
.
xEdgeLength
=
topRightCorner
.
x
-
bottomLeftCorner
.
x
;
this
.
belegt
=
false
;
this
.
filled
=
false
;
if
(
topRightCorner
.
y
-
bottomLeftCorner
.
y
<
3
||
topRightCorner
.
x
-
bottomLeftCorner
.
x
<
3
){
throw
new
IllegalArgumentException
(
"
keine
Quadrate < 3 er
laubt
"
);
throw
new
IllegalArgumentException
(
"
no
Quadrate < 3
p
er
mitted
"
);
}
}
...
...
@@ -29,14 +29,14 @@ public class Quadrat extends Shape {
this
.
xEdgeLength
=
xEdgeLength
;
this
.
bottomLeftCorner
=
bottomLeftCorner
;
this
.
topRightCorner
=
new
Point
(
bottomLeftCorner
.
x
+
xEdgeLength
,
bottomLeftCorner
.
y
+
xEdgeLength
);
this
.
belegt
=
false
;
this
.
filled
=
false
;
if
(
xEdgeLength
<
3
||
topRightCorner
.
x
-
bottomLeftCorner
.
x
<
3
){
throw
new
IllegalArgumentException
(
"
keine
Quadrate < 3 er
laubt
"
+
xEdgeLength
);
throw
new
IllegalArgumentException
(
"
no
Quadrate < 3
p
er
mitted
"
+
xEdgeLength
);
}
}
public
ArrayList
<
Quadrat
>
set
Belegt
(
Structure
structure
)
{
this
.
belegt
=
true
;
public
ArrayList
<
Quadrat
>
set
Filled
(
Structure
structure
)
{
this
.
filled
=
true
;
this
.
structure
=
structure
;
ArrayList
<
Quadrat
>
result
=
new
ArrayList
<>();
if
(
this
.
xEdgeLength
>
structure
.
getWidth
().
x
+
3
){
//if you can split rest into more quads
...
...
@@ -54,14 +54,15 @@ public class Quadrat extends Shape {
return
result
;
}
public
Boolean
get
Belegt
()
{
return
belegt
;
public
Boolean
get
Filled
()
{
return
filled
;
}
public
Point
getWidth
(){
return
new
Point
(
topRightCorner
.
x
-
bottomLeftCorner
.
x
,
topRightCorner
.
y
-
bottomLeftCorner
.
y
);
}
@Deprecated
public
void
applyCoordinates
(
Point
coordinates
){
this
.
bottomLeftCorner
=
coordinates
;
}
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/layouts/
S
impleSquare/Rectangle.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/layouts/
s
impleSquare/Rectangle.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.layouts.
S
impleSquare
;
package
de._82grfl1bif.
kpi
Visualizer.layouts.
s
impleSquare
;
import
java.awt.
*
;
import
java.awt.
Point
;
import
java.util.ArrayList
;
public
class
Rectangle
extends
Shape
{
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/layouts/
S
impleSquare/Shape.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/layouts/
s
impleSquare/Shape.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.layouts.
S
impleSquare
;
package
de._82grfl1bif.
kpi
Visualizer.layouts.
s
impleSquare
;
import
java.awt.Point
;
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/layouts/
S
impleSquare/SimpleSquareLayout.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/layouts/
s
impleSquare/SimpleSquareLayout.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.layouts.
S
impleSquare
;
package
de._82grfl1bif.
kpi
Visualizer.layouts.
s
impleSquare
;
import
de._82grfl1bif.KPI_Visualizer.layouts.SimpleSquare.Quadrat
;
import
de._82grfl1bif.KPI_Visualizer.layouts.SimpleSquare.Rectangle
;
import
de._82grfl1bif.KPI_Visualizer.structures.Structure
;
import
de._82grfl1bif.kpiVisualizer.structures.Structure
;
import
javax.management.AttributeNotFoundException
;
import
java.awt.
*
;
import
java.awt.
Point
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
...
...
@@ -51,16 +49,16 @@ public class SimpleSquareLayout {
first
=
false
;
this
.
size
=
s
.
getWidth
().
x
;
layout
.
add
(
new
Quadrat
(
new
Point
(
0
,
0
),
s
.
getWidth
().
x
));
layout
.
addAll
(
layout
.
get
(
0
).
set
Belegt
(
s
));
layout
.
addAll
(
layout
.
get
(
0
).
set
Filled
(
s
));
}
else
{
layout
.
sort
(
new
CoordinateYComparator
());
layout
.
sort
(
new
CoordinateXComparator
());
layout
.
sort
(
new
WidthComparator
());
boolean
noneFoundFlag
=
true
;
for
(
int
i
=
0
;
i
<
layout
.
size
();
i
++)
{
if
((
s
.
getWidth
().
x
<=
layout
.
get
(
i
).
getWidth
().
x
)&&(!
layout
.
get
(
i
).
get
Belegt
())&&(
noneFoundFlag
)){
if
((
s
.
getWidth
().
x
<=
layout
.
get
(
i
).
getWidth
().
x
)&&(!
layout
.
get
(
i
).
get
Filled
())&&(
noneFoundFlag
)){
noneFoundFlag
=
false
;
layout
.
addAll
(
layout
.
get
(
i
).
set
Belegt
(
s
));
layout
.
addAll
(
layout
.
get
(
i
).
set
Filled
(
s
));
}
}
if
(
noneFoundFlag
){
...
...
@@ -72,27 +70,27 @@ public class SimpleSquareLayout {
private
void
appendQuad
(
Structure
structure
){
Quadrat
q
=
new
Quadrat
(
new
Point
(
this
.
size
,
0
),
structure
.
getWidth
().
x
);
q
.
set
Belegt
(
structure
);
q
.
set
Filled
(
structure
);
this
.
size
+=
structure
.
getWidth
().
x
;
layout
.
add
(
q
);
layout
.
add
(
new
Quadrat
(
new
Point
(
q
.
bottomLeftCorner
.
y
,
q
.
bottomLeftCorner
.
x
),
new
Point
(
q
.
topRightCorner
.
y
,
q
.
topRightCorner
.
x
)));
// gespiegeltes Quadrat
layout
.
add
(
new
Quadrat
(
new
Point
(
q
.
bottomLeftCorner
.
x
,
q
.
bottomLeftCorner
.
x
),
structure
.
getWidth
().
x
));
// Oberes rechtes Quadrat
if
((
this
.
size
-(
2
*
structure
.
getWidth
().
x
))
>
0
){
//
falls Abstand zwischen den Quadraten ist
.
de
.
_82grfl1bif
.
KPI_
Visualizer
.
layouts
.
S
impleSquare
.
Rectangle
rTop
=
new
de
.
_82grfl1bif
.
KPI_
Visualizer
.
layouts
.
S
impleSquare
.
Rectangle
(
structure
.
getWidth
().
x
,(
this
.
size
-
2
*
structure
.
getWidth
().
x
),
new
Point
(
q
.
topRightCorner
.
y
,
q
.
bottomLeftCorner
.
x
));
if
((
this
.
size
-(
2
*
structure
.
getWidth
().
x
))
>
0
){
//
in case there is space between those quads
.
de
.
_82grfl1bif
.
kpi
Visualizer
.
layouts
.
s
impleSquare
.
Rectangle
rTop
=
new
de
.
_82grfl1bif
.
kpi
Visualizer
.
layouts
.
s
impleSquare
.
Rectangle
(
structure
.
getWidth
().
x
,(
this
.
size
-
2
*
structure
.
getWidth
().
x
),
new
Point
(
q
.
topRightCorner
.
y
,
q
.
bottomLeftCorner
.
x
));
layout
.
addAll
(
rTop
.
splitToQuads
(
rTop
));
de
.
_82grfl1bif
.
KPI_
Visualizer
.
layouts
.
S
impleSquare
.
Rectangle
rRight
=
new
Rectangle
((
this
.
size
-
2
*
structure
.
getWidth
().
x
),
structure
.
getWidth
().
x
,
new
Point
(
q
.
bottomLeftCorner
.
x
,
q
.
topRightCorner
.
y
));
de
.
_82grfl1bif
.
kpi
Visualizer
.
layouts
.
s
impleSquare
.
Rectangle
rRight
=
new
Rectangle
((
this
.
size
-
2
*
structure
.
getWidth
().
x
),
structure
.
getWidth
().
x
,
new
Point
(
q
.
bottomLeftCorner
.
x
,
q
.
topRightCorner
.
y
));
layout
.
addAll
(
rRight
.
splitToQuads
(
rRight
));
}
}
public
Point
getCoordinateOf
(
Structure
structure
)
throws
AttributeNotFoundException
{
for
(
Quadrat
q:
this
.
layout
)
{
if
(
q
.
get
Belegt
()){
if
(
q
.
get
Filled
()){
if
(
q
.
getStructure
().
equals
(
structure
)){
return
q
.
bottomLeftCorner
;
}
}
}
throw
new
AttributeNotFoundException
(
"
Diese S
tructure
ist nicht in der Ebene
."
);
throw
new
AttributeNotFoundException
(
"
This s
tructure
couldn't found in the hierarchy
."
);
}
}
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/layouts/
T
reeMap/Rectangle.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/layouts/
t
reeMap/Rectangle.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.layouts.
T
reeMap
;
package
de._82grfl1bif.
kpi
Visualizer.layouts.
t
reeMap
;
import
de._82grfl1bif.KPI_Visualizer.structures.Structure
;
import
java.awt.*
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.awt.Point
;
public
class
Rectangle
{
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/layouts/
T
reeMap/Row.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/layouts/
t
reeMap/Row.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.layouts.
T
reeMap
;
package
de._82grfl1bif.
kpi
Visualizer.layouts.
t
reeMap
;
import
de._82grfl1bif.
KPI_
Visualizer.structures.Structure
;
import
de._82grfl1bif.
kpi
Visualizer.structures.Structure
;
import
java.awt.
*
;
import
java.awt.
Point
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/layouts/
T
reeMap/SquarifiedTreemapLayout.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/layouts/
t
reeMap/SquarifiedTreemapLayout.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.layouts.
T
reeMap
;
package
de._82grfl1bif.
kpi
Visualizer.layouts.
t
reeMap
;
import
de._82grfl1bif.
KPI_
Visualizer.structures.Foundation
;
import
de._82grfl1bif.
KPI_
Visualizer.structures.Structure
;
import
de._82grfl1bif.
kpi
Visualizer.structures.Foundation
;
import
de._82grfl1bif.
kpi
Visualizer.structures.Structure
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
public
class
SquarifiedTreemapLayout
{
private
ArrayList
<
Row
>
rows
=
new
ArrayList
<>()
;
private
final
ArrayList
<
Row
>
rows
;
public
ArrayList
<
Row
>
getRows
()
{
return
rows
;
...
...
@@ -28,7 +25,7 @@ public class SquarifiedTreemapLayout {
ArrayList
<
Row
>
tempRows
=
new
ArrayList
<>();
rows
.
stream
().
filter
(
r
->
r
.
rectangles
.
containsValue
(
foundations
.
get
(
foundations
.
size
()-
1
))).
forEach
(
row
->
tempRows
.
addAll
(
generateSubLayout
(
foundations
.
get
(
foundations
.
size
()-
1
),
new
Rectangle
(
foundations
.
get
(
foundations
.
size
()-
1
).
getArea
(),
row
.
getWidth
(),
row
.
space
.
getOrigin
()))));
rows
.
addAll
(
tempRows
);
//l
etztes
element
bearbeitet und ein
sub
L
ayout
dafür angelegt
.
rows
.
addAll
(
tempRows
);
//l
ast
element
processed and created a
sub
l
ayout.
ArrayList
<
Foundation
>
tempFoundations
=
new
ArrayList
<>();
for
(
Structure
s
:
foundations
.
get
(
foundations
.
size
()
-
1
).
getChildren
())
{
...
...
@@ -37,7 +34,7 @@ public class SquarifiedTreemapLayout {
}
}
foundations
.
remove
(
foundations
.
size
()-
1
);
foundations
.
addAll
(
tempFoundations
);
//all
e Kinder(nur Foundations) des letzten Elements in die Liste geschrieben und das Element entfernt
.
foundations
.
addAll
(
tempFoundations
);
//all
children(just Foundations) added and removed the Foundation
.
}
while
(!
foundations
.
isEmpty
());
}
...
...
@@ -46,11 +43,11 @@ public class SquarifiedTreemapLayout {
ArrayList
<
Row
>
result
=
new
ArrayList
<>();
result
.
add
(
new
Row
(
rectangle
));
for
(
Structure
s
:
foundation
.
getChildren
())
{
if
(!
result
.
get
(
result
.
size
()
-
1
).
checkInsert
(
s
.
getArea
()))
{
//
wenn einfügen in die bestehende Reihe das Seitenverhältnis verschlechtern würd
e.
Row
tempRow
=
new
Row
(
result
.
get
(
result
.
size
()
-
1
).
getLeftover
());
//
erzeige neue Reihe mit dem Rest des alten spaces als space
.
result
.
add
(
tempRow
);
//
füge die neue Reihe ans Ende der Sammlung ein
.
if
(!
result
.
get
(
result
.
size
()
-
1
).
checkInsert
(
s
.
getArea
()))
{
//
in case an insertion would make the ratio wors
e.
Row
tempRow
=
new
Row
(
result
.
get
(
result
.
size
()
-
1
).
getLeftover
());
//
create new Row with the remaining space of the old Row
.
result
.
add
(
tempRow
);
//
put the new Row at the end of the list
.
}
result
.
get
(
result
.
size
()
-
1
).
addRectangle
(
s
.
getArea
(),
s
);
//
füge das Kin
d in
di
e l
etzte Reihe ein, die in der List
e ist.
result
.
get
(
result
.
size
()
-
1
).
addRectangle
(
s
.
getArea
(),
s
);
//
put the chil
d in
th
e l
ast Row of th
e
l
ist.
}
return
result
;
}
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/main.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/main.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer
;
package
de._82grfl1bif.
kpi
Visualizer
;
import
de._82grfl1bif.
KPI_
Visualizer.commands.
SetPrese
t
;
import
de._82grfl1bif.
KPI_
Visualizer.commands.
generateLayou
t
;
import
de._82grfl1bif.
KPI_
Visualizer.helpers.FileInputTabCompleter
;
import
de._82grfl1bif.
kpi
Visualizer.commands.
GenerateLayou
t
;
import
de._82grfl1bif.
kpi
Visualizer.commands.
SetPrese
t
;
import
de._82grfl1bif.
kpi
Visualizer.helpers.FileInputTabCompleter
;
import
org.bukkit.plugin.java.JavaPlugin
;
import
java.util.Objects
;
public
final
class
main
extends
JavaPlugin
{
@Override
public
void
onEnable
()
{
// Plugin startup logic
getCommand
(
"setPreset"
).
setExecutor
(
new
SetPreset
());
getCommand
(
"generateLayout"
).
setExecutor
(
new
g
enerateLayout
());
getCommand
(
"generateLayout"
).
setTabCompleter
(
new
FileInputTabCompleter
());
Objects
.
requireNonNull
(
getCommand
(
"setPreset"
)
)
.
setExecutor
(
new
SetPreset
());
Objects
.
requireNonNull
(
getCommand
(
"generateLayout"
)
)
.
setExecutor
(
new
G
enerateLayout
());
Objects
.
requireNonNull
(
getCommand
(
"generateLayout"
)
)
.
setTabCompleter
(
new
FileInputTabCompleter
());
}
@Override
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/structures/Builder.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/structures/Builder.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.structures
;
package
de._82grfl1bif.
kpi
Visualizer.structures
;
import
de._82grfl1bif.
KPI_
Visualizer.data.Klasse
;
import
de._82grfl1bif.
kpi
Visualizer.data.Klasse
;
import
org.bukkit.Bukkit
;
import
org.bukkit.Location
;
import
org.bukkit.Material
;
...
...
@@ -10,10 +10,10 @@ import org.bukkit.block.BlockFace;
import
org.bukkit.block.Sign
;
import
java.time.Duration
;
import
java.util.Objects
;
import
java.util.Random
;
import
java.util.logging.Level
;
import
static
de
.
_82grfl1bif
.
KPI_Visualizer
.
data
.
Klasse
.
zeitSeitLetzterBearbeitungMin
;
public
class
Builder
{
...
...
@@ -94,7 +94,7 @@ public class Builder {
setWalls
(
startLocation
,
x
,
y
,
z
,
innerMaterial
,
glassMaterial
);
setCorners
(
startLocation
,
x
,
y
,
z
,
facadeMaterial
);
setFoundation
(
startLocation
.
clone
().
add
(
0
,
y
,
0
),
x
,
z
,
facadeMaterial
);
//roof
fillQube
(
startLocation
.
clone
().
add
(
Math
.
round
(
x
/
2
),
y
+
1
,
Math
.
round
(
x
/
2
)),
1
,
antennaHeight
,
1
,
Material
.
COBBLESTONE_WALL
);
fillQube
(
startLocation
.
clone
().
add
(
Math
.
round
(
x
/
2
f
),
y
+
1
,
Math
.
round
(
x
/
2
f
)),
1
,
antennaHeight
,
1
,
Material
.
COBBLESTONE_WALL
);
Random
rm
=
new
Random
();
switch
(
rm
.
nextInt
(
3
)+
1
){
case
1
:
setCrane
(
startLocation
,
x
,
y
,
z
,
craneHeight
,
BlockFace
.
NORTH
);
...
...
@@ -115,48 +115,46 @@ public class Builder {
addDescription
(
s
.
getLocation
().
clone
().
add
(
0
,
s
.
getDepth
(),
0
),
s
);
setAllChildren
((
Foundation
)
s
);
}
else
{
//TODO must be revisited to draw rectangular Buildings
float
e
rst
er
Commit
=
((
Building
)
s
).
klasse
.
zeitSeitE
rst
em
Commit
.
toDays
();
float
scale
E
rst
er
Commit
;
if
((
float
)
Klasse
.
zeitSeitE
rst
em
CommitMin
.
toDays
()
==
(
float
)
Klasse
.
zeitSeitE
rst
em
CommitMax
.
toDays
()){
scale
E
rst
er
Commit
=
0
f
;
float
fi
rstCommit
=
((
Building
)
s
).
klasse
.
fi
rstCommit
Time
.
toDays
();
float
scale
Fi
rstCommit
;
if
((
float
)
Klasse
.
fi
rstCommit
Time
Min
.
toDays
()
==
(
float
)
Klasse
.
fi
rstCommit
Time
Max
.
toDays
()){
scale
Fi
rstCommit
=
0
f
;
}
else
{
scale
E
rst
er
Commit
=
((
e
rst
er
Commit
-
(
float
)
Klasse
.
zeitSeitE
rst
em
CommitMin
.
toDays
())
/
((
float
)
Klasse
.
zeitSeitE
rst
em
CommitMax
.
toDays
()
-
(
float
)
Klasse
.
zeitSeitE
rst
em
CommitMin
.
toDays
()));
scale
Fi
rstCommit
=
((
fi
rstCommit
-
(
float
)
Klasse
.
fi
rstCommit
Time
Min
.
toDays
())
/
((
float
)
Klasse
.
fi
rstCommit
Time
Max
.
toDays
()
-
(
float
)
Klasse
.
fi
rstCommit
Time
Min
.
toDays
()));
}
Duration
d
=
((
Building
)
s
).
klasse
.
zeitSeitLetzterBearbeitung
;
float
l
etzterBearbeitung
=
d
.
toDays
();
float
scaleL
etzterBearbeitung
;
if
((
float
)
Klasse
.
zeitSeitLetzterBearbeitung
Min
.
toDays
()
==
(
float
)
Klasse
.
zeitSeitLetzterBearbeitung
Max
.
toDays
()){
scaleL
etzterBearbeitung
=
0
f
;
Duration
d
=
((
Building
)
s
).
klasse
.
lastEditingTime
;
float
l
astCommit
=
d
.
toDays
();
float
scaleL
astCommit
;
if
((
float
)
Klasse
.
lastEditingTime
Min
.
toDays
()
==
(
float
)
Klasse
.
lastEditingTime
Max
.
toDays
()){
scaleL
astCommit
=
0
f
;
}
else
{
scaleL
etzterBearbeitung
=
((
letzterBearbeitung
-
(
float
)
Klasse
.
zeitSeitLetzterBearbeitung
Min
.
toDays
())
/
((
float
)
Klasse
.
zeitSeitLetzterBearbeitung
Max
.
toDays
()
-
(
float
)
Klasse
.
zeitSeitLetzterBearbeitung
Min
.
toDays
()));
scaleL
astCommit
=
((
lastCommit
-
(
float
)
Klasse
.
lastEditingTime
Min
.
toDays
())
/
((
float
)
Klasse
.
lastEditingTime
Max
.
toDays
()
-
(
float
)
Klasse
.
lastEditingTime
Min
.
toDays
()));
}
Material
facadeMaterial
;
if
(
scale
E
rst
er
Commit
<
0.10
){
if
(
scale
Fi
rstCommit
<
0.10
){
facadeMaterial
=
Material
.
WAXED_COPPER_BLOCK
;
}
else
if
(
scale
E
rst
er
Commit
<
0.5
){
}
else
if
(
scale
Fi
rstCommit
<
0.5
){
facadeMaterial
=
Material
.
WAXED_EXPOSED_COPPER
;
}
else
if
(
scale
E
rst
er
Commit
<
0.90
){
}
else
if
(
scale
Fi
rstCommit
<
0.90
){
facadeMaterial
=
Material
.
WAXED_WEATHERED_COPPER
;
}
else
{
facadeMaterial
=
Material
.
WAXED_OXIDIZED_COPPER
;
}
Material
facadeInnerMaterial
;
if
(
scaleL
etzterBearbeitung
<
0.10
){
if
(
scaleL
astCommit
<
0.10
){
facadeInnerMaterial
=
Material
.
WHITE_STAINED_GLASS
;
}
else
if
(
scaleL
etzterBearbeitung
<
0.5
){
}
else
if
(
scaleL
astCommit
<
0.5
){
facadeInnerMaterial
=
Material
.
GLASS
;
}
else
if
(
scaleL
etzterBearbeitung
<
0.90
){
}
else
if
(
scaleL
astCommit
<
0.90
){
facadeInnerMaterial
=
Material
.
BLUE_STAINED_GLASS
;
}
else
{
facadeInnerMaterial
=
Material
.
IRON_BARS
;
}
System
.
out
.
println
(
letzterBearbeitung
);
System
.
out
.
println
(
scaleLetzterBearbeitung
);
this
.
buildBuilding
(
s
.
getLocation
().
clone
().
add
(
1
,
s
.
getDepth
()
+
1
,
1
),
s
.
getWidth
().
x
-
2
,
((
Building
)
s
).
getHeight
()+
1
,
((
Building
)
s
).
klasse
.
commits
,
Math
.
round
(((
Building
)
s
).
klasse
.
complexity
/
100
),
Math
.
round
(((
Building
)
s
).
klasse
.
complexity
/
100
f
),
s
.
getWidth
().
x
-
2
,
facadeMaterial
,
facadeInnerMaterial
,
...
...
@@ -208,9 +206,7 @@ public class Builder {
private
void
addDescription
(
Location
startLocation
,
Structure
structure
)
{
if
(
structure
.
getClass
()
==
Foundation
.
class
)
{
//if (!((Foundation) structure).getChildren().stream().anyMatch(s -> s.getClass() == Foundation.class)) {//no foundation in Children
setFoundationSing
(
startLocation
,(
Foundation
)
structure
);
//}
}
else
{
setWallSing
(
startLocation
,
(
Building
)
structure
,
BlockFace
.
NORTH
);
setWallSing
(
startLocation
,
(
Building
)
structure
,
BlockFace
.
EAST
);
...
...
@@ -281,13 +277,13 @@ public class Builder {
default
:
Bukkit
.
getLogger
().
log
(
Level
.
SEVERE
,
"falsche Orientierung übergeben!"
);
}
sign1
.
setData
(
matSign
);
sign2
.
setData
(
matSign
);
Objects
.
requireNonNull
(
sign1
)
.
setData
(
matSign
);
Objects
.
requireNonNull
(
sign2
o
)
.
setData
(
matSign
);
sign1
.
setGlowingText
(
true
);
sign2
.
setGlowingText
(
true
);
if
(
building
.
name
.
length
()
>
60
)
{
sign1o
.
setData
(
matSign
);
sign2o
.
setData
(
matSign
);
Objects
.
requireNonNull
(
sign1o
)
.
setData
(
matSign
);
Objects
.
requireNonNull
(
sign2o
)
.
setData
(
matSign
);
sign1o
.
setGlowingText
(
true
);
sign2o
.
setGlowingText
(
true
);
setTextToSign
(
sign1
,
sign1o
,
building
.
name
);
...
...
@@ -351,7 +347,6 @@ public class Builder {
}
public
void
setLegend
(
Location
startLocation
){
org
.
bukkit
.
material
.
Sign
matSign
=
new
org
.
bukkit
.
material
.
Sign
(
Material
.
OAK_WALL_SIGN
);
server
.
getWorlds
().
get
(
0
).
getBlockAt
(
startLocation
.
clone
().
add
(
0
,
0
,-
6
)).
setType
(
Material
.
WAXED_COPPER_BLOCK
);
server
.
getWorlds
().
get
(
0
).
getBlockAt
(
startLocation
.
clone
().
add
(
0
,
1
,-
6
)).
setType
(
Material
.
WAXED_EXPOSED_COPPER
);
server
.
getWorlds
().
get
(
0
).
getBlockAt
(
startLocation
.
clone
().
add
(
0
,
2
,-
6
)).
setType
(
Material
.
WAXED_WEATHERED_COPPER
);
...
...
@@ -378,7 +373,7 @@ public class Builder {
private
void
setLegendBlock
(
Location
startLocation
,
String
s1
,
String
s2
,
String
s3
){
org
.
bukkit
.
material
.
Sign
matSign
=
new
org
.
bukkit
.
material
.
Sign
(
Material
.
OAK_WALL_SIGN
);
org
.
bukkit
.
block
.
Sign
sign
=
null
;
org
.
bukkit
.
block
.
Sign
sign
;
server
.
getWorlds
().
get
(
0
).
getBlockAt
(
startLocation
).
setType
(
Material
.
OAK_WALL_SIGN
);
sign
=
(
org
.
bukkit
.
block
.
Sign
)
server
.
getWorlds
().
get
(
0
).
getBlockAt
(
startLocation
).
getState
();
sign
.
setGlowingText
(
true
);
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/structures/Building.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/structures/Building.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.structures
;
package
de._82grfl1bif.
kpi
Visualizer.structures
;
import
de._82grfl1bif.
KPI_
Visualizer.data.Klasse
;
import
de._82grfl1bif.
kpi
Visualizer.data.Klasse
;
import
org.bukkit.Material
;
import
java.awt.Point
;
...
...
@@ -16,28 +16,19 @@ public class Building extends Structure{
this
.
height
=
height
;
this
.
material
=
material
;
if
(
this
.
width
.
x
<
5
){
throw
new
IllegalArgumentException
(
"keine Gebäude kleiner 5 wegen 2 Gehweg"
);
}
}
public
Building
(
Point
width
/*and depth for complex algorithms*/
,
int
height
,
Material
material
){
this
.
width
=
width
;
this
.
height
=
height
;
this
.
material
=
material
;
if
(
this
.
width
.
x
<
5
||
this
.
width
.
y
<
5
){
throw
new
IllegalArgumentException
(
"keine Gebäude kleiner 5 wegen 2 Gehweg"
);
throw
new
IllegalArgumentException
(
"no buildings smaller than 5"
);
}
}
public
Building
(
Material
material
,
Klasse
klasse
,
String
name
){
//Buildings are Square -> no depth
this
.
klasse
=
klasse
;
this
.
material
=
material
;
this
.
width
=
new
Point
(
(
int
)
Math
.
round
((
klasse
.
variables
+
5
)),
(
int
)
Math
.
round
((
klasse
.
variables
+
5
)));
//TODO: make this work with treemap and square
this
.
width
=
new
Point
(
Math
.
round
((
klasse
.
variables
+
5
)),
Math
.
round
((
klasse
.
variables
+
5
)));
//TODO: make this work with treemap and square
this
.
area
=
klasse
.
variables
*
25
;
this
.
name
=
name
;
this
.
height
=
klasse
.
functions
;
if
(
this
.
width
.
x
<
5
||
this
.
width
.
y
<
5
){
throw
new
IllegalArgumentException
(
"
keine Gebäude kleiner 5 wegen 2 Gehweg
"
);
throw
new
IllegalArgumentException
(
"
no buildings smaller than 5
"
);
}
}
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/structures/Foundation.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/structures/Foundation.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.structures
;
package
de._82grfl1bif.
kpi
Visualizer.structures
;
import
de._82grfl1bif.
KPI_
Visualizer.data.Klasse
;
import
de._82grfl1bif.
KPI_
Visualizer.layouts.
S
impleSquare.SimpleSquareLayout
;
import
de._82grfl1bif.
kpi
Visualizer.data.Klasse
;
import
de._82grfl1bif.
kpi
Visualizer.layouts.
s
impleSquare.SimpleSquareLayout
;
import
org.bukkit.Location
;
import
org.bukkit.Material
;
import
org.bukkit.util.Vector
;
import
javax.management.AttributeNotFoundException
;
import
java.awt.
*
;
import
java.awt.
Point
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Comparator
;
...
...
@@ -214,13 +214,12 @@ public class Foundation extends Structure {
private
boolean
baseFoundation
=
true
;
public
void
organizeFoundation
()
{
if
(
this
.
depth
==
0
&&
baseFoundation
)
{
//rootElement prepwork and recursion call
if
(
this
.
depth
==
0
&&
baseFoundation
)
{
//rootElement prep
-
work and recursion call
ArrayList
<
Foundation
>
allFoundations
=
collectAllFoundations
();
baseFoundation
=
false
;
allFoundations
.
sort
(
new
DepthComparator
());
Collections
.
reverse
(
allFoundations
);
//higher Depths first
for
(
Foundation
f
:
allFoundations
)
{
//if(!this.equals(f))
f
.
organizeFoundation
();
}
}
else
{
//normal Call and recursion
...
...
@@ -249,6 +248,7 @@ public class Foundation extends Structure {
return
fCollection
;
}
@Deprecated
public
ArrayList
<
Building
>
collectAllBuildings
()
{
//called on the base Foundation
ArrayList
<
Building
>
buildings
=
new
ArrayList
<>();
for
(
Structure
s:
children
)
{
...
...
src/main/java/de/_82grfl1bif/
KPI_
Visualizer/structures/Structure.java
→
src/main/java/de/_82grfl1bif/
kpi
Visualizer/structures/Structure.java
View file @
a1e80c61
package
de._82grfl1bif.
KPI_
Visualizer.structures
;
package
de._82grfl1bif.
kpi
Visualizer.structures
;
import
org.bukkit.Location
;
import
org.bukkit.Material
;
import
org.bukkit.util.Vector
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
java.awt.*
;
import
java.awt.Point
;
public
abstract
class
Structure
{
...
...
@@ -33,6 +31,7 @@ public abstract class Structure{
this
.
location
=
location
;
}
@Deprecated
public
void
addVector
(
Vector
vector
){
this
.
location
.
add
(
vector
);
}
...
...
Prev
1
2
Next