Compare commits

...

47 Commits

Author SHA1 Message Date
6338c1dfa6 Finish v1.46.20(508)
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-06-03 09:47:37 +02:00
657d85be86 -> v1.46.20 (508) 2025-06-03 09:47:33 +02:00
97c907c992 Aggiornato build.gradle
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 13:41:10 +02:00
caed709b64 Aggiornato build.gradle 2025-05-28 13:32:06 +02:00
13800eecab Aggiornato build.gradle
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 13:03:55 +02:00
c4357f662c Finish v1.46.19(507) 2025-05-28 12:51:09 +02:00
67a8ca94db Finish v1.46.19(507)
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 12:51:09 +02:00
0bfd56c011 -> v1.46.19 (507) 2025-05-28 12:51:05 +02:00
eead844ac1 Aggiunte definizioni di @SerializedName per evitare minify di Proguard 2025-05-28 12:50:21 +02:00
65cfadcb6e Finish v1.46.18(506)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 12:29:40 +02:00
00067ca1c9 Finish v1.46.18(506) 2025-05-28 12:29:40 +02:00
73ca8bb366 -> v1.46.18 (506) 2025-05-28 12:29:36 +02:00
3ffdb2c220 Fix AuthInterceptor 2025-05-28 12:28:13 +02:00
a5479595c7 Aggiornato build.gradle
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 12:24:24 +02:00
cff971bef8 Merge branch 'master' into develop
# Conflicts:
#	Jenkinsfile.groovy
2025-05-28 11:47:20 +02:00
a5d3388665 Aggiornato build.gradle
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 11:45:51 +02:00
22ad23c5b7 Aggiornato build.gradle
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 11:44:41 +02:00
b1d5e10db4 Aggiornato build.gradle 2025-05-28 11:32:35 +02:00
bde41d21be Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head Something is wrong with the build of this commit
2025-05-28 11:26:12 +02:00
9d8228419c Modificato Jenkinsfile
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 11:25:14 +02:00
ad7d9059c0 Modificato Jenkinsfile
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 11:19:57 +02:00
4831a7ce19 Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 11:19:10 +02:00
552b82feda Modificato Jenkinsfile
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 11:10:39 +02:00
6d62a7b10e Modificato Jenkinsfile
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 10:57:42 +02:00
667f4aea74 Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:53:55 +02:00
f80225b7bf Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:47:00 +02:00
7a02e1d8ad Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:46:25 +02:00
9cc70f4ee6 Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:42:51 +02:00
7c4c5da1d6 Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:41:32 +02:00
b960b6319a Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:40:47 +02:00
08ddaa7a11 Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:39:56 +02:00
bcce40094c Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:33:59 +02:00
960388adf8 Modificato Jenkinsfile 2025-05-28 10:31:48 +02:00
e76722018f Fix AuthInterceptor in caso di AccessToken nullo 2025-05-28 10:30:19 +02:00
fc30017021 Finish v1.46.17(505) 2025-05-28 10:18:03 +02:00
e1dd4f2140 Finish v1.46.17(505) 2025-05-28 10:18:03 +02:00
67a0679de7 -> v1.46.17 (505) 2025-05-28 10:17:58 +02:00
dfc87f7aec Fix AuthInterceptor in caso di AccessToken nullo 2025-05-28 10:17:09 +02:00
886ef6ba08 Finish v1.46.16(504) 2025-05-27 18:44:03 +02:00
fe77f90a7a Finish v1.46.16(504) 2025-05-27 18:44:02 +02:00
7a1f0d6cf6 -> v1.46.16 (504) 2025-05-27 18:43:56 +02:00
004bc3b926 Migliorie sulla gestione dell'access token nell'interceptor e durante il refresh.
Migliorie al loading popup durante il chiudi ordine in spedizione.
2025-05-27 18:43:01 +02:00
be5ebb89d7 Finish v1.46.15(503) 2025-05-27 17:48:12 +02:00
5a0b45c6f9 Finish v1.46.15(503) 2025-05-27 17:48:12 +02:00
f81d61c4c5 -> v1.46.15 (503) 2025-05-27 17:47:59 +02:00
634bc502ce Fix null dovuto alla getBancaliGiaRegistratiSynchronized 2025-05-27 17:45:24 +02:00
d13dbf1ad3 Finish v1.46.14(502) 2025-05-26 09:44:01 +02:00
24 changed files with 531 additions and 248 deletions

70
Jenkinsfile.groovy Normal file
View File

