Skip to content

Commit

Permalink
chore: replace krow with picnic
Browse files Browse the repository at this point in the history
  • Loading branch information
SnakeSVx committed Mar 17, 2021
1 parent 57e4124 commit 25232ee
Show file tree
Hide file tree
Showing 12 changed files with 132 additions and 221 deletions.
2 changes: 1 addition & 1 deletion OrchidCore/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ dependencies {
// core utilities
api(Libs.com_eden_common)
api(Libs.clog4j)
api(Libs.krow)
api(Libs.picnic)
api(Libs.okhttp)
api(Libs.commons_io)
api(Libs.commons_lang3)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.eden.orchid.api.generators;

import com.copperleaf.krow.KrowTable;
import com.eden.orchid.api.OrchidService;
import com.eden.orchid.api.theme.pages.OrchidPage;
import com.google.inject.ImplementedBy;
import com.jakewharton.picnic.Table;

@ImplementedBy(GeneratorServiceImpl.class)
public interface GeneratorService extends OrchidService {
Expand All @@ -24,7 +24,7 @@ default String getBuildSummary() {
return getService(GeneratorService.class).getBuildSummary();
}

default KrowTable getBuildDetail() {
default Table getBuildDetail() {
return getService(GeneratorService.class).getBuildDetail();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.eden.orchid.api.generators;

import com.caseyjbrooks.clog.Clog;
import com.copperleaf.krow.KrowTable;
import com.eden.common.json.JSONElement;
import com.eden.common.util.EdenUtils;
import com.eden.orchid.Orchid;
Expand All @@ -11,23 +10,17 @@
import com.eden.orchid.api.options.annotations.Description;
import com.eden.orchid.api.options.annotations.Option;
import com.eden.orchid.api.options.archetypes.ConfigArchetype;
import com.eden.orchid.api.theme.Theme;
import com.eden.orchid.api.theme.pages.OrchidPage;
import com.eden.orchid.utilities.OrchidUtils;
import com.jakewharton.picnic.Table;
import kotlin.Lazy;
import kotlin.LazyKt;
import kotlin.Pair;
import org.json.JSONObject;

import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

Expand Down Expand Up @@ -213,7 +206,7 @@ public String getBuildSummary() {
}

@Override
public KrowTable getBuildDetail() {
public Table getBuildDetail() {
return metrics.getDetail();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,21 @@
package com.eden.orchid.api.options;

import com.caseyjbrooks.clog.Clog;
import com.copperleaf.krow.KrowTable;
import com.eden.common.util.EdenPair;
import com.eden.common.util.EdenUtils;
import com.eden.orchid.api.OrchidContext;
import com.eden.orchid.api.options.annotations.Archetype;
import com.eden.orchid.api.options.annotations.Description;
import com.eden.orchid.api.options.annotations.Option;
import com.jakewharton.picnic.Table;
import com.jakewharton.picnic.TableSection;

import javax.inject.Inject;
import javax.inject.Singleton;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;

@Singleton
public class OptionsExtractor extends Extractor {
Expand Down Expand Up @@ -191,21 +188,24 @@ private Class<?>[] getFieldTypeParams(Field field) {
return genericClasses;
}

public KrowTable getDescriptionTable(OptionHolderDescription optionsHolderDescription) {
KrowTable table = new KrowTable();
public Table getDescriptionTable(OptionHolderDescription optionsHolderDescription) {

List<OptionsDescription> options = optionsHolderDescription.getOptionsDescriptions();

Table.Builder builder = new Table.Builder()
.setHeader(
new TableSection.Builder()
.addRow("Key", "Type", "Default Value", "Description")
.build()
);
TableSection.Builder rows = new TableSection.Builder();
options.forEach(option -> {
table.cell("Type", option.getKey(), cell -> {cell.setContent(option.getOptionType().getSimpleName()); return null;});
table.cell("Default Value", option.getKey(), cell -> {cell.setContent(option.getDefaultValue()); return null;});
table.cell("Description", option.getKey(), cell -> {cell.setContent(option.getDescription()); return null;});
});

table.column("Description", cell -> {cell.setWrapTextAt(45); return null;});
table.column("Type", cell -> {cell.setWrapTextAt(15); return null;});
table.column("Default Value", cell -> {cell.setWrapTextAt(15); return null;});

return table;
rows.addRow(
option.getKey(),
option.getOptionType().getSimpleName(),
option.getDefaultValue(),
option.getDescription()
);
});
return builder.setBody(rows.build()).build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ public void build() {
context.broadcast(Orchid.Lifecycle.GeneratingStart.fire(this));
context.startGeneration();
context.broadcast(Orchid.Lifecycle.GeneratingFinish.fire(this));
Clog.tag("\nBuild Metrics").log("\n{}", context.getBuildDetail().print(OrchidUtils.defaultTableFormatter));
Clog.tag("\nBuild Metrics").log("\n{}", context.getBuildDetail().toString());
Clog.noTag().log("Build Complete");
Clog.noTag().log(context.getBuildSummary() + "\n");
context.broadcast(Orchid.Lifecycle.BuildFinish.fire(this));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,54 +1,25 @@
package com.eden.orchid.utilities;

import com.caseyjbrooks.clog.Clog;
import com.copperleaf.krow.TableFormatter;
import com.copperleaf.krow.formatters.ascii.AsciiTableFormatter;
import com.copperleaf.krow.formatters.ascii.CrossingBorder;
import com.copperleaf.krow.formatters.ascii.NoBorder;
import com.copperleaf.krow.formatters.ascii.SingleBorder;
import com.eden.common.util.EdenUtils;
import com.eden.orchid.api.OrchidContext;
import com.eden.orchid.api.options.OrchidFlags;
import com.eden.orchid.api.theme.assets.AssetHolder;
import com.eden.orchid.api.theme.assets.CssPage;
import com.eden.orchid.api.theme.assets.JsPage;
import com.eden.orchid.api.theme.components.ComponentHolder;
import com.eden.orchid.api.theme.components.OrchidComponent;
import com.eden.orchid.api.theme.pages.OrchidPage;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;

import javax.annotation.Nonnull;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.function.BiPredicate;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Stream;

import static com.eden.orchid.utilities.OrchidExtensionsKt.from;
import static com.eden.orchid.utilities.OrchidExtensionsKt.to;

public final class OrchidUtils {

// constants
Expand All @@ -57,12 +28,6 @@ public final class OrchidUtils {
public static boolean isWindows = File.separator.equals("\\");
public static int DEFAULT_PRIORITY = 100;

public static final TableFormatter<String> defaultTableFormatter = (OrchidUtils.isWindows)
? new AsciiTableFormatter(new CrossingBorder())
: new AsciiTableFormatter(new SingleBorder());

public static final TableFormatter<String> compactTableFormatter = new AsciiTableFormatter(new NoBorder());

// Tested and documented methods
//----------------------------------------------------------------------------------------------------------------------

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.eden.orchid.api.generators

import com.caseyjbrooks.clog.Clog
import com.copperleaf.krow.HorizontalAlignment
import com.copperleaf.krow.KrowTable
import com.eden.orchid.Orchid
import com.eden.orchid.api.OrchidContext
import com.eden.orchid.api.theme.pages.OrchidPage
import java.util.ArrayList
import java.util.HashMap
import com.jakewharton.picnic.BorderStyle
import com.jakewharton.picnic.Table
import com.jakewharton.picnic.TextAlignment
import com.jakewharton.picnic.table
import java.util.*
import javax.inject.Inject

class BuildMetrics
Expand All @@ -31,75 +32,64 @@ constructor(val context: OrchidContext) {
)
}

val detail: KrowTable
val detail: Table
get() {
if (compositeMetrics == null) throw IllegalStateException("Cannot get build summary: build not complete")
titleColumnWidth = "Generator".length
pageCountColumnWidth = "Page Count".length
indexingTimeColumnWidth = "Indexing Time".length
generationTimeColumnWidth = "Generation Time".length
meanPageTimeColumnWidth = "Mean Page Generation Time".length
medianPageTimeColumnWidth = "Median Page Generation Time".length
val table = KrowTable()
table.columns(
"Page Count",
"Indexing Time",
"Generation Time",
"Mean Page Generation Time",
"Median Page Generation Time"
)
val metricsList = ArrayList(generatorMetricsMap.values)
metricsList.add(compositeMetrics)
for (metric in metricsList) {
if (metric.pageCount == 0) continue
table.cell("Page Count", metric.key!!) {
content = "" + metric.pageCount
val table = table {
style {
borderStyle = BorderStyle.Hidden
}
table.cell("Indexing Time", metric.key!!) {
content = "" + metric.indexingTime
cellStyle {
alignment = TextAlignment.MiddleRight
paddingLeft = 1
paddingRight = 1
borderLeft = true
borderRight = true
}
table.cell("Generation Time", metric.key!!) {
content = "" + metric.generatingTime
header {
cellStyle {
border = true
alignment = TextAlignment.BottomLeft
}
row {
cell("#")
cell("Page Count")
cell("Indexing Time")
cell("Generation Time")
cell("Mean Page Generation Time")
cell("Median Page Generation Time")
}
}
table.cell("Mean Page Generation Time", metric.key!!) {
content = "" + metric.meanPageTime
body {
metricsList.forEach {
row {
cell(it.key)
cell(it.pageCount)
cell(it.indexingTime)
cell(it.generatingTime)
cell(it.meanPageTime)
cell(it.medianPageTime)
}
}
}
table.cell("Median Page Generation Time", metric.key!!) {
content = "" + metric.medianPageTime
footer {
cellStyle {
border = true
}
row {
cell(compositeMetrics!!.key)
cell(compositeMetrics!!.pageCount)
cell(compositeMetrics!!.indexingTime)
cell(compositeMetrics!!.generatingTime)
cell(compositeMetrics!!.meanPageTime)
cell(compositeMetrics!!.medianPageTime)
}
}
}
table.column("Page Count") {
wrapTextAt = pageCountColumnWidth

}
table.column("Indexing Time") {
wrapTextAt = indexingTimeColumnWidth
}
table.column("Generation Time") {
wrapTextAt = generationTimeColumnWidth
}
table.column("Mean Page Generation Time") {
wrapTextAt = meanPageTimeColumnWidth
}
table.column("Median Page Generation Time") {
wrapTextAt = medianPageTimeColumnWidth
}
table.table {
horizontalAlignment = HorizontalAlignment.CENTER
}
table.row("TOTAL") {
horizontalAlignment = HorizontalAlignment.RIGHT
}
return table
}

var titleColumnWidth: Int = 0
var pageCountColumnWidth: Int = 0
var indexingTimeColumnWidth: Int = 0
var generationTimeColumnWidth: Int = 0
var meanPageTimeColumnWidth: Int = 0
var medianPageTimeColumnWidth: Int = 0

// Measure Indexing Phase
//----------------------------------------------------------------------------------------------------------------------
fun startIndexing(generators: Set<OrchidGenerator<*>>) {
Expand Down Expand Up @@ -162,9 +152,7 @@ constructor(val context: OrchidContext) {
generatorMetricsMap
.values
.stream()
.peek { compositeMetrics!!.compose(it) }
.forEach { this.setColumnWidths(it) }
setColumnWidths(compositeMetrics!!)
.forEach { compositeMetrics!!.compose(it) }
context.broadcast(Orchid.Lifecycle.ProgressEvent.fire(this, "building", maxProgress, maxProgress, 0))
}

Expand All @@ -176,15 +164,6 @@ constructor(val context: OrchidContext) {
}
}

private fun setColumnWidths(metric: GeneratorMetrics) {
titleColumnWidth = Math.max(titleColumnWidth, metric.key!!.length)
pageCountColumnWidth = Math.max(pageCountColumnWidth, ("" + metric.pageCount).length)
indexingTimeColumnWidth = Math.max(indexingTimeColumnWidth, metric.indexingTime.length)
generationTimeColumnWidth = Math.max(generationTimeColumnWidth, metric.generatingTime.length)
meanPageTimeColumnWidth = Math.max(meanPageTimeColumnWidth, metric.meanPageTime.length)
medianPageTimeColumnWidth = Math.max(medianPageTimeColumnWidth, metric.medianPageTime.length)
}

fun setGeneratorMetricsMap(generatorMetricsMap: MutableMap<String, GeneratorMetrics>) {
this.generatorMetricsMap = generatorMetricsMap
}
Expand Down
Loading

0 comments on commit 25232ee

Please sign in to comment.