// Path: flatpack/src/main/java/net/sf/flatpack/structure/ColumnMetaData.java
// public class ColumnMetaData {
// 
//     /** Column Name */
//     private String colName = null;
// 
//     /** column length */
//     private int colLength = 0;
// 
//     /** starting position */
//     private int startPosition = 0;
// 
//     /** ending position */
//     private int endPosition = 0;
// 
//     public ColumnMetaData() {
//         super();
//     }
// 
//     /**
//      * @param colName column name
//      */
//     public ColumnMetaData(final String colName) {
//         super();
//         this.colName = colName;
//     }
// 
//     /**
//      * Returns the colLength.
//      *
//      * @return int
//      */
//     public int getColLength() {
//         return colLength;
//     }
// 
//     /**
//      * Returns the colName.
//      *
//      * @return String
//      */
//     public String getColName() {
//         return colName;
//     }
// 
//     /**
//      * Returns the endPosition.
//      *
//      * @return int
//      */
//     public int getEndPosition() {
//         return endPosition;
//     }
// 
//     /**
//      * Returns the startPosition.
//      *
//      * @return int
//      */
//     public int getStartPosition() {
//         return startPosition;
//     }
// 
//     /**
//      * Sets the colLength.
//      *
//      * @param colLength
//      *            The colLength to set
//      */
//     public void setColLength(final int colLength) {
//         this.colLength = colLength;
//     }
// 
//     /**
//      * Sets the colName.
//      *
//      * @param colName
//      *            The colName to set
//      */
//     public void setColName(final String colName) {
//         this.colName = colName;
//     }
// 
//     /**
//      * Sets the endPosition.
//      *
//      * @param endPosition
//      *            The endPosition to set
//      */
//     public void setEndPosition(final int endPosition) {
//         this.endPosition = endPosition;
//     }
// 
//     /**
//      * Sets the startPosition.
//      *
//      * @param startPosition
//      *            The startPosition to set
//      */
//     public void setStartPosition(final int startPosition) {
//         this.startPosition = startPosition;
//     }
// 
//     @Override
//     public String toString() {
//         final StringBuilder buf = new StringBuilder();
//         buf.append("Name:").append(colName).append(" Length:").append(colLength).append(" Start:").append(startPosition);
//         buf.append(" End:").append(endPosition).append(System.getProperty("line.separator"));
//         return buf.toString();
//     }
// }


import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.flatpack.structure.ColumnMetaData;
/**
 *
 */
package net.sf.flatpack.util;



/**
 * Helper class to create ColumnMetaData and Mapping for the Writer Factory.
 * @author Benoit Xhenseval
 */
public final class FlatpackWriterUtil {
    private FlatpackWriterUtil() {
    }

    /**
     * Creates a Mapping for a WriterFactory for the given list of columns.
     * @param colsAsCsv comma-separated column names
     * @return a map to be used in, for instance, DelimiterWriterFactory
     */
    public static Map<String, Object> buildParametersForColumns(final String colsAsCsv) {
        final Map<String, Object> mapping = new HashMap<>();
        mapping.put(FPConstants.DETAIL_ID, buildColumns(colsAsCsv));
        return mapping;
    }

    /**
     * Create a new list of ColumnMetaData based on a CSV list of column titles.
     * @param colsAsCsv
     * @return new list
     */
// Path: flatpack/src/main/java/net/sf/flatpack/structure/ColumnMetaData.java
// public class ColumnMetaData {
// 
//     /** Column Name */
//     private String colName = null;
// 
//     /** column length */
//     private int colLength = 0;
// 
//     /** starting position */
//     private int startPosition = 0;
// 
//     /** ending position */
//     private int endPosition = 0;
// 
//     public ColumnMetaData() {
//         super();
//     }
// 
//     /**
//      * @param colName column name
//      */
//     public ColumnMetaData(final String colName) {
//         super();
//         this.colName = colName;
//     }
// 
//     /**
//      * Returns the colLength.
//      *
//      * @return int
//      */
//     public int getColLength() {
//         return colLength;
//     }
// 
//     /**
//      * Returns the colName.
//      *
//      * @return String
//      */
//     public String getColName() {
//         return colName;
//     }
// 
//     /**
//      * Returns the endPosition.
//      *
//      * @return int
//      */
//     public int getEndPosition() {
//         return endPosition;
//     }
// 
//     /**
//      * Returns the startPosition.
//      *
//      * @return int
//      */
//     public int getStartPosition() {
//         return startPosition;
//     }
// 
//     /**
//      * Sets the colLength.
//      *
//      * @param colLength
//      *            The colLength to set
//      */
//     public void setColLength(final int colLength) {
//         this.colLength = colLength;
//     }
// 
//     /**
//      * Sets the colName.
//      *
//      * @param colName
//      *            The colName to set
//      */
//     public void setColName(final String colName) {
//         this.colName = colName;
//     }
// 
//     /**
//      * Sets the endPosition.
//      *
//      * @param endPosition
//      *            The endPosition to set
//      */
//     public void setEndPosition(final int endPosition) {
//         this.endPosition = endPosition;
//     }
// 
//     /**
//      * Sets the startPosition.
//      *
//      * @param startPosition
//      *            The startPosition to set
//      */
//     public void setStartPosition(final int startPosition) {
//         this.startPosition = startPosition;
//     }
// 
//     @Override
//     public String toString() {
//         final StringBuilder buf = new StringBuilder();
//         buf.append("Name:").append(colName).append(" Length:").append(colLength).append(" Start:").append(startPosition);
//         buf.append(" End:").append(endPosition).append(System.getProperty("line.separator"));
//         return buf.toString();
//     }
// }


// Path: flatpack/src/main/java/net/sf/flatpack/util/FlatpackWriterUtil.java
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.flatpack.structure.ColumnMetaData;

/**
 *
 */
package net.sf.flatpack.util;



/**
 * Helper class to create ColumnMetaData and Mapping for the Writer Factory.
 * @author Benoit Xhenseval
 */
public final class FlatpackWriterUtil {
    private FlatpackWriterUtil() {
    }

    /**
     * Creates a Mapping for a WriterFactory for the given list of columns.
     * @param colsAsCsv comma-separated column names
     * @return a map to be used in, for instance, DelimiterWriterFactory
     */
    public static Map<String, Object> buildParametersForColumns(final String colsAsCsv) {
        final Map<String, Object> mapping = new HashMap<>();
        mapping.put(FPConstants.DETAIL_ID, buildColumns(colsAsCsv));
        return mapping;
    }

    /**
     * Create a new list of ColumnMetaData based on a CSV list of column titles.
     * @param colsAsCsv
     * @return new list
     */
    public static List<ColumnMetaData> buildColumns(final String colsAsCsv) {