@@ -0,0 +1,70 @@
pipeline {
agent {
label 'master'
}
options {
buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '10'))
disableConcurrentBuilds()
}
environment {
// ANDROID_HOME = "/usr/local/android/sdk" // Cambia in base al tuo sistema
JAVA_HOME = tool 'JDK 17.0.6 x64' // Nome dello strumento configurato in Jenkins
PATH = "${env.JAVA_HOME}/bin:${env.PATH}"
}
stages {
stage('Preparing') {
when {
expression {
return env.GIT_BRANCH == "master-beta"
}
}
steps {
bat "./gradlew addBetaSuffix"
}
}
stage('Build') {
steps {
bat "./gradlew assembleRelease"
archiveArtifacts artifacts: 'app/build/outputs/apk/release/', onlyIfSuccessful: true
}
}
stage('Publish') {
steps {
azureUpload allowAnonymousAccess: true, fileShareName: 'storage-ci', filesPath: 'app/build/outputs/apk/release/*', removePrefixPath: 'app/build/outputs/apk/release/', storageCredentialId: '83a86793-c1d6-4776-b20f-1ff652a57fee', storageType: 'filestorage', uploadArtifactsOnlyIfSuccessful: true, verbose: true, virtualPath: 'wms'
}
}
}
post {
success {
script {
bat "curl -k https://devservices.studioml.it/ems-api/updateWMSApp"
bat "curl -k https://services.studioml.it/ems-api/updateWMSApp"
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "master-beta") {
office365ConnectorSend adaptiveCards: true, color: '#008000', message: 'WMS è stato compilato con successo', status: 'SUCCESS', webhookUrl: 'https://prod-89.westeurope.logic.azure.com:443/workflows/260580715a9d4447a54dea861a865536/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=EMqPHohvE5o5IGj_gir_iQaAufR4r8ZJxlFx52jklSE'
}
}
}
unstable {
script {
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "master-beta") {
office365ConnectorSend adaptiveCards: true, color: '#FFDE21', message: 'WMS è INSTABILE', status: 'UNSTABLE', webhookUrl: 'https://prod-89.westeurope.logic.azure.com:443/workflows/260580715a9d4447a54dea861a865536/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=EMqPHohvE5o5IGj_gir_iQaAufR4r8ZJxlFx52jklSE'
}
}
}
failure {
script {
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "master-beta") {
office365ConnectorSend adaptiveCards: true, color: '#FF2C2C', message: 'Errore di compilazione su WMS', status: 'FAILURE', webhookUrl: 'https://prod-89.westeurope.logic.azure.com:443/workflows/260580715a9d4447a54dea861a865536/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=EMqPHohvE5o5IGj_gir_iQaAufR4r8ZJxlFx52jklSE'
}
}
}
}
}

