From 02d22ed99f17c93e67ac8a5ffe785294492ad849 Mon Sep 17 00:00:00 2001 From: Giuseppe Scorrano Date: Wed, 28 Nov 2018 20:12:01 +0100 Subject: [PATCH] Prima implementazione di RettificaGiacenze --- .../RettificaGiacenzeFragment.java | 18 +++- .../core/RettificaGiacenzeHelper.java | 48 ++++++++++ .../adapter/AutoCompleteFornitoreAdapter.java | 95 +++++++++++++++++++ .../rettifica_giacenze/dto/FornitoreDTO.java | 30 ++++++ .../viewmodel/RettificaGiacenzeViewModel.java | 25 +++++ .../layout/fragment_rettifica_giacenze.xml | 44 +++++++++ ...giacenze_autocomplete_fornitore_layout.xml | 32 +++++++ app/src/main/res/values-it/strings.xml | 3 + app/src/main/res/values/strings.xml | 4 + 9 files changed, 298 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/dto/FornitoreDTO.java create mode 100644 app/src/main/res/layout/rettifica_giacenze_autocomplete_fornitore_layout.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index fcdb6b74..72d71c58 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -13,14 +13,18 @@ import android.view.ViewGroup; import butterknife.ButterKnife; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.databinding.FragmentRettificaGiacenzeBinding; import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeHelper; +import it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel.RettificaGiacenzeViewModel; public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment { private RettificaGiacenzeHelper mHelper; private FragmentRettificaGiacenzeBinding mBinding = null; + private RettificaGiacenzeViewModel mRettificaGiacenzeViewModel = null; + public RettificaGiacenzeFragment() { // Required empty public constructor } @@ -34,7 +38,6 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - } @Override @@ -42,14 +45,27 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme Bundle savedInstanceState) { mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_rettifica_giacenze, container, false); + mRettificaGiacenzeViewModel = new RettificaGiacenzeViewModel(); + mRettificaGiacenzeViewModel.init(getActivity(), mBinding); mBinding.setView(this); + mBinding.setViewmodel(mRettificaGiacenzeViewModel); ButterKnife.bind(this, mBinding.getRoot()); + init(); return mBinding.getRoot(); } + private void init() { + mHelper = new RettificaGiacenzeHelper(getActivity()); + + mHelper.loadListaFornitori(listaFornitori -> { + mRettificaGiacenzeViewModel.setupListaFornitori(listaFornitori); + }); + + } + @Override public void onAttach(Context context) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java index 09e8fdf6..9ae468b0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java @@ -1,4 +1,52 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze.core; +import android.app.ProgressDialog; +import android.content.Context; +import android.databinding.ObservableArrayList; + +import com.google.gson.reflect.TypeToken; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; +import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityDB; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; + public class RettificaGiacenzeHelper { + + private Context mContext; + + public RettificaGiacenzeHelper(Context context){ + mContext = context; + } + + + public void loadListaFornitori(RunnableArgs> onComplete) { + final ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(mContext); + progress.show(); + + String sql = "SELECT cod_alis as 'codAlis', descrizione FROM atb_list WHERE flag_attivo = 'S'"; + + Type typeOfObjectsList = new TypeToken>() {}.getType(); + SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + @Override + public void onSuccess(ArrayList value) { + progress.dismiss(); + + if(onComplete != null) onComplete.run(value); + } + + @Override + public void onFailed(Exception ex) { + UtilityExceptions.defaultException(mContext, ex, progress); + } + }); + + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java new file mode 100644 index 00000000..915b8f0f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java @@ -0,0 +1,95 @@ +package it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter; + +import android.content.Context; +import android.databinding.DataBindingUtil; +import android.databinding.ObservableArrayList; +import android.databinding.ObservableList; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.Filter; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.databinding.RettificaGiacenzeAutocompleteFornitoreLayoutBinding; +import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; + +public class AutoCompleteFornitoreAdapter extends ArrayAdapter { + + private ArrayList items; + private ArrayList itemsAll; + private ArrayList suggestions; + + public AutoCompleteFornitoreAdapter(@NonNull Context context, @NonNull ArrayList items) { + super(context, 0 , items); + this.items = items; + this.itemsAll = (ArrayList) items.clone(); + this.suggestions = new ArrayList<>(); + } + + @NonNull + @Override + public Filter getFilter() { + return fornitoreFilter; + } + + @NonNull + @Override + public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + + RettificaGiacenzeAutocompleteFornitoreLayoutBinding binding = DataBindingUtil.inflate( + LayoutInflater.from(getContext()), + R.layout.rettifica_giacenze_autocomplete_fornitore_layout, parent, false); + + binding.setFornitore(items.get(position)); + + return binding.getRoot(); + } + + + + private Filter fornitoreFilter = new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + if(constraint != null) { + suggestions.clear(); + for (FornitoreDTO fornitore : itemsAll) { + String tmpDescr = fornitore.getCodAlis() + " " + fornitore.getDescrizione(); + + if(tmpDescr.toLowerCase().contains(constraint.toString().toLowerCase())){ + suggestions.add(fornitore); + } + } + FilterResults filterResults = new FilterResults(); + filterResults.values = suggestions; + filterResults.count = suggestions.size(); + return filterResults; + } else { + return new FilterResults(); + } + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + ArrayList filteredList = (ArrayList) results.values; + if(results != null && results.count > 0) { + clear(); + for (FornitoreDTO c : filteredList) { + add(c); + } + notifyDataSetChanged(); + } + } + + @Override + public CharSequence convertResultToString(Object resultValue) { + return ((FornitoreDTO) resultValue).getCodAlis(); + } + }; +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/dto/FornitoreDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/dto/FornitoreDTO.java new file mode 100644 index 00000000..29840abf --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/dto/FornitoreDTO.java @@ -0,0 +1,30 @@ +package it.integry.integrywmsnative.gest.rettifica_giacenze.dto; + +public class FornitoreDTO implements Cloneable { + + private String codAlis; + private String descrizione; + + public String getCodAlis() { + return codAlis; + } + + public FornitoreDTO setCodAlis(String codAlis) { + this.codAlis = codAlis; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public FornitoreDTO setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + @Override + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java index d53392ab..b513b2c6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java @@ -1,4 +1,29 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel; +import android.content.Context; +import android.databinding.ObservableArrayList; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.databinding.FragmentRettificaGiacenzeBinding; +import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.AutoCompleteFornitoreAdapter; +import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; + public class RettificaGiacenzeViewModel { + + private Context mContext; + private FragmentRettificaGiacenzeBinding mBinding; + + public void init(Context context, FragmentRettificaGiacenzeBinding binding) { + mContext = context; + mBinding = binding; + } + + public void setupListaFornitori(ArrayList listaFornitori) { + AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(mContext, listaFornitori); + mBinding.autoCompleteFornitori.setAdapter(autoCompleteFornitoreAdapter); + mBinding.autoCompleteFornitori.setDropDownWidth(mContext.getResources().getDisplayMetrics().widthPixels); + } + } diff --git a/app/src/main/res/layout/fragment_rettifica_giacenze.xml b/app/src/main/res/layout/fragment_rettifica_giacenze.xml index 212f7a4c..ea836631 100644 --- a/app/src/main/res/layout/fragment_rettifica_giacenze.xml +++ b/app/src/main/res/layout/fragment_rettifica_giacenze.xml @@ -7,14 +7,58 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/rettifica_giacenze_autocomplete_fornitore_layout.xml b/app/src/main/res/layout/rettifica_giacenze_autocomplete_fornitore_layout.xml new file mode 100644 index 00000000..889b002a --- /dev/null +++ b/app/src/main/res/layout/rettifica_giacenze_autocomplete_fornitore_layout.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c239f1d0..79e87f6a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -129,4 +129,7 @@ Filtro articoli applicato Rimuovi filtro + Fornitore + Cod art / Descrizione + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index baf608bf..37e4d019 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -137,4 +137,8 @@ Item filter applied Remove filter + + Supplier + Item code / Description +