// Path: src/main/java/net/seninp/jmotif/sax/NumerosityReductionStrategy.java
// public enum NumerosityReductionStrategy {
// 
//   /** No reduction at all - all the words going make it into collection. */
//   NONE(0),
// 
//   /** Exact - the strategy based on the exact string match. */
//   EXACT(1),
// 
//   /** Classic - the Lin's and Keogh's MINDIST based strategy. */
//   MINDIST(2);
// 
//   private final int index;
// 
//   /**
//    * Constructor.
//    * 
//    * @param index The strategy index.
//    */
//   NumerosityReductionStrategy(int index) {
//     this.index = index;
//   }
// 
//   /**
//    * Gets the integer index of the instance.
//    * 
//    * @return integer key of the instance.
//    */
//   public int index() {
//     return index;
//   }
// 
//   /**
//    * Makes a strategy out of integer. 0 stands for NONE, 1 for EXACT, and 3 for MINDIST.
//    * 
//    * @param value the key value.
//    * @return the new Strategy instance.
//    */
//   public static NumerosityReductionStrategy fromValue(int value) {
//     switch (value) {
//     case 0:
//       return NumerosityReductionStrategy.NONE;
//     case 1:
//       return NumerosityReductionStrategy.EXACT;
//     case 2:
//       return NumerosityReductionStrategy.MINDIST;
//     default:
//       throw new RuntimeException("Unknown index:" + value);
//     }
//   }
// 
//   /**
//    * {@inheritDoc}
//    */
//   public String toString() {
//     switch (this.index) {
//     case 0:
//       return "NONE";
//     case 1:
//       return "EXACT";
//     case 2:
//       return "MINDIST";
//     default:
//       throw new RuntimeException("Unknown index:" + this.index);
//     }
//   }
// 
//   /**
//    * Parse the string value into an instance.
//    * 
//    * @param value the string value.
//    * @return new instance.
//    */
//   public static NumerosityReductionStrategy fromString(String value) {
//     if ("none".equalsIgnoreCase(value)) {
//       return NumerosityReductionStrategy.NONE;
//     }
//     else if ("exact".equalsIgnoreCase(value)) {
//       return NumerosityReductionStrategy.EXACT;
//     }
//     else if ("mindist".equalsIgnoreCase(value)) {
//       return NumerosityReductionStrategy.MINDIST;
//     }
//     else {
//       throw new RuntimeException("Unknown index:" + value);
//     }
//   }
// }


import java.util.ArrayList;
import java.util.List;
import com.beust.jcommander.Parameter;
import net.seninp.jmotif.sax.NumerosityReductionStrategy;
package net.seninp.jmotif.sax.bitmap;


/**
 * Parameters accepted by the bitmap printer and their default values.
 * 
 * @author psenin
 * 
 */
public class BitmapParameters {

  // general setup
  //
  @Parameter
  public List<String> parameters = new ArrayList<String>();

  @Parameter(names = "--verbose", description = "Level of verbosity")
  public Integer verbose = 1;

  @Parameter(names = { "--help", "-h" }, help = true)
  public boolean help;

  // dataset
  //
  @Parameter(names = { "--data_in", "-d" }, description = "The input file name")
  public static String IN_FILE;

  // output
  //
  @Parameter(names = { "--data_out", "-o" }, description = "The output file name")
  public static String OUT_FILE = "shingling_out.txt";

  @Parameter(names = { "--bitmap_out", "-b" }, description = "The bitmap output file name")
  public static String BITMAP_FILE = "my-chart.png";

  // discretization parameters
  //
  @Parameter(names = { "--window_size", "-w" }, description = "Sliding window size")
  public static int SAX_WINDOW_SIZE = 30;

  @Parameter(names = { "--word_size", "-p" }, description = "PAA word size")
  public static int SAX_PAA_SIZE = 6;

  @Parameter(names = { "--alphabet_size", "-a" }, description = "SAX alphabet size")
  public static int SAX_ALPHABET_SIZE = 4;

