Package com.artemis.cli

Source Code of com.artemis.cli.WeaveCommand

package com.artemis.cli;

import static com.artemis.meta.ClassMetadata.WeaverType.PACKED;
import static com.artemis.meta.ClassMetadata.WeaverType.POOLED;

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

import com.artemis.Weaver;
import com.artemis.WeaverLog;
import com.artemis.cli.converter.FolderConverter;
import com.artemis.meta.ClassMetadata;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.Parameters;

@Parameters(
    commandDescription="Weave component types and inject profiler code into entity systems")
public class WeaveCommand {
  static final String COMMAND = "weave";
 
  @Parameter(
    names = {"-p", "--disable-pooled"},
    description = "Disable weaving of pooled components",
    required = false)
  private boolean disablePooledWeaving = false;
 
  @Parameter(
    names = {"-c", "--class-folder"},
    description = "Root class folder",
    converter = FolderConverter.class,
    required = true)
  private File classRoot;
 
  @Parameter(
    names = {"-v", "--verbose"},
    description = "Print summary of all transformed components",
    required = false)
  private boolean verbose = false;
 
  void execute() {
    long start = System.currentTimeMillis();
   
    Weaver.enablePooledWeaving(!disablePooledWeaving);
    Weaver weaver = new Weaver(classRoot);
    WeaverLog processed = weaver.execute();
    if (verbose && processed.components.size() > 0) {
      System.out.println(getSummary(processed.components, start));
    } else {
      System.out.println(processed.getFormattedLog());
    }
  }
 
  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++;
    }
   
    return String.format("Processed %d PackedComponents and %d PooledComponents in %dms.",
      packed, pooled, (System.currentTimeMillis() - start));
  }
}
TOP

Related Classes of com.artemis.cli.WeaveCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.