mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-10-28 14:30:49 +01:00
Attempt to reduce TableContainer#parseHtml complexity
This commit is contained in:
parent
0393bcef61
commit
2dcc69fc92
@ -48,25 +48,25 @@ public class InspectContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final String parseHtml() {
|
public final String parseHtml() {
|
||||||
StringBuilder html = new StringBuilder();
|
StringBuilder parsed = new StringBuilder();
|
||||||
|
|
||||||
if (!values.isEmpty()) {
|
if (!values.isEmpty()) {
|
||||||
html.append("<div class=\"body\">");
|
parsed.append("<div class=\"body\">");
|
||||||
for (Map.Entry<String, String> entry : values.entrySet()) {
|
for (Map.Entry<String, String> entry : values.entrySet()) {
|
||||||
html.append("<p>").append(entry.getKey()).append(": ").append(entry.getValue()).append("</p>");
|
parsed.append("<p>").append(entry.getKey()).append(": ").append(entry.getValue()).append("</p>");
|
||||||
}
|
}
|
||||||
html.append("</div>");
|
parsed.append("</div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Map.Entry<String, String> entry : this.html.entrySet()) {
|
for (Map.Entry<String, String> entry : this.html.entrySet()) {
|
||||||
html.append(entry.getValue());
|
parsed.append(entry.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Map.Entry<String, TableContainer> entry : tables.entrySet()) {
|
for (Map.Entry<String, TableContainer> entry : tables.entrySet()) {
|
||||||
html.append(entry.getValue().parseHtml());
|
parsed.append(entry.getValue().parseHtml());
|
||||||
}
|
}
|
||||||
|
|
||||||
return html.toString();
|
return parsed.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -40,12 +40,10 @@ public class TableContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public TableContainer(boolean players, String... header) {
|
public TableContainer(boolean players, String... header) {
|
||||||
this.header = FormatUtils.mergeArrays(
|
this(FormatUtils.mergeArrays(
|
||||||
new String[]{Icon.called("user").build() + " Player"},
|
new String[]{Icon.called("user").build() + " Player"},
|
||||||
header
|
header
|
||||||
);
|
));
|
||||||
this.formatters = new Formatter[this.header.length];
|
|
||||||
values = new ArrayList<>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void addRow(Serializable... values) {
|
public final void addRow(Serializable... values) {
|
||||||
@ -60,36 +58,40 @@ public class TableContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final String parseBody() {
|
public final String parseBody() {
|
||||||
StringBuilder body = new StringBuilder();
|
|
||||||
|
|
||||||
if (values.isEmpty()) {
|
if (values.isEmpty()) {
|
||||||
addRow("No Data");
|
addRow("No Data");
|
||||||
}
|
}
|
||||||
|
return Html.TABLE_BODY.parse(buildBody());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildBody() {
|
||||||
|
StringBuilder body = new StringBuilder();
|
||||||
for (Serializable[] row : values) {
|
for (Serializable[] row : values) {
|
||||||
|
appendRow(body, row);
|
||||||
int maxIndex = row.length - 1;
|
|
||||||
body.append("<tr>");
|
|
||||||
for (int i = 0; i < header.length; i++) {
|
|
||||||
try {
|
|
||||||
if (i > maxIndex) {
|
|
||||||
body.append("<td>-");
|
|
||||||
} else {
|
|
||||||
Serializable value = row[i];
|
|
||||||
Formatter formatter = formatters[i];
|
|
||||||
body.append("<td").append(formatter != null ? " data-order=\"" + value + "\">" : ">");
|
|
||||||
body.append(formatter != null ? formatter.apply(value) : value);
|
|
||||||
}
|
|
||||||
body.append("</td>");
|
|
||||||
} catch (ClassCastException | ArrayIndexOutOfBoundsException e) {
|
|
||||||
throw new IllegalStateException("Invalid formatter given at index " + i + ": " + e.getMessage(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
body.append("</tr>");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
return body.toString();
|
||||||
|
}
|
||||||
|
|
||||||
return Html.TABLE_BODY.parse(body.toString());
|
private void appendRow(StringBuilder body, Serializable[] row) {
|
||||||
|
int maxIndex = row.length - 1;
|
||||||
|
body.append("<tr>");
|
||||||
|
for (int i = 0; i < header.length; i++) {
|
||||||
|
try {
|
||||||
|
if (i > maxIndex) {
|
||||||
|
body.append("<td>-");
|
||||||
|
} else {
|
||||||
|
Serializable value = row[i];
|
||||||
|
Formatter formatter = formatters[i];
|
||||||
|
body.append("<td").append(formatter != null ? " data-order=\"" + value + "\">" : ">");
|
||||||
|
body.append(formatter != null ? formatter.apply(value) : value);
|
||||||
|
}
|
||||||
|
body.append("</td>");
|
||||||
|
} catch (ClassCastException | ArrayIndexOutOfBoundsException e) {
|
||||||
|
throw new IllegalStateException("Invalid formatter given at index " + i + ": " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
body.append("</tr>");
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void setColor(String color) {
|
public final void setColor(String color) {
|
||||||
@ -97,12 +99,12 @@ public class TableContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final String parseHeader() {
|
public final String parseHeader() {
|
||||||
StringBuilder header = new StringBuilder("<thead" + (color != null ? " class=\"bg-" + color + "\"" : "") + "><tr>");
|
StringBuilder parsedHeader = new StringBuilder("<thead" + (color != null ? " class=\"bg-" + color + "\"" : "") + "><tr>");
|
||||||
for (String title : this.header) {
|
for (String title : header) {
|
||||||
header.append("<th>").append(title).append("</th>");
|
parsedHeader.append("<th>").append(title).append("</th>");
|
||||||
}
|
}
|
||||||
header.append("</tr></thead>");
|
parsedHeader.append("</tr></thead>");
|
||||||
return header.toString();
|
return parsedHeader.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void setFormatter(int index, Formatter formatter) {
|
public final void setFormatter(int index, Formatter formatter) {
|
||||||
|
Loading…
Reference in New Issue
Block a user