// Path: src/com/nvinayshetty/DTOnator/NameConventionCommands/ClassName/ClassNameOptions.java
// public enum ClassNameOptions {
//     Bean("Bean"),Entity("Entity"),None("None");
// 
//     private String bean;
// 
//     ClassNameOptions(String bean) {
//         this.bean = bean;
//     }
// 
//     public String getName() {
//         return bean;
//     }
// }
// 
// Path: src/com/nvinayshetty/DTOnator/Utility/DtoHelper.java
// public class DtoHelper {
//     public static String firstetterToUpperCase(String key) {
//         return key.substring(0, 1).toUpperCase() + key.substring(1);
//     }
// 
//     public static String firstetterToLowerCase(String key) {
//         return key.substring(0, 1).toLowerCase() + key.substring(1);
//     }
// }


import javax.annotation.Nonnull;
import com.nvinayshetty.DTOnator.FieldCreator.AccessModifier;
import com.nvinayshetty.DTOnator.NameConventionCommands.ClassName.ClassNameOptions;
import com.nvinayshetty.DTOnator.Utility.DtoHelper;
    }

    @Override
    public String getFieldRepresentationFor(AccessModifier accessModifier, String key) {
        return accessModifier.getModifier() + "java.util.List<" + getSimpleNameForList(dataType) + ">" + suffix(key);
    }

    @Override
    protected String getKotlinValFieldRepresentationFor(AccessModifier accessModifier, String key) {
        String clasNameOption = (classNameOptions != null) ? classNameOptions.getName() : "";
        return "val " + key +clasNameOption+ " :List<" + getSimpleNameForList(dataType) + ">";
    }

    @Override
    protected String getKotlinVarFieldRepresentationFor(AccessModifier accessModifier, String key) {
        String clasNameOption = (classNameOptions != null) ? classNameOptions.getName() : "";
        return "var " + key+clasNameOption + " :List<" + getSimpleNameForList(dataType) + ">";
    }

    public void setClassNameOption(ClassNameOptions classNameOptions) {
        this.classNameOptions = classNameOptions;
    }

    private String getSimpleNameForList(String simpleName) {

        String name = "";
        for (int i = 1; i < depth; i++) {
            name += "java.util.List<";
        }
        String clasNameOption = (classNameOptions != null) ? classNameOptions.getName() : "";
// Path: src/com/nvinayshetty/DTOnator/NameConventionCommands/ClassName/ClassNameOptions.java
// public enum ClassNameOptions {
//     Bean("Bean"),Entity("Entity"),None("None");
// 
//     private String bean;
// 
//     ClassNameOptions(String bean) {
//         this.bean = bean;
//     }
// 
//     public String getName() {
//         return bean;
//     }
// }
// 
// Path: src/com/nvinayshetty/DTOnator/Utility/DtoHelper.java
// public class DtoHelper {
//     public static String firstetterToUpperCase(String key) {
//         return key.substring(0, 1).toUpperCase() + key.substring(1);
//     }
// 
//     public static String firstetterToLowerCase(String key) {
//         return key.substring(0, 1).toLowerCase() + key.substring(1);
//     }
// }


// Path: src/com/nvinayshetty/DTOnator/FieldRepresentors/JsonArrayRepresentor.java
import javax.annotation.Nonnull;
import com.nvinayshetty.DTOnator.FieldCreator.AccessModifier;
import com.nvinayshetty.DTOnator.NameConventionCommands.ClassName.ClassNameOptions;
import com.nvinayshetty.DTOnator.Utility.DtoHelper;

    }

    @Override
    public String getFieldRepresentationFor(AccessModifier accessModifier, String key) {
        return accessModifier.getModifier() + "java.util.List<" + getSimpleNameForList(dataType) + ">" + suffix(key);
    }

    @Override
    protected String getKotlinValFieldRepresentationFor(AccessModifier accessModifier, String key) {
        String clasNameOption = (classNameOptions != null) ? classNameOptions.getName() : "";
        return "val " + key +clasNameOption+ " :List<" + getSimpleNameForList(dataType) + ">";
    }

    @Override
    protected String getKotlinVarFieldRepresentationFor(AccessModifier accessModifier, String key) {
        String clasNameOption = (classNameOptions != null) ? classNameOptions.getName() : "";
        return "var " + key+clasNameOption + " :List<" + getSimpleNameForList(dataType) + ">";
    }

    public void setClassNameOption(ClassNameOptions classNameOptions) {
        this.classNameOptions = classNameOptions;
    }

    private String getSimpleNameForList(String simpleName) {

        String name = "";
        for (int i = 1; i < depth; i++) {
            name += "java.util.List<";
        }
        String clasNameOption = (classNameOptions != null) ? classNameOptions.getName() : "";
        name += DtoHelper.firstetterToUpperCase(simpleName)+clasNameOption;