Skip to content

Commit

Permalink
Better log output.
Browse files Browse the repository at this point in the history
  • Loading branch information
junkdog committed Oct 16, 2014
1 parent 111d2da commit 55fc79e
Show file tree
Hide file tree
Showing 15 changed files with 390 additions and 187 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ target/
.settings/
.factorypath
.idea/
*.jar

40 changes: 12 additions & 28 deletions artemis-cli/src/main/java/com/artemis/cli/OptimizationCommand.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package com.artemis.cli;

import static java.lang.String.format;

import java.io.File;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import com.artemis.ClassUtil;
import com.artemis.Weaver;
import com.artemis.WeaverLog;
import com.artemis.cli.converter.FolderConverter;
import com.artemis.meta.ClassMetadata;
import com.beust.jcommander.Parameter;
Expand All @@ -35,34 +32,21 @@ public class OptimizationCommand {
void execute() {
long start = System.currentTimeMillis();

List<ClassMetadata> processed = Weaver.rewriteEntitySystems(ClassUtil.find(classRoot));
System.out.println(getSummary(processed, start));
if (verbose && processed.size() > 0)
System.out.println(getVerbose(processed));
WeaverLog result = new WeaverLog();
List<ClassMetadata> processed =
Weaver.rewriteEntitySystems(ClassUtil.find(classRoot), result);



if (verbose && processed.size() > 0) {
System.out.println(result.getFormattedLog());
} else {
System.out.println(getSummary(processed, start));
}
}

private static CharSequence getSummary(List<ClassMetadata> processed, long start) {
return String.format("Optimized %d entity systems in %dms.",
processed.size(), (System.currentTimeMillis() - start));
}

private static CharSequence getVerbose(List<ClassMetadata> processed) {

Collections.sort(processed, new Comparator<ClassMetadata>() {
@Override
public int compare(ClassMetadata o1, ClassMetadata o2) {
return o1.type.getClassName().compareTo(o2.type.getClassName());
}
});

StringBuffer sb = new StringBuffer();
sb.append("------------------------------------------------------------------------\n");
for (ClassMetadata meta : processed) {
sb.append(format("%-61s |%s\n", meta.type.getClassName() + "|", "optimized"));
}
sb.append("------------------------------------------------------------------------\n");

String report = sb.toString().replace(' ', '.').replace('|', ' ');
return report;
}
}
42 changes: 6 additions & 36 deletions artemis-cli/src/main/java/com/artemis/cli/WeaveCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,12 @@

import static com.artemis.meta.ClassMetadata.WeaverType.PACKED;
import static com.artemis.meta.ClassMetadata.WeaverType.POOLED;
import static java.lang.String.format;

import java.io.File;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.ExecutionException;

