pipeline {
    agent any

    stages {
        stage('Restore tlw-database-tool') {
            steps {
                copyArtifacts filter: '**/tlw-database-tool-1.0.jar', fingerprintArtifacts: true, projectName: 'build tlw-database-tool', selector: lastSuccessful(), target: '.'
            }
        }
        stage('Execute') {
            steps {
                script {
                    String jdkPath = tool name: 'OpenJDK18', type: 'jdk'
                    withCredentials([usernamePassword(credentialsId: 'aws', passwordVariable: 'AWS_SECRET_KEY', usernameVariable: 'AWS_ACCESS_KEY_ID')]) {
                        withEnv(["JAVA_HOME=${jdkPath}/jdk-18.0.1.1","AWS_SECRET_KEY=${AWS_SECRET_KEY}", "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}"]) {
                            String outputBuild = "" 
                            String output = ""
                            String errorOutput = ""
    						String outputTemp = ""
                            try {
                                outputTemp = sh returnStdout: true, script: "java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchesUpdaterFootball --season ${season} --league 48 --configFile WTL-Pokal 2>&1"
                                output += outputTemp
                            } catch (Exception e) {
                                errorOutput += outputTemp
                            }
                            try {
                                outputTemp = sh returnStdout: true, script: "java -jar build/libs/tlw-database-tool-1.0.jar --mode MatchdaysUpdater --season ${season} --league 48 --configFile WTL-Pokal 2>&1"
                                output += outputTemp
                            } catch (Exception e) {
                                errorOutput += outputTemp
                            }
                            try {
                                outputTemp = sh returnStdout: true, script: "java -jar build/libs/tlw-database-tool-1.0.jar --mode TeamsUpdater --season ${season} --league 48 --configFile WTL-Pokal 2>&1"
                                output += outputTemp
                            } catch (Exception e) {
                                errorOutput += outputTemp
                            }
                            if(output != "") {
                                output = clean(output)
                                output.split('\n').toList().unique().each {
                                    telegramSendManual(it)
                                }
                            }
                            if(errorOutput != "") {
                                errorOutput = clean(errorOutput)
                                errorOutput.split('\n').toList().unique().each {
                                    telegramSendManual(it)
                                }
                            }
                        }
                    }
                }
            }
        }
        stage('CleanUp') {
            steps {
                deleteDir()
            }
        }
    }
    post { 
        failure { 
            telegramSendManual("Build failed!\n${env.BUILD_URL}console")
        }
    }
}

private String clean(String orig) {
    orig = orig.replace("\n\n", "\n")
    while(orig.indexOf(" [main] INFO  de.jeyp91 - ") > 0) {
        int index = orig.indexOf(" [main] INFO  de.jeyp91 - ")
        String newString = orig.substring(0, index-12) + orig.substring(index+30, orig.size())
        orig = newString
    }
    while(orig.indexOf(" [main] ERROR  de.jeyp91 - ") > 0) {
        int index = orig.indexOf(" [main] ERROR  de.jeyp91 - ")
        String newString = orig.substring(0, index-12) + orig.substring(index+31, orig.size())
        orig = newString
    }
    return orig
}

def telegramSendManual(String text) {
    def encodedMessage = URLEncoder.encode(text, "UTF-8")
    println encodedMessage
    httpRequest(
        httpMode: 'GET',
        contentType: 'APPLICATION_JSON',
        responseHandle: 'NONE',
        url: "https://api.telegram.org/bot1298223079:AAEplcQpfzFG59qNYAYuSbJKtB9HMXCCE_U/sendMessage?text=$encodedMessage&chat_id=459231986&disable_web_page_preview=true",
        wrapAsMultipart: false,
        consoleLogResponseBody: true
    )
}