From f560fd780149d887a547cb568e8b4e46d08c01e4 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 12 Feb 2019 10:47:03 +0100 Subject: [PATCH] Iniziata implementazione nuova distribuzione collo --- .idea/caches/build_file_checksums.ser | Bin 844 -> 844 bytes app/build.gradle | 2 +- .../integrywmsnative/MainActivity.java | 4 + .../core/class_router/BaseRouter.java | 74 +++++++++++------- .../MethodParameterTypeNotMatchException.java | 6 +- .../MethodParamsCountException.java | 6 +- .../MethodPathAlreadyDeclaredException.java | 6 +- .../MethodPathNotRegisteredException.java | 6 +- .../core/context/AppContext.java | 2 + .../core/context/MainContext.java | 8 +- build_all.bat | 1 + .../dynamic_customization/DynamicContext.java | 9 +-- .../dynamic_customization/OrdiniVendita.java | 20 +++++ .../interfaces/IOrdiniVendita.java | 14 ++++ dynamic_vgalimenti/build.gradle | 1 + .../dynamic_customization/DynamicContext.java | 3 +- .../dynamic_customization/OrdineVendita.java | 20 +++-- 17 files changed, 124 insertions(+), 58 deletions(-) create mode 100644 dynamic__base/src/main/java/it/integry/wms/dynamic_customization/OrdiniVendita.java create mode 100644 dynamic__base/src/main/java/it/integry/wms/dynamic_customization/interfaces/IOrdiniVendita.java diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index cc8c2e0f99f20ea47e26168c8835880f95df5c87..fbb5478042977692cbcd2a28768ffb3022229d9f 100644 GIT binary patch delta 69 zcmV-L0J{Io2FwPKm;~V%i~*6Hnv-JzHv|x2aB!1x0T&PtV0aR*Eu`VfWb+lj-EwG? bm;v_?zAtDRp@FHXn)bE+>ufsRcq delta 64 zcmV-G0Kfmt2FwPKm;~L)H$jn{nv-n-8xU>}a~*(q40&3)&?WA@$sv<80XdVJ0re2J W1mqBsJ0cEI4mSaK&iAB~p8~B~6dFMQ diff --git a/app/build.gradle b/app/build.gradle index 37913bf0..2cdb4f68 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -83,7 +83,7 @@ android { abortOnError false } - dynamicFeatures = [":dynamic__base"] + dynamicFeatures = [":dynamic_vgalimenti"] } diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java index 1e8ed346..cf0b970e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java @@ -21,6 +21,7 @@ import android.view.View; import androidx.fragment.app.FragmentTransaction; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; +import it.integry.integrywmsnative.core.class_router.BaseRouter; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; @@ -75,6 +76,9 @@ public class MainActivity extends AppCompatActivity pop(); init(); + + + BaseRouter.invokePath(BaseRouter.PATH.DISTRIBUZIONE_COLLO_V, null, null); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseRouter.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseRouter.java index 97bc2959..900e11f2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseRouter.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseRouter.java @@ -1,7 +1,10 @@ package it.integry.integrywmsnative.core.class_router; +import android.content.Context; import android.util.Pair; +import com.orhanobut.logger.Logger; + import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; @@ -10,31 +13,42 @@ import it.integry.integrywmsnative.core.class_router.exceptions.MethodParameterT import it.integry.integrywmsnative.core.class_router.exceptions.MethodParamsCountException; import it.integry.integrywmsnative.core.class_router.exceptions.MethodPathAlreadyDeclaredException; import it.integry.integrywmsnative.core.class_router.exceptions.MethodPathNotRegisteredException; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityLogger; public class BaseRouter { + public enum PATH { + DISTRIBUZIONE_COLLO_V + } - private static List> mRoutePaths = new ArrayList<>(); + private static Context context; - private static boolean checkIfMethodExists(String path) { + private static List> mRoutePaths = new ArrayList<>(); + + public static void init(Context context) { + BaseRouter.context = context; + } + + private static boolean checkIfMethodExists(PATH path) { boolean methodAlreadyDeclared = false; for(int i = 0; i < mRoutePaths.size() && !methodAlreadyDeclared; i++) { - if(mRoutePaths.get(i).first.equalsIgnoreCase(path)) methodAlreadyDeclared = true; + if(mRoutePaths.get(i).first == path) methodAlreadyDeclared = true; } return methodAlreadyDeclared; } - private static int getMethodIndex(String path) { + private static int getMethodIndex(PATH path) { for(int i = 0; i < mRoutePaths.size(); i++) { - if(mRoutePaths.get(i).first.equalsIgnoreCase(path)) return i; + if(mRoutePaths.get(i).first == path) return i; } return -1; } - public static void registerPath(String path, MethodDTO method) throws MethodPathAlreadyDeclaredException { + public static void registerPath(PATH path, MethodDTO method) throws MethodPathAlreadyDeclaredException { if(checkIfMethodExists(path)) { throw new MethodPathAlreadyDeclaredException(path); } @@ -42,36 +56,42 @@ public class BaseRouter { mRoutePaths.add(new Pair<>(path, method)); } - public static void deregisterPath(String path) { + public static void deregisterPath(PATH path) { if(checkIfMethodExists(path)) { mRoutePaths.remove(getMethodIndex(path)); } } - public static void invokePath(String path, Object... params) throws MethodPathNotRegisteredException, MethodParamsCountException, MethodParameterTypeNotMatchException, InvocationTargetException, IllegalAccessException { - if(!checkIfMethodExists(path)) { - throw new MethodPathNotRegisteredException(path); - } + public static void invokePath(PATH path, Object... params) { + try { - MethodDTO methodDTO = mRoutePaths.get(getMethodIndex(path)).second; - - Class[] methodParameters = methodDTO.getMethod().getParameterTypes(); - - if(methodParameters.length != params.length) { - throw new MethodParamsCountException(path); - } - - for(int i = 0; i < params.length; i++) { - if(params[i].getClass() != methodParameters[i] && methodParameters[i].cast(params[i]) == null) { - throw new MethodParameterTypeNotMatchException(params[i].getClass().getCanonicalName(), path, methodParameters[i].getCanonicalName()); + if (!checkIfMethodExists(path)) { + throw new MethodPathNotRegisteredException(path); } + + MethodDTO methodDTO = mRoutePaths.get(getMethodIndex(path)).second; + + Class[] methodParameters = methodDTO.getMethod().getParameterTypes(); + + if (methodParameters.length != params.length) { + throw new MethodParamsCountException(path); + } + + for (int i = 0; i < params.length; i++) { + if (params[i] != null && params[i].getClass() != methodParameters[i] && methodParameters[i].cast(params[i]) == null) { + throw new MethodParameterTypeNotMatchException(path, params[i].getClass().getCanonicalName(), methodParameters[i].getCanonicalName()); + } + } + + final Object newInstance = methodDTO.getMethod().getDeclaringClass().newInstance(); + + methodDTO.getMethod().invoke(newInstance, params); + + } catch (Exception ex) { + UtilityExceptions.defaultException(context, ex); + Logger.e(ex, ex.getMessage()); } - - - methodDTO.getMethod().invoke(null, params); - - } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodParameterTypeNotMatchException.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodParameterTypeNotMatchException.java index 7565948e..afcdb983 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodParameterTypeNotMatchException.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodParameterTypeNotMatchException.java @@ -1,9 +1,11 @@ package it.integry.integrywmsnative.core.class_router.exceptions; +import it.integry.integrywmsnative.core.class_router.BaseRouter; + public class MethodParameterTypeNotMatchException extends Exception{ - public MethodParameterTypeNotMatchException(String path, String type1, String type2) { - super(String.format("The given parameter (%s) to %s don't match the required type %s", type1, path, type2)); + public MethodParameterTypeNotMatchException(BaseRouter.PATH path, String type1, String type2) { + super(String.format("The given parameter (%s) to %s don't match the required type %s", type1, path.toString(), type2)); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodParamsCountException.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodParamsCountException.java index 08e838f8..3af0740a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodParamsCountException.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodParamsCountException.java @@ -1,9 +1,11 @@ package it.integry.integrywmsnative.core.class_router.exceptions; +import it.integry.integrywmsnative.core.class_router.BaseRouter; + public class MethodParamsCountException extends Exception { - public MethodParamsCountException(String path) { - super(String.format("Given parameters to path %s do not match the real method declaration", path)); + public MethodParamsCountException(BaseRouter.PATH path) { + super(String.format("Given parameters to path %s do not match the real method declaration", path.toString())); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodPathAlreadyDeclaredException.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodPathAlreadyDeclaredException.java index 58c05fe8..7c77de09 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodPathAlreadyDeclaredException.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodPathAlreadyDeclaredException.java @@ -1,10 +1,12 @@ package it.integry.integrywmsnative.core.class_router.exceptions; +import it.integry.integrywmsnative.core.class_router.BaseRouter; + public class MethodPathAlreadyDeclaredException extends Exception { - public MethodPathAlreadyDeclaredException(String path) { + public MethodPathAlreadyDeclaredException(BaseRouter.PATH path) { - super(String.format("Method %s is already declared in this scope", path)); + super(String.format("Method %s is already declared in this scope", path.toString())); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodPathNotRegisteredException.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodPathNotRegisteredException.java index 01b400c7..2eaff5e4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodPathNotRegisteredException.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/exceptions/MethodPathNotRegisteredException.java @@ -1,9 +1,11 @@ package it.integry.integrywmsnative.core.class_router.exceptions; +import it.integry.integrywmsnative.core.class_router.BaseRouter; + public class MethodPathNotRegisteredException extends Exception{ - public MethodPathNotRegisteredException(String path){ - super(String.format("Method path %s isn't registered at the moment. Please call BaseRouter.registerPath before call invoke.", path)); + public MethodPathNotRegisteredException(BaseRouter.PATH path){ + super(String.format("Method path %s isn't registered at the moment. Please call BaseRouter.registerPath before call invoke.", path.toString())); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java index cbea32b2..5f104f5c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java @@ -13,6 +13,7 @@ import io.fabric.sdk.android.Fabric; import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.class_router.BaseRouter; import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.Stash; @@ -94,6 +95,7 @@ public class AppContext { GhostFish.create(mContext); try { + String initMethod = "init"; Class dynamicContextClass = Class.forName("it.integry.wms.dynamic_customization.DynamicContext"); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java index 584e79a9..c38f78af 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java @@ -23,13 +23,7 @@ public class MainContext { onContextInitialized.run(); }); - - try { - BaseRouter.invokePath("testToast", mContext); - } catch (Exception ex) { - Log.e("PIF", ex.getMessage()); - } - + BaseRouter.init(mContext); } diff --git a/build_all.bat b/build_all.bat index 2df37cb0..287269cb 100644 --- a/build_all.bat +++ b/build_all.bat @@ -1 +1,2 @@ +build_azienda.bat _base build_azienda.bat vgalimenti \ No newline at end of file diff --git a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java index d902a472..112cabf5 100644 --- a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java +++ b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java @@ -11,12 +11,11 @@ public class DynamicContext { public static void init() { Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda BASE"); -// try { - //BaseRouter.registerPath("testToast", MethodDTO.fromName(OrdineVendita.class, "testMe")); + try { + BaseRouter.registerPath(BaseRouter.PATH.DISTRIBUZIONE_COLLO_V, MethodDTO.fromName(OrdiniVendita.class, "distribuisciCollo")); + } catch (MethodPathAlreadyDeclaredException ex) { -// } catch (MethodPathAlreadyDeclaredException ex) { -// -// } + } Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda BASE COMPLETATO"); diff --git a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/OrdiniVendita.java b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/OrdiniVendita.java new file mode 100644 index 00000000..aa5c54cb --- /dev/null +++ b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/OrdiniVendita.java @@ -0,0 +1,20 @@ +package it.integry.wms.dynamic_customization; + +import android.app.ProgressDialog; +import android.util.Log; + +import java.util.List; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.utility.UtilityToast; +import it.integry.wms.dynamic_customization.interfaces.IOrdiniVendita; + +public class OrdiniVendita implements IOrdiniVendita { + + + @Override + public void distribuisciCollo(ProgressDialog progress, RunnableArgs> onComplete) { + UtilityToast.showToast("Avviato metodo in BaseFeature"); + } +} diff --git a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/interfaces/IOrdiniVendita.java b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/interfaces/IOrdiniVendita.java new file mode 100644 index 00000000..69bb2718 --- /dev/null +++ b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/interfaces/IOrdiniVendita.java @@ -0,0 +1,14 @@ +package it.integry.wms.dynamic_customization.interfaces; + +import android.app.ProgressDialog; + +import java.util.List; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbColt; + +public interface IOrdiniVendita { + + void distribuisciCollo(ProgressDialog progress, RunnableArgs> onComplete); + +} diff --git a/dynamic_vgalimenti/build.gradle b/dynamic_vgalimenti/build.gradle index 1174ac1a..01c59209 100644 --- a/dynamic_vgalimenti/build.gradle +++ b/dynamic_vgalimenti/build.gradle @@ -28,4 +28,5 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation project(':app') + implementation project(':dynamic__base') } diff --git a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java index af0199ff..a3cc0927 100644 --- a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java +++ b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java @@ -12,8 +12,7 @@ public class DynamicContext { Log.d("DynamicContext", "Caricamento personalizzazioni per VGAlimenti"); try { - BaseRouter.registerPath("testToast", MethodDTO.fromName(OrdineVendita.class, "testMe")); - BaseRouter.registerPath("distribuzioneColloV", MethodDTO.fromName(OrdineVendita.class, "distribuisciColloV")); + BaseRouter.registerPath(BaseRouter.PATH.DISTRIBUZIONE_COLLO_V, MethodDTO.fromName(OrdineVendita.class, "distribuisciCollo")); } catch (MethodPathAlreadyDeclaredException ex) { diff --git a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/OrdineVendita.java b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/OrdineVendita.java index 8ce9f79f..e68a2545 100644 --- a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/OrdineVendita.java +++ b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/OrdineVendita.java @@ -1,18 +1,22 @@ package it.integry.wms.dynamic_customization; +import android.app.ProgressDialog; import android.content.Context; import android.util.Log; import android.widget.Toast; -public class OrdineVendita { +import java.util.List; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.utility.UtilityToast; +import it.integry.wms.dynamic_customization.interfaces.IOrdiniVendita; + +public class OrdineVendita implements IOrdiniVendita { + + @Override + public void distribuisciCollo(ProgressDialog progress, RunnableArgs> onComplete) { + UtilityToast.showToast("Avviato metodo in VGAlimentiFeature"); - public static void testMe(Context context) { - Toast.makeText(context, "Questo รจ un fottuto test di questo maledetto framework", Toast.LENGTH_SHORT).show(); } - - public static void distribuisciColloV() { - Log.d("OrdineVendita", "Completata distribuzione collo"); - } - }