  @Parameter(names = "--strategy", description = "Numerosity reduction strategy")
// Path: src/main/java/net/seninp/jmotif/sax/NumerosityReductionStrategy.java
// public enum NumerosityReductionStrategy {
// 
//   /** No reduction at all - all the words going make it into collection. */
//   NONE(0),
// 
//   /** Exact - the strategy based on the exact string match. */
//   EXACT(1),
// 
//   /** Classic - the Lin's and Keogh's MINDIST based strategy. */
//   MINDIST(2);
// 
//   private final int index;
// 
//   /**
//    * Constructor.
//    * 
//    * @param index The strategy index.
//    */
//   NumerosityReductionStrategy(int index) {
//     this.index = index;
//   }
// 
//   /**
//    * Gets the integer index of the instance.
//    * 
//    * @return integer key of the instance.
//    */
//   public int index() {
//     return index;
//   }
// 
//   /**
//    * Makes a strategy out of integer. 0 stands for NONE, 1 for EXACT, and 3 for MINDIST.
//    * 
//    * @param value the key value.
//    * @return the new Strategy instance.
//    */
//   public static NumerosityReductionStrategy fromValue(int value) {
//     switch (value) {
//     case 0:
//       return NumerosityReductionStrategy.NONE;
//     case 1:
//       return NumerosityReductionStrategy.EXACT;
//     case 2:
//       return NumerosityReductionStrategy.MINDIST;
//     default:
//       throw new RuntimeException("Unknown index:" + value);
//     }
//   }
// 
//   /**
//    * {@inheritDoc}
//    */
//   public String toString() {
//     switch (this.index) {
//     case 0:
//       return "NONE";
//     case 1:
//       return "EXACT";
//     case 2:
//       return "MINDIST";
//     default:
//       throw new RuntimeException("Unknown index:" + this.index);
//     }
//   }
// 
//   /**
//    * Parse the string value into an instance.
//    * 
//    * @param value the string value.
//    * @return new instance.
//    */
//   public static NumerosityReductionStrategy fromString(String value) {
//     if ("none".equalsIgnoreCase(value)) {
//       return NumerosityReductionStrategy.NONE;
//     }
//     else if ("exact".equalsIgnoreCase(value)) {
//       return NumerosityReductionStrategy.EXACT;
//     }
//     else if ("mindist".equalsIgnoreCase(value)) {
//       return NumerosityReductionStrategy.MINDIST;
//     }
//     else {
//       throw new RuntimeException("Unknown index:" + value);
//     }
//   }
// }


// Path: src/main/java/net/seninp/jmotif/sax/bitmap/BitmapParameters.java
import java.util.ArrayList;
import java.util.List;
import com.beust.jcommander.Parameter;
import net.seninp.jmotif.sax.NumerosityReductionStrategy;

package net.seninp.jmotif.sax.bitmap;


/**
 * Parameters accepted by the bitmap printer and their default values.
 * 
 * @author psenin
 * 
 */
public class BitmapParameters {

  // general setup
  //
  @Parameter
  public List<String> parameters = new ArrayList<String>();

  @Parameter(names = "--verbose", description = "Level of verbosity")
  public Integer verbose = 1;

  @Parameter(names = { "--help", "-h" }, help = true)
  public boolean help;

  // dataset
  //
  @Parameter(names = { "--data_in", "-d" }, description = "The input file name")
  public static String IN_FILE;

  // output
  //
  @Parameter(names = { "--data_out", "-o" }, description = "The output file name")
  public static String OUT_FILE = "shingling_out.txt";

  @Parameter(names = { "--bitmap_out", "-b" }, description = "The bitmap output file name")
  public static String BITMAP_FILE = "my-chart.png";

  // discretization parameters
  //
  @Parameter(names = { "--window_size", "-w" }, description = "Sliding window size")
  public static int SAX_WINDOW_SIZE = 30;

  @Parameter(names = { "--word_size", "-p" }, description = "PAA word size")
  public static int SAX_PAA_SIZE = 6;

  @Parameter(names = { "--alphabet_size", "-a" }, description = "SAX alphabet size")
  public static int SAX_ALPHABET_SIZE = 4;

  @Parameter(names = "--strategy", description = "Numerosity reduction strategy")
  public static NumerosityReductionStrategy SAX_NR_STRATEGY = NumerosityReductionStrategy.NONE;