import com.artemis.Weaver;
import com.artemis.WeaverLog;
import com.artemis.cli.converter.FolderConverter;
import com.artemis.meta.ClassMetadata;
import com.beust.jcommander.Parameter;
Expand Down Expand Up @@ -45,19 +42,12 @@ void execute() {

Weaver.enablePooledWeaving(!disablePooledWeaving);
Weaver weaver = new Weaver(classRoot);
List<ClassMetadata> processed = weaver.execute();
for (ClassMetadata meta : processed) {
try {
meta.weaverTask.get();
} catch (InterruptedException e) {
throw new RuntimeException(e.getMessage(), e);
} catch (ExecutionException e) {
throw new RuntimeException(e.getCause().getMessage(), e.getCause());
}
WeaverLog processed = weaver.execute();
if (verbose && processed.components.size() > 0) {
System.out.println(getSummary(processed.components, start));
} else {
System.out.println(processed.getFormattedLog());
}
System.out.println(getSummary(processed, start));
if (verbose && processed.size() > 0)
System.out.println(getVerbose(processed));
}

private static CharSequence getSummary(List<ClassMetadata> processed, long start) {
Expand All @@ -70,24 +60,4 @@ private static CharSequence getSummary(List<ClassMetadata> processed, long start
return String.format("Processed %d PackedComponents and %d PooledComponents in %dms.",
packed, pooled, (System.currentTimeMillis() - start));
}

private static CharSequence getVerbose(List<ClassMetadata> processed) {

Collections.sort(processed, new Comparator<ClassMetadata>() {
@Override
public int compare(ClassMetadata o1, ClassMetadata o2) {
return o1.type.getClassName().compareTo(o2.type.getClassName());
}
});

StringBuffer sb = new StringBuffer();
sb.append("------------------------------------------------------------------------\n");
for (ClassMetadata meta : processed) {
sb.append(format("%-64s |%s\n", meta.type.getClassName() + "|", meta.annotation));
}
sb.append("------------------------------------------------------------------------\n");

String report = sb.toString().replace(' ', '.').replace('|', ' ');
return report;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import static com.artemis.meta.ClassMetadata.WeaverType.POOLED;

import com.artemis.Weaver;
import com.artemis.WeaverLog;
import com.artemis.meta.ClassMetadata;

import org.gradle.api.DefaultTask;
import org.gradle.api.logging.Logger;
import org.gradle.api.tasks.Input;
Expand Down Expand Up @@ -65,41 +67,25 @@ public void weave() {
//if (context != null && !context.hasDelta(sourceDirectory)) return;

Logger log = getLogger();
log.info("Configuration:");
log.info("\tideFriendlyPacking .............. " + ideFriendlyPacking);
log.info("\tenablePooledWeaving ............. " + enablePooledWeaving);
log.info("\toptimizeEntitySystems ........... " + optimizeEntitySystems);
log.info("\toutputDirectory ................. " + classesDir);


// log.info("");
log.info("CONFIGURATION");
log.info(WeaverLog.LINE.replaceAll("\n", ""));
log.info(WeaverLog.format("ideFriendlyPacking", ideFriendlyPacking));
log.info(WeaverLog.format("enablePooledWeaving", enablePooledWeaving));
log.info(WeaverLog.format("optimizeEntitySystems", optimizeEntitySystems));
log.info(WeaverLog.format("outputDirectory", classesDir));
log.info(WeaverLog.LINE.replaceAll("\n", ""));

Weaver.retainFieldsWhenPacking(ideFriendlyPacking);
Weaver.enablePooledWeaving(enablePooledWeaving);
Weaver.optimizeEntitySystems(optimizeEntitySystems);

Weaver weaver = new Weaver(classesDir);
List<ClassMetadata> processed = weaver.execute();

log.info(getSummary(processed, start));

for (ClassMetadata meta : processed) {
try {
meta.weaverTask.get();
} catch (InterruptedException e) {
throw new RuntimeException(e.getMessage(), e);
} catch (ExecutionException e) {
throw new RuntimeException(e.getCause().getMessage(), e.getCause());
}
}
}

private static String getSummary(List<ClassMetadata> processed, long start) {
int pooled = 0, packed = 0;
for (ClassMetadata meta : processed) {
if (PACKED == meta.annotation) packed++;
else if (POOLED == meta.annotation) pooled++;
WeaverLog processed = weaver.execute();
for (String s : processed.getFormattedLog().split("\n")) {
log.info(s);
}

return String.format("Processed %d PackedComponents and %d PooledComponents in %dms.",
packed, pooled, (System.currentTimeMillis() - start));
}

public boolean isEnableArtemisPlugin() {
Expand Down
148 changes: 112 additions & 36 deletions artemis-maven/src/main/java/com/artemis/ArtemisMaven.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
package com.artemis;

import static com.artemis.meta.ClassMetadata.WeaverType.PACKED;
import static com.artemis.meta.ClassMetadata.WeaverType.POOLED;
import static org.apache.maven.plugins.annotations.LifecyclePhase.PROCESS_CLASSES;

import java.io.File;
import java.util.List;
import java.util.concurrent.ExecutionException;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
Expand All @@ -17,8 +13,6 @@
import org.apache.maven.plugins.annotations.Parameter;
import org.sonatype.plexus.build.incremental.BuildContext;

import com.artemis.meta.ClassMetadata;

/**
* The artemis plugin performs bytecode-weaving on annotated components
* and related classes.
Expand Down Expand Up @@ -62,52 +56,134 @@ public class ArtemisMaven extends AbstractMojo {
@Component
private BuildContext context;

private Log log = getLog();

@Override
public void execute() throws MojoExecutionException, MojoFailureException {
if (!enableArtemisPlugin) {
getLog().info("Plugin disabled via 'enableArtemisPlugin' set to false.");
return;
}

long start = System.currentTimeMillis();
if (context != null && !context.hasDelta(sourceDirectory))
return;

Log log = getLog();
log.info("Configuration:");
log.info("\tideFriendlyPacking .............. " + ideFriendlyPacking);
log.info("\tenablePooledWeaving ............. " + enablePooledWeaving);
log.info("\toptimizeEntitySystems ........... " + optimizeEntitySystems);
log.info("");
log.info("CONFIGURATION");
log.info(WeaverLog.LINE.replaceAll("\n", ""));
log.info(WeaverLog.format("ideFriendlyPacking", ideFriendlyPacking));
log.info(WeaverLog.format("enablePooledWeaving", enablePooledWeaving));
log.info(WeaverLog.format("optimizeEntitySystems", optimizeEntitySystems));
log.info(WeaverLog.LINE.replaceAll("\n", ""));

Weaver.retainFieldsWhenPacking(ideFriendlyPacking);
Weaver.enablePooledWeaving(enablePooledWeaving);
Weaver.optimizeEntitySystems(optimizeEntitySystems);

Weaver weaver = new Weaver(outputDirectory);
List<ClassMetadata> processed = weaver.execute();

log.info(getSummary(processed, start));

for (ClassMetadata meta : processed) {
try {
meta.weaverTask.get();
} catch (InterruptedException e) {
throw new MojoExecutionException(e.getMessage(), e);
} catch (ExecutionException e) {
throw new MojoExecutionException(e.getCause().getMessage(), e.getCause());
}
}
}

private static CharSequence getSummary(List<ClassMetadata> processed, long start) {
int pooled = 0, packed = 0;
for (ClassMetadata meta : processed) {
if (PACKED == meta.annotation) packed++;
else if (POOLED == meta.annotation) pooled++;
WeaverLog weaverLog = weaver.execute();

// log.info("");
// log.info(format("WOVEN COMPONENTS", weaverLog.timeComponents + "ms", ' '));
// log.info(LINE);
// for (String detail : getComponentSummary(weaverLog.components).split("\n"))
// log.info(detail);
// log.info(LINE);
//
// if (weaverLog.timeComponentSystems > 0) {
// log.info("");
// log.info(format("COMPONENT ACCESS REWRITTEN", weaverLog.timeComponentSystems + "ms", ' '));
// log.info(LINE);
// for (String detail : getRewrittenAccessSummary(weaverLog.componentSystems).split("\n"))
// log.info(detail);
// log.info(LINE);
// }
//
// if (weaverLog.timeSystems > 0) {
// log.info("");
// log.info(format("OPTIMIZED ENTITY SYSTEMS", weaverLog.timeSystems + "ms", ' '));
// log.info(LINE);
// for (String detail : getSystemSummary(weaverLog.systems).split("\n"))
// log.info(detail);
// log.info(LINE);
// }
for (String s : weaverLog.getFormattedLog().split("\n")) {
log.info(s);
}

return String.format("Processed %d PackedComponents and %d PooledComponents in %dms.",
packed, pooled, (System.currentTimeMillis() - start));
}


// private static String format(String key, Object value, char delim) {
// int length = key.length() + value.toString().length() + 2; // margin
// length = Math.max(length, 3);
//
// char[] padding = new char[RELATIVE_WIDTH - length];
// Arrays.fill(padding, delim);
//
// return new StringBuilder(RELATIVE_WIDTH)
// .append(key)
// .append(" ").append(String.valueOf(padding)).append(" ")
// .append(value)
// .toString();
// }

// private static String format(String key, Object value) {
// return format(key, value, '.');
// }
//
// private static String horizontalLine() {
// char[] raw = new char[RELATIVE_WIDTH];
// Arrays.fill(raw, '-');
// return String.valueOf(raw);
// }
//
// private static String getComponentSummary(List<ClassMetadata> processed) {
// StringBuilder sb = new StringBuilder();
//
// for (ClassMetadata meta : processed) {
// if (meta.annotation == WeaverType.NONE)
// continue;
//
// String klazz = shortenClass(meta.type);
// sb.append(format(klazz, meta.annotation.name())).append("\n");
// }
//
// return sb.toString();
// }
//
// private static String shortenClass(Type type) {
// return shortenClass(type.getClassName());
// }
//
// private static String shortenClass(String className) {
// StringBuilder sb = new StringBuilder();
//
// String[] split = className.split("\\.");
// for (int i = 0; (split.length - 1) > i; i++) {
// sb.append(split[i].charAt(0)).append('.');
// }
// sb.append(split[split.length - 1]);
// return sb.toString();
// }
//
// private static String getSystemSummary(List<ClassMetadata> processed) {
// StringBuilder sb= new StringBuilder();
//
// for (ClassMetadata meta : processed) {
// String klazz = shortenClass(meta.type);
// sb.append(format(klazz, meta.sysetemOptimizable.name())).append("\n");
// }
//
// return sb.toString();
// }
//
// private static String getRewrittenAccessSummary(List<ClassMetadata> processed) {
// StringBuilder sb= new StringBuilder();
//
// for (ClassMetadata meta : processed) {
// String klazz = shortenClass(meta.type);
// sb.append(format(klazz, "SUCCESS")).append("\n");
// }
//
// return sb.toString();
// }
}
Loading

0 comments on commit 55fc79e

Please sign in to comment.