// Path: src/main/java/com/presidentio/testdatagenerator/cons/DelimiterConst.java
// public class DelimiterConst {
// 
//     public static final String COMMA = ",";
//     public static final String TAB = "\t";
//     public static final String NEW_LINE = "\n";
//     public static final String SPACE = " ";
// 
// }
// 
// Path: src/main/java/com/presidentio/testdatagenerator/cons/PropConst.java
// public class PropConst {
// 
//     public static final String TYPE = "type";
//     public static final String VALUE = "value";
//     public static final String SIZE = "size";
//     public static final String DOMAIN = "domain";
//     public static final String EXPR = "expr";
//     public static final String FILE = "file";
//     public static final String DELIMITER = "delimiter";
//     public static final String ITEMS = "items";
//     public static final String INDEX = "index";
//     public static final String HOST = "host";
//     public static final String PORT = "port";
//     public static final String CLUSTER_NAME = "clusterName";
//     public static final String CONNECTION_URL = "connectionUrl";
//     public static final String JDBC_DRIVER = "jdbcDriver";
//     public static final String DEPTH = "depth";
//     public static final String FIELD = "field";
//     public static final String VAR = "var";
//     public static final String OP = "op";
//     public static final String FORMAT = "format";
//     public static final String HEADER = "header";
//     public static final String SUFFIX = "suffix";
//     public static final String PREFIX = "prefix";
//     public static final String PATH_PROVIDER = "pathProvider";
//     public static final String BROKER_LIST = "brokerList";
//     public static final String GENDER = "gender";
// 
// }
// 
// Path: src/main/java/com/presidentio/testdatagenerator/model/Template.java
// public class Template {
// 
//     private String id;
// 
//     private String extend;
// 
//     @JsonIgnore
//     private Template extendTemplate;
// 
//     private Integer count;
// 
//     private String name;
// 
//     private List<Field> fields;
// 
//     private List<String> childs = new ArrayList<>();
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getExtend() {
//         return extend;
//     }
// 
//     public void setExtend(String extend) {
//         this.extend = extend;
//     }
// 
//     public Template getExtendTemplate() {
//         return extendTemplate;
//     }
// 
//     public void setExtendTemplate(Template extendTemplate) {
//         this.extendTemplate = extendTemplate;
//     }
// 
//     public Integer getCount() {
//         if (count == null && extendTemplate != null) {
//             return extendTemplate.getCount();
//         }
//         return count;
//     }
// 
//     public void setCount(Integer count) {
//         this.count = count;
//     }
// 
//     public String getName() {
//         if (name == null && extendTemplate != null) {
//             return extendTemplate.getName();
//         }
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public List<Field> getFields() {
//         List<Field> result = new ArrayList<>();
//         if (extendTemplate != null && extendTemplate.getFields() != null) {
//             result.addAll(extendTemplate.getFields());
//         }
//         if (fields != null) {
//             result.addAll(fields);
//         }
//         return result;
//     }
// 
//     public void setFields(List<Field> fields) {
//         this.fields = fields;
//     }
// 
//     public List<String> getChilds() {
//         List<String> result = new ArrayList<>();
//         if (extendTemplate != null && extendTemplate.getChilds() != null) {
//             result.addAll(extendTemplate.getChilds());
//         }
//         if (childs != null) {
//             result.addAll(childs);
//         }
//         return result;
//     }
// 
//     public void setChilds(List<String> childs) {
//         this.childs = childs;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         Template template = (Template) o;
// 
//         if (name != null ? !name.equals(template.name) : template.name != null) return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return name != null ? name.hashCode() : 0;
//     }
// }


import com.presidentio.testdatagenerator.cons.DelimiterConst;
import com.presidentio.testdatagenerator.cons.PropConst;
import com.presidentio.testdatagenerator.model.Template;
import java.util.List;
import java.util.Map;
import java.util.Set;
package com.presidentio.testdatagenerator.output.formatter;



/**
 * Created by presidentio on 23.04.15.
 */
public class SvFormatter implements Formatter {

    private String defaultDelimiter = DelimiterConst.COMMA;

    private boolean printHeader;

    private Set<String> header;

    private String delimiter;

    public SvFormatter(String defaultDelimiter) {
        this.defaultDelimiter = defaultDelimiter;
    }

    public SvFormatter() {
    }

    @Override
    public void init(Map<String, String> props) {
// Path: src/main/java/com/presidentio/testdatagenerator/cons/DelimiterConst.java
// public class DelimiterConst {
// 
//     public static final String COMMA = ",";
//     public static final String TAB = "\t";
//     public static final String NEW_LINE = "\n";
//     public static final String SPACE = " ";
// 
// }
// 
// Path: src/main/java/com/presidentio/testdatagenerator/cons/PropConst.java
// public class PropConst {
// 
//     public static final String TYPE = "type";
//     public static final String VALUE = "value";
//     public static final String SIZE = "size";
//     public static final String DOMAIN = "domain";
//     public static final String EXPR = "expr";
//     public static final String FILE = "file";
//     public static final String DELIMITER = "delimiter";
//     public static final String ITEMS = "items";
//     public static final String INDEX = "index";
//     public static final String HOST = "host";
//     public static final String PORT = "port";
//     public static final String CLUSTER_NAME = "clusterName";
//     public static final String CONNECTION_URL = "connectionUrl";
//     public static final String JDBC_DRIVER = "jdbcDriver";
//     public static final String DEPTH = "depth";
//     public static final String FIELD = "field";
//     public static final String VAR = "var";
//     public static final String OP = "op";
//     public static final String FORMAT = "format";
//     public static final String HEADER = "header";
//     public static final String SUFFIX = "suffix";
//     public static final String PREFIX = "prefix";
//     public static final String PATH_PROVIDER = "pathProvider";
//     public static final String BROKER_LIST = "brokerList";
//     public static final String GENDER = "gender";
// 
// }
// 
// Path: src/main/java/com/presidentio/testdatagenerator/model/Template.java
// public class Template {
// 
//     private String id;
// 
//     private String extend;
// 
//     @JsonIgnore
//     private Template extendTemplate;
// 
//     private Integer count;
// 
//     private String name;
// 
//     private List<Field> fields;
// 
//     private List<String> childs = new ArrayList<>();
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getExtend() {
//         return extend;
//     }
// 
//     public void setExtend(String extend) {
//         this.extend = extend;
//     }
// 
//     public Template getExtendTemplate() {
//         return extendTemplate;
//     }
// 
//     public void setExtendTemplate(Template extendTemplate) {
//         this.extendTemplate = extendTemplate;
//     }
// 
//     public Integer getCount() {
//         if (count == null && extendTemplate != null) {
//             return extendTemplate.getCount();
//         }
//         return count;
//     }
// 
//     public void setCount(Integer count) {
//         this.count = count;
//     }
// 
//     public String getName() {
//         if (name == null && extendTemplate != null) {
//             return extendTemplate.getName();
//         }
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public List<Field> getFields() {
//         List<Field> result = new ArrayList<>();
//         if (extendTemplate != null && extendTemplate.getFields() != null) {
//             result.addAll(extendTemplate.getFields());
//         }
//         if (fields != null) {
//             result.addAll(fields);
//         }
//         return result;
//     }
// 
//     public void setFields(List<Field> fields) {
//         this.fields = fields;
//     }
// 
//     public List<String> getChilds() {
//         List<String> result = new ArrayList<>();
//         if (extendTemplate != null && extendTemplate.getChilds() != null) {
//             result.addAll(extendTemplate.getChilds());
//         }
//         if (childs != null) {
//             result.addAll(childs);
//         }
//         return result;
//     }
// 
//     public void setChilds(List<String> childs) {
//         this.childs = childs;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         Template template = (Template) o;
// 
//         if (name != null ? !name.equals(template.name) : template.name != null) return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return name != null ? name.hashCode() : 0;
//     }
// }


// Path: src/main/java/com/presidentio/testdatagenerator/output/formatter/SvFormatter.java
import com.presidentio.testdatagenerator.cons.DelimiterConst;
import com.presidentio.testdatagenerator.cons.PropConst;
import com.presidentio.testdatagenerator.model.Template;
import java.util.List;
import java.util.Map;
import java.util.Set;

package com.presidentio.testdatagenerator.output.formatter;



/**
 * Created by presidentio on 23.04.15.
 */
public class SvFormatter implements Formatter {

    private String defaultDelimiter = DelimiterConst.COMMA;

    private boolean printHeader;

    private Set<String> header;

    private String delimiter;

    public SvFormatter(String defaultDelimiter) {
        this.defaultDelimiter = defaultDelimiter;
    }

    public SvFormatter() {
    }

    @Override
    public void init(Map<String, String> props) {
        String headerStr = props.get(PropConst.HEADER);