View File

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 502 def appVersionCode = 508
def appVersionName = '1.46.14' def appVersionName = '1.46.20'
signingConfigs { signingConfigs {
release { release {
@@ -51,9 +51,13 @@ android {
buildTypes { buildTypes {
debug { debug {
ext.enableCrashlytics = false ext.enableCrashlytics = false
// minifyEnabled true // Abilita la minimizzazione del codice
// shrinkResources true // Rimuove risorse non utilizzate
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }
release { release {
minifyEnabled false // minifyEnabled true // Abilita la minimizzazione del codice
// shrinkResources true // Rimuove risorse non utilizzate
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release signingConfig signingConfigs.release
} }
@@ -74,12 +78,7 @@ android {
} }
build {
doLast {
delete "$projectDir/build/outputs/apk/release/version.txt"
file("$projectDir/build/outputs/apk/release/version.txt").text = appVersionCode + '\n' + appVersionName + '\n' + 'forced=true'
}
}
gradle.projectsEvaluated { gradle.projectsEvaluated {
tasks.withType(JavaCompile.class).tap { tasks.withType(JavaCompile.class).tap {
@@ -107,12 +106,11 @@ dependencies {
// exclude group: 'com.android.support', module: 'support-annotations' // exclude group: 'com.android.support', module: 'support-annotations'
// }) // })
// implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" // implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'com.github.lupaulus:logger:2.3.2' implementation 'com.github.lupaulus:logger:2.3.2'
//Firebase
// Import the Firebase BoM // Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:33.13.0') implementation platform('com.google.firebase:firebase-bom:33.14.0')
implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-crashlytics' implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-perf' implementation 'com.google.firebase:firebase-perf'
@@ -123,14 +121,12 @@ dependencies {
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
implementation 'com.google.guava:guava:33.4.0-android'
implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.12.0' implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.constraintlayout:constraintlayout:2.2.1' implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.4.0' implementation 'androidx.recyclerview:recyclerview:1.4.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation('androidx.preference:preference-ktx:1.2.1') { implementation('androidx.preference:preference-ktx:1.2.1') {
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel' exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel'
@@ -138,19 +134,18 @@ dependencies {
} }
implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0" implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0"
implementation 'com.squareup.okhttp3:okhttp:4.10.0' implementation 'com.squareup.retrofit2:retrofit:2.11.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.11.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.annimon:stream:1.2.2' implementation 'com.annimon:stream:1.2.2'
implementation 'androidx.lifecycle:lifecycle-runtime:2.9.0' implementation 'androidx.lifecycle:lifecycle-runtime:2.9.0'
implementation 'org.apache.commons:commons-text:1.9' implementation 'org.apache.commons:commons-text:1.9'
//MVVM //MVVM
def dagger2_version = '2.55' def dagger2_version = '2.55'
api "com.google.dagger:dagger:$dagger2_version" implementation "com.google.dagger:dagger:$dagger2_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version"
api "com.google.dagger:dagger-android:$dagger2_version" implementation "com.google.dagger:dagger-android:$dagger2_version"
api "com.google.dagger:dagger-android-support:$dagger2_version" implementation "com.google.dagger:dagger-android-support:$dagger2_version"
// if you use the support libraries // if you use the support libraries
annotationProcessor "com.google.dagger:dagger-android-processor:$dagger2_version" annotationProcessor "com.google.dagger:dagger-android-processor:$dagger2_version"
@@ -191,10 +186,7 @@ dependencies {
implementation 'io.reactivex.rxjava2:rxjava:2.1.12' implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'org.greenrobot:eventbus:3.3.1'
//Barcode generator //Barcode generator
// implementation group: 'com.google.zxing', name: 'core', version: '3.5.3'
implementation 'com.journeyapps:zxing-android-embedded:4.3.0' implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
} }
@@ -203,3 +195,49 @@ repositories {
google() google()
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
} }
tasks.register('addBetaSuffix') {
doLast {
def gradleFile = file("build.gradle")
def content = gradleFile.text
// Modifica appVersionName
content = content.replaceAll(/appVersionName\s*=\s*'(.*?)'/) { fullMatch, version ->
"appVersionName = '${version}-beta'"
}
// Modifica outputFileName
content = content.replaceAll(/output\.outputFileName\s*=\s*"(.*?)"/) { fullMatch, filename ->
"output.outputFileName = \"${filename.replace('.apk', '-beta.apk')}\""
}
// Modifica direttamente la riga che crea 'version.txt' in 'version-beta.txt'
content = content.replace(
"def versionFile = new File(outputDir, \"version.txt\")",
"def versionFile = new File(outputDir, \"version-beta.txt\")"
)
// Sovrascrivi il file
gradleFile.write(content)
}
}
tasks.register('createVersionFile') {
doLast {
def outputDir = file("${projectDir}/build/outputs/apk/release")
def versionFile = new File(outputDir, "version.txt")
// Cancella il file se esiste
if (versionFile.exists()) {
versionFile.delete()
}
// Crea il file con i contenuti desiderati
versionFile.write("${android.defaultConfig.versionCode}\n${android.defaultConfig.versionName}\nforced=true")
}
}
afterEvaluate {
tasks.assembleRelease.finalizedBy createVersionFile
}

View File

@@ -23,3 +23,20 @@
# If you keep the line number information, uncomment this to # If you keep the line number information, uncomment this to
# hide the original source file name. # hide the original source file name.
#-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile
# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# Prevent R8 from leaving Data object members always null
-keepclasseswithmembers class * {
<init>(...);
@com.google.gson.annotations.SerializedName <fields>;
}
# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
-keep class it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse { *; }
-keep class * extends it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse { *; }

View File

@@ -313,8 +313,8 @@ public class MainApplicationModule {
@Provides @Provides
@Singleton @Singleton
DocumentRESTConsumer provideDocumentiRESTConsumer(RESTBuilder restBuilder) { DocumentRESTConsumer provideDocumentiRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
return new DocumentRESTConsumer(restBuilder); return new DocumentRESTConsumer(restBuilder, executorService);
} }
@Provides @Provides

View File

@@ -28,7 +28,7 @@ public class AuthInterceptor implements Interceptor {
public Response intercept(@NonNull Chain chain) throws IOException { public Response intercept(@NonNull Chain chain) throws IOException {
var originalRequest = chain.request(); var originalRequest = chain.request();
if (SettingsManager.i().getUserSession() != null) { if (SettingsManager.i().getUserSession() != null && SettingsManager.i().getUserSession().getAccessToken() != null) {
var accessToken = SettingsManager.i().getUserSession().getAccessToken(); var accessToken = SettingsManager.i().getUserSession().getAccessToken();
var accessTokenExpiryDate = SettingsManager.i().getUserSession().getAccessTokenExpiryDate(); var accessTokenExpiryDate = SettingsManager.i().getUserSession().getAccessTokenExpiryDate();
@@ -55,21 +55,22 @@ public class AuthInterceptor implements Interceptor {
.protocol(Protocol.HTTP_1_1) .protocol(Protocol.HTTP_1_1)
.code(401) .code(401)
.message("Unauthorized") .message("Unauthorized")
.body(ResponseBody.create(new byte[0], null)) .body(ResponseBody.create(okhttp3.MediaType.get("application/json"), new byte[0]))
.build(); .build();
} catch (Exception e) { } catch (Exception e) {
return chain.proceed(originalRequest); return chain.proceed(originalRequest);
} }
//Retrieve the new access token after refresh
accessToken = SettingsManager.i().getUserSession().getAccessToken();
}
// Add the access token to the request header // Add the access token to the request header
var authorizedRequest = originalRequest.newBuilder() var authorizedRequest = originalRequest.newBuilder()
.header("Authorization", "Bearer " + SettingsManager.i().getUserSession().getAccessToken()) .header("Authorization", "Bearer " + accessToken)
.build(); .build();
return chain.proceed(authorizedRequest); return chain.proceed(authorizedRequest);
} else
return chain.proceed(originalRequest);
} else } else
return chain.proceed(originalRequest); return chain.proceed(originalRequest);
} }

View File

@@ -3,7 +3,6 @@ package it.integry.integrywmsnative.core.rest;
import java.io.IOException; import java.io.IOException;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import okhttp3.Interceptor; import okhttp3.Interceptor;
import okhttp3.Request; import okhttp3.Request;
@@ -31,18 +30,6 @@ public class HttpInterceptor implements Interceptor {
.addHeader("Accept", "*/*") .addHeader("Accept", "*/*")
.addHeader("x-app-token", APP_TOKEN); .addHeader("x-app-token", APP_TOKEN);
String accessToken = null;
//Nel caso in cui il token è scaduto e devo richiamare la refresh non bisogna passare il vecchio token
if(SettingsManager.i().getUserSession().getAccessTokenExpiryDate() != null &&
UtilityDate.getNowTime().isBefore(SettingsManager.i().getUserSession().getAccessTokenExpiryDate().minusSeconds(20))) {
accessToken = SettingsManager.i().getUserSession().getAccessToken();
}
if(accessToken != null)
builder.header("Authorization", "Bearer " + accessToken);
var newRequest = builder var newRequest = builder
.url(url) .url(url)
.build(); .build();

View File

@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -20,9 +21,11 @@ import retrofit2.Response;
public class DocumentRESTConsumer extends _BaseRESTConsumer { public class DocumentRESTConsumer extends _BaseRESTConsumer {
private final RESTBuilder restBuilder; private final RESTBuilder restBuilder;
private final ExecutorService executorService;
public DocumentRESTConsumer(RESTBuilder restBuilder) { public DocumentRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
this.restBuilder = restBuilder; this.restBuilder = restBuilder;
this.executorService = executorService;
} }
public void createDocsFromColli(List<LoadColliDTO> listColli, RunnableArgs<List<DtbDoct>> onComplete, RunnableArgs<Exception> onFailed) { public void createDocsFromColli(List<LoadColliDTO> listColli, RunnableArgs<List<DtbDoct>> onComplete, RunnableArgs<Exception> onFailed) {
@@ -40,19 +43,22 @@ public class DocumentRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void createDocFromColli(LoadColliDTO loadColliDTO, RunnableArgs<DtbDoct> onComplete, RunnableArgs<Exception> onFailed) { public DtbDoct makeSynchronousCreateDocFromColliRequest(LoadColliDTO loadColliDTO) throws Exception {
DocumentiRESTConsumerService documentiRESTConsumerService = restBuilder.getService(DocumentiRESTConsumerService.class); DocumentiRESTConsumerService documentiRESTConsumerService = restBuilder.getService(DocumentiRESTConsumerService.class);
documentiRESTConsumerService var response = documentiRESTConsumerService
.createDocFromColli(loadColliDTO) .createDocFromColli(loadColliDTO)
.enqueue(new ManagedErrorCallback<>() { .execute();
@Override
public void onResponse(Call<ServiceRESTResponse<DtbDoct>> call, Response<ServiceRESTResponse<DtbDoct>> response) {
analyzeAnswer(response, "createDocFromColli", onComplete, onFailed);
}
@Override return analyzeAnswer(response, "createDocFromColli");
public void onFailure(Call<ServiceRESTResponse<DtbDoct>> call, @NonNull final Exception e) { }
onFailed.run(e);
public void makeCreateDocFromColliRequest(LoadColliDTO loadColliDTO, RunnableArgs<DtbDoct> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
var result = makeSynchronousCreateDocFromColliRequest(loadColliDTO);
if (onComplete != null) onComplete.run(result);
} catch (Exception ex) {
if (onFailed != null) onFailed.run(ex);
} }
}); });
} }

View File

@@ -187,7 +187,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
var response = service.retrieveAlreadyRegisteredUDS(request) var response = service.retrieveAlreadyRegisteredUDS(request)
.execute(); .execute();
var data = analyzeAnswer(response, "getBancaliGiaRegistrati"); var data = analyzeAnswer(response, "getBancaliGiaRegistrati");
return data == null ? new ArrayList<>() : data.getUdsList(); return data == null || data.getUdsList() == null ? new ArrayList<>() : data.getUdsList();
} }
public void getBancaliGiaRegistrati(List<OrdineInevasoDTO> orders, int segno, RunnableArgs<List<AlreadyRegisteredUlDTO>> onComplete, RunnableArgs<Exception> onFailed) { public void getBancaliGiaRegistrati(List<OrdineInevasoDTO> orders, int segno, RunnableArgs<List<AlreadyRegisteredUlDTO>> onComplete, RunnableArgs<Exception> onFailed) {

View File

@@ -125,13 +125,12 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
public void printClosedOrdersSynchronized(PrintOrderCloseDTO dto, String codMdep) throws Exception { public void printClosedOrdersSynchronized(PrintOrderCloseDTO dto, String codMdep) throws Exception {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
return; // return;
} }
PrinterRESTConsumerService printerService = restBuilder.getService(PrinterRESTConsumerService.class, 240); PrinterRESTConsumerService printerService = restBuilder.getService(PrinterRESTConsumerService.class, 240);
Call<ServiceRESTResponse<Object>> callable = printerService.printClosedOrders(codMdep, dto);
var response = callable.execute(); var response = printerService.printClosedOrders(codMdep, dto).execute();
analyzeAnswer(response, "printCollo"); analyzeAnswer(response, "printCollo");
} }

View File

@@ -1,11 +1,17 @@
package it.integry.integrywmsnative.gest.login.dto; package it.integry.integrywmsnative.gest.login.dto;
import com.google.gson.annotations.SerializedName;
import java.util.HashMap; import java.util.HashMap;
public class AuthTokenClaimsDTO { public class AuthTokenClaimsDTO {
@SerializedName("deviceId")
private long deviceId; private long deviceId;
@SerializedName("userDTO")
private User userDTO; private User userDTO;
@SerializedName("profilesData")
private HashMap<String, AuthTokenProfileDetails> profilesData; private HashMap<String, AuthTokenProfileDetails> profilesData;
public long getDeviceId() { public long getDeviceId() {
@@ -36,11 +42,22 @@ public class AuthTokenClaimsDTO {
} }
public class User { public class User {
@SerializedName("username")
private String username; private String username;
@SerializedName("email")
private Object email; private Object email;
@SerializedName("fullname")
private String fullname; private String fullname;
@SerializedName("keyGroup")
private int keyGroup; private int keyGroup;
@SerializedName("attivo")
private boolean attivo; private boolean attivo;
@SerializedName("type")
private String type; private String type;
public String getUsername() { public String getUsername() {
@@ -99,6 +116,7 @@ public class AuthTokenClaimsDTO {
} }
public static class AuthTokenProfileDetails { public static class AuthTokenProfileDetails {
@SerializedName("defaultDepo")
private AuthTokenDepoDetails defaultDepo; private AuthTokenDepoDetails defaultDepo;
public AuthTokenDepoDetails getDefaultDepo() { public AuthTokenDepoDetails getDefaultDepo() {
@@ -112,8 +130,13 @@ public class AuthTokenClaimsDTO {
} }
public static class AuthTokenDepoDetails { public static class AuthTokenDepoDetails {
@SerializedName("codMdep")
private String codMdep; private String codMdep;
@SerializedName("descrizione")
private String descrizione; private String descrizione;
@SerializedName("codJfas")
private String codJfas; private String codJfas;
public String getCodMdep() { public String getCodMdep() {

View File

@@ -1,12 +1,20 @@
package it.integry.integrywmsnative.gest.login.dto; package it.integry.integrywmsnative.gest.login.dto;
import com.google.gson.annotations.SerializedName;
import java.time.LocalDateTime; import java.time.LocalDateTime;
public class AuthenticationJwtResponseDTO { public class AuthenticationJwtResponseDTO {
@SerializedName("accessToken")
private String accessToken; private String accessToken;
@SerializedName("refreshToken")
private String refreshToken; private String refreshToken;
@SerializedName("expiryDate")
private LocalDateTime expiryDate; private LocalDateTime expiryDate;
@SerializedName("expireIn")
private long expireIn; private long expireIn;

View File

@@ -1,11 +1,22 @@
package it.integry.integrywmsnative.gest.login.dto; package it.integry.integrywmsnative.gest.login.dto;
import com.google.gson.annotations.SerializedName;
public class LoginAziendaDTO { public class LoginAziendaDTO {
@SerializedName("profileDb")
private String profileDb; private String profileDb;
@SerializedName("endpointRestApi")
private String endpointRestApi; private String endpointRestApi;
@SerializedName("phpApi")
private String phpApi; private String phpApi;
@SerializedName("repoPhoto")
private String repoPhoto; private String repoPhoto;
@SerializedName("endpointPvm")
private String endpointPvm; private String endpointPvm;
public String getProfileDb() { public String getProfileDb() {

View File

@@ -1,9 +1,16 @@
package it.integry.integrywmsnative.gest.login.dto; package it.integry.integrywmsnative.gest.login.dto;
import com.google.gson.annotations.SerializedName;
public class LoginRequestDTO { public class LoginRequestDTO {
@SerializedName("username")
private String username; private String username;
@SerializedName("password")
private String password; private String password;
@SerializedName("deviceId")
private String deviceId; private String deviceId;
public String getUsername() { public String getUsername() {

View File

@@ -1,12 +1,15 @@
package it.integry.integrywmsnative.gest.login.dto; package it.integry.integrywmsnative.gest.login.dto;
import com.google.gson.annotations.SerializedName;
import java.util.List; import java.util.List;
public class LoginResponseDTO { public class LoginResponseDTO {
@SerializedName("fullName")
private String fullName; private String fullName;
private List<String> availableProfiles;
@SerializedName("availableProfiles")
private List<String> availableProfiles;
public String getFullName() { public String getFullName() {
return fullName; return fullName;

View File

@@ -1,6 +1,9 @@
package it.integry.integrywmsnative.gest.login.dto; package it.integry.integrywmsnative.gest.login.dto;
import com.google.gson.annotations.SerializedName;
public class RefreshRequestDTO { public class RefreshRequestDTO {
@SerializedName("refreshToken")
private String refreshToken; private String refreshToken;
public String getRefreshToken() { public String getRefreshToken() {

View File

@@ -806,7 +806,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
Stream.of(this.mOrdiniInevasiMutableData) this.mOrdiniInevasiMutableData.stream()
.forEach(x -> x.getSelectedObservable().set(false)); .forEach(x -> x.getSelectedObservable().set(false));
} }

View File

@@ -854,12 +854,10 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
public void closeOrder() { public void closeOrder() {
this.fabPopupMenu.dismiss(); this.fabPopupMenu.dismiss();
this.onLoadingStarted();
executorService.execute(() -> { executorService.execute(() -> {
try { try {
this.mViewmodel.closeOrder(); this.mViewmodel.closeOrder();
this.onLoadingEnded();
} catch (Exception e) { } catch (Exception e) {
onError(e); onError(e);
} }

View File

@@ -341,14 +341,6 @@ public class SpedizioneViewModel {
return mIsOrdTrasf; return mIsOrdTrasf;
} }
private void onOrderClosedPrintingDone() {
if (this.mIsOrdTrasf && !UtilityString.isNullOrEmpty(SettingsManager.iDB().getCodDtipOrdTrasfV())) {
this.sendCreateDocsRequest();
} else {
this.sendOnOrderClosed();
}
}
private void sendOnLoadingStarted() { private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted(); if (this.mListener != null) mListener.onLoadingStarted();
@@ -2123,15 +2115,21 @@ public class SpedizioneViewModel {
} }
public void closeOrder() { public void closeOrder() {
this.sendOnLoadingStarted();
if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()) { if (SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()) {
var printRequestResult = this.sendOnCloseOrderPrintRequest(); var printRequestResult = this.sendOnCloseOrderPrintRequest();
this.onCloseOrderPrintRequest(printRequestResult); this.onCloseOrderPrintRequested(printRequestResult);
} }
this.onOrderClosedPrintingDone(); if (this.mIsOrdTrasf && !UtilityString.isNullOrEmpty(SettingsManager.iDB().getCodDtipOrdTrasfV())) {
this.sendCreateDocsRequest();
}
this.sendOnOrderClosed();
} }
private void onCloseOrderPrintRequest(PrintOrderCloseDTO dto) { private void onCloseOrderPrintRequested(PrintOrderCloseDTO dto) {
if (!dto.isFlagPrintPackingList() && !dto.isFlagPrintSSCC()) { if (!dto.isFlagPrintPackingList() && !dto.isFlagPrintSSCC()) {
return; return;
} }
@@ -2147,13 +2145,22 @@ public class SpedizioneViewModel {
dto.setPrintList(closedOrders); dto.setPrintList(closedOrders);
CountDownLatch latch = new CountDownLatch(1);
try { try {
printClosedOrders(dto); printClosedOrders(dto);
latch.countDown();
} catch (Exception e) { } catch (Exception e) {
this.sendLUPrintError(e, () -> { this.sendLUPrintError(e, () -> {
latch.countDown();
}); });
} }
try {
latch.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
} }
private void printClosedOrders(PrintOrderCloseDTO dto) throws Exception { private void printClosedOrders(PrintOrderCloseDTO dto) throws Exception {
@@ -2196,6 +2203,7 @@ public class SpedizioneViewModel {
void createDocs() { void createDocs() {
executorService.execute(() -> { executorService.execute(() -> {
this.sendOnLoadingStarted();
List<MtbColt> registeredUds = null; List<MtbColt> registeredUds = null;
try { try {
@@ -2232,7 +2240,12 @@ public class SpedizioneViewModel {
loadCollidto.setSaveDoc(true); loadCollidto.setSaveDoc(true);
loadCollidto.setGestione("L"); loadCollidto.setGestione("L");
this.mDocumentRESTConsumer.createDocFromColli(loadCollidto, doc -> this.sendOnOrderClosed(), this::sendError); try {
this.mDocumentRESTConsumer.makeSynchronousCreateDocFromColliRequest(loadCollidto);
} catch (Exception e) {
sendError(e);
}
this.sendOnLoadingEnded();
}); });
} }

View File

@@ -2,14 +2,23 @@ package it.integry.integrywmsnative.view.dialogs.tracciamento_imballi;
import androidx.databinding.ObservableBoolean; import androidx.databinding.ObservableBoolean;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import com.google.gson.annotations.SerializedName;
public class TracciamentoImballoDTO { public class TracciamentoImballoDTO {
@SerializedName("codTcol")
private final ObservableField<String> codTcol = new ObservableField<>(); private final ObservableField<String> codTcol = new ObservableField<>();
@SerializedName("descrizione")
private final ObservableField<String> descrizione = new ObservableField<>(); private final ObservableField<String> descrizione = new ObservableField<>();
@SerializedName("codMart")
private final ObservableField<String> codMart = new ObservableField<>(); private final ObservableField<String> codMart = new ObservableField<>();
@SerializedName("qta")
private final ObservableField<Integer> qta = new ObservableField<>(); private final ObservableField<Integer> qta = new ObservableField<>();
@SerializedName("editable")
private final ObservableBoolean editable = new ObservableBoolean(true); private final ObservableBoolean editable = new ObservableBoolean(true);
public ObservableField<String> getCodTcol() { public ObservableField<String> getCodTcol() {

View File

@@ -14,18 +14,11 @@
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
# android.enableSeparateAnnotationProcessing = true
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# Enable Gradle Daemon # Enable Gradle Daemon
org.gradle.daemon=true org.gradle.daemon=false
# Enable Configure on demand # Enable Configure on demand
org.gradle.configureondemand=true org.gradle.configureondemand=true
# Enable parallel builds # Enable parallel builds
@@ -33,5 +26,5 @@ org.gradle.parallel=true
# Enable simple gradle caching # Enable simple gradle caching
org.gradle.caching=true org.gradle.caching=true
# Increase memory allotted to JVM # Increase memory allotted to JVM
org.gradle.jvmargs=-Xmx4096m -XX:+UseParallelGC org.gradle.jvmargs=-Xmx2048m -XX:+UseParallelGC -XX:MaxMetaspaceSize=512m
org.gradle.unsafe.configuration-cache=true org.gradle.unsafe.configuration-cache=ON

Binary file not shown.

View File

@@ -1,6 +1,7 @@
#Mon Feb 13 15:14:43 CET 2023
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

320
gradlew vendored
View File

@@ -1,74 +1,130 @@
#!/usr/bin/env bash #!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://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.
#
# SPDX-License-Identifier: Apache-2.0
#
############################################################################## ##############################################################################
## #
## Gradle start up script for UN*X # Gradle start up script for POSIX generated by Gradle.
## #
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
############################################################################## ##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. # Attempt to set APP_HOME
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle" # Resolve links: $0 may be a link
APP_BASE_NAME=`basename "$0"` app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum" MAX_FD=maximum
warn ( ) { warn () {
echo "$*" echo "$*"
} } >&2
die ( ) { die () {
echo echo
echo "$*" echo "$*"
echo echo
exit 1 exit 1
} } >&2
# OS specific support (must be 'true' or 'false'). # OS specific support (must be 'true' or 'false').
cygwin=false cygwin=false
msys=false msys=false
darwin=false darwin=false
case "`uname`" in nonstop=false
CYGWIN* ) case "$( uname )" in #(
cygwin=true CYGWIN* ) cygwin=true ;; #(
;; Darwin* ) darwin=true ;; #(
Darwin* ) MSYS* | MINGW* ) msys=true ;; #(
darwin=true NONSTOP* ) nonstop=true ;;
;;
MINGW* )
msys=true
;;
esac esac
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM. # Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables # IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java" JAVACMD=$JAVA_HOME/jre/sh/java
else else
JAVACMD="$JAVA_HOME/bin/java" JAVACMD=$JAVA_HOME/bin/java
fi fi
if [ ! -x "$JAVACMD" ] ; then if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -77,84 +133,120 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi fi
else else
JAVACMD="java" JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi
fi fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
MAX_FD_LIMIT=`ulimit -H -n` case $MAX_FD in #(
if [ $? -eq 0 ] ; then max*)
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
MAX_FD="$MAX_FD_LIMIT" # shellcheck disable=SC2039,SC3045
fi MAX_FD=$( ulimit -H -n ) ||
ulimit -n $MAX_FD warn "Could not query maximum file descriptor limit"
if [ $? -ne 0 ] ; then esac
warn "Could not set maximum file descriptor limit: $MAX_FD" case $MAX_FD in #(
fi '' | soft) :;; #(
else *)
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
fi # shellcheck disable=SC2039,SC3045
fi ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac esac
fi fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules # Collect all arguments for the java command, stacking in reverse order:
function splitJvmOpts() { # * args from the command line
JVM_OPTS=("$@") # * the main class name
} # * -classpath
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS # * -D...appname settings
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" # * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" # For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

88
gradlew.bat vendored
View File

@@ -1,4 +1,22 @@
@if "%DEBUG%" == "" @echo off @rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ########################################################################## @rem ##########################################################################
@rem @rem
@rem Gradle startup script for Windows @rem Gradle startup script for Windows
@@ -8,26 +26,30 @@
@rem Set local scope for the variables with windows NT shell @rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0 set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=. if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0 set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME% set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe @rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init if %ERRORLEVEL% equ 0 goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail
@@ -35,54 +57,36 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=% set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init if exist "%JAVA_EXE%" goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute :execute
@rem Setup the command line @rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle @rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end :end
@rem End local scope for the variables with windows NT shell @rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd if %ERRORLEVEL% equ 0 goto mainEnd
:fail :fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code! rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 set EXIT_CODE=%ERRORLEVEL%
exit /b 1 if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd :mainEnd
if "%OS%"=="Windows_NT" endlocal if "%OS%"=="Windows_NT" endlocal