/*
 * Copyright (c) 2020. Red Hat, Inc. and/or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.kie.memorycompiler;


import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * Most common denominator for JavaCompiler settings.
 * 
 * If you need more specific settings you have to provide
 * the native compiler configurations to the compilers.
 * Writing of a custom factory is suggested. 
 */
public class JavaCompilerSettings {

    private String targetVersion = "1.8";
    private String sourceVersion = "1.8";
    private String sourceEncoding = "UTF-8";
    private boolean warnings = false;
    private boolean deprecations = false;
    private boolean debug = false;
    private List<String> classpaths;

    private final List<String> options;

    /** @deprecated */
    private boolean verbose = false;

    public JavaCompilerSettings() {
        options = new ArrayList<>();
    }
    
    public JavaCompilerSettings( final JavaCompilerSettings pSettings ) {
        targetVersion = pSettings.targetVersion;
        sourceVersion = pSettings.sourceVersion;
        sourceEncoding = pSettings.sourceEncoding;
        warnings = pSettings.warnings;
        deprecations = pSettings.deprecations;
        debug = pSettings.debug;
        options = pSettings.options;
    }
    
    public void setTargetVersion( final String pTargetVersion ) {
        targetVersion = pTargetVersion;
    }

    public String getTargetVersion() {
        return targetVersion;
    }


    public void setSourceVersion( final String pSourceVersion ) {
        sourceVersion = pSourceVersion;
    }

    public String getSourceVersion() {
        return sourceVersion;
    }


    public void setSourceEncoding( final String pSourceEncoding ) {
        sourceEncoding = pSourceEncoding;
    }

    public String getSourceEncoding() {
        return sourceEncoding;
    }


    public void setWarnings( final boolean pWarnings ) {
        warnings = pWarnings;
    }

    public boolean isWarnings() {
        return warnings;
    }


    public void setDeprecations( final boolean pDeprecations )  {
        deprecations = pDeprecations;
    }

    public boolean isDeprecations() {
        return deprecations;
    }

    public void setDebug( final boolean pDebug )  {
        debug = pDebug;
    }

    public boolean isDebug() {
        return debug;
    }

    /** @deprecated */
    public void setVerbose( final boolean pVerbose ) {
        verbose = pVerbose;
    }

    /** @deprecated */
    public boolean isVerbose() {
        return verbose;
    }

    public List<File> getClasspathLocations() {
        if ( classpaths == null) {
            return null;
        }
        return classpaths.stream().map( File::new ).collect( Collectors.toList() );
    }

    public void addClasspath(String classpath) {
        if ( classpaths == null) {
            classpaths = new ArrayList<>();
        }
        classpaths.add(classpath);
    }

    public List<String> getOptions() {
        return options;
    }

    public void addOption(String option) {
        options.add(option);
    }
}

@@ -684,44 +684,8 @@
 ist;
-%0Aimport java.util.stream.Collectors;
 %0A%0A/*
@@ -1206,22 +1206,20 @@
 te List%3C
-String
+File
 %3E classp
@@ -3126,152 +3126,25 @@
     
-if ( classpaths == null) %7B%0A            return null;%0A        %7D%0A        return classpaths.stream().map( File::new ).collect( Collectors.toList() )
+return classpaths
 ;%0A  
@@ -3177,22 +3177,20 @@
 asspath(
-String
+File
  classpa

fix java compiler classpath on Windows (#3601)