Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package dmspro.ngaim.orderentry.screens.login;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- import android.text.TextUtils;
- import android.view.View;
- import android.view.inputmethod.EditorInfo;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextView;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Locale;
- import dmspro.ngaim.orderentry.BuildConfig;
- import dmspro.ngaim.orderentry.R;
- import dmspro.ngaim.orderentry.base.BaseAppCompatActivity;
- import dmspro.ngaim.orderentry.base.SingleClick;
- import dmspro.ngaim.orderentry.database.DatabaseHelper;
- import dmspro.ngaim.orderentry.database.entitites.DMSAimDistributorStockAvailableEntity;
- import dmspro.ngaim.orderentry.database.entitites.DMSAimFileSyncEntity;
- import dmspro.ngaim.orderentry.database.entitites.DMSAimUserEntity;
- import dmspro.ngaim.orderentry.model.DMSAimFileSyncModel;
- import dmspro.ngaim.orderentry.model.DMSAimParameterModel;
- import dmspro.ngaim.orderentry.model.DMSAimUserModel;
- import dmspro.ngaim.orderentry.network.AuthenticateTask;
- import dmspro.ngaim.orderentry.network.sync.DistributorStockAvailableDownloader;
- import dmspro.ngaim.orderentry.network.sync.SyncTask;
- import dmspro.ngaim.orderentry.network.sync.Uploader;
- import dmspro.ngaim.orderentry.screens.login.supportingapps.SupportingAppsActivity;
- import dmspro.ngaim.orderentry.service.GPSOnlineFunction;
- import dmspro.ngaim.orderentry.service.servicelocation.LocationTrackingHelper;
- import dmspro.ngaim.orderentry.ui.activity.FileSyncActivity;
- import dmspro.ngaim.orderentry.screens.dashboard.MainMRCActivity;
- import dmspro.ngaim.orderentry.ui.dialog.DialogDownloadAPK;
- import dmspro.ngaim.orderentry.ui.dialog.LoadingDialog;
- import dmspro.ngaim.orderentry.ui.dialog.OneButtonDialog;
- import dmspro.ngaim.orderentry.ui.dialog.TwoButtonDialog;
- import dmspro.ngaim.orderentry.uploadimages.IOnUploaderCallback;
- import dmspro.ngaim.orderentry.uploadimages.ImageScanner;
- import dmspro.ngaim.orderentry.util.Config;
- import dmspro.ngaim.orderentry.util.HardwareUtils;
- import dmspro.ngaim.orderentry.util.LauncherUtil;
- import dmspro.ngaim.orderentry.util.NGPrefUtils;
- import dmspro.ngaim.orderentry.util.Utils;
- import dmspro.ngaim.orderentry.util.autoupdateapk.UpdateAPI;
- import dmspro.ngaim.orderentry.util.autoupdateapk.UpdateAPKUtils;
- import dmspro.ngaim.orderentry.util.autoupdateapk.VersionInfo;
- public class LoginActivity extends BaseAppCompatActivity implements SingleClick.SingleClickListener {
- private TextView tvUrl;
- private EditText edtUsername;
- private EditText edtPassword;
- private EditText edtUrl;
- private Button btnLogin;
- private Button btnSync;
- private Button btnApps;
- private String savedUsername;
- private String savedPassword;
- private String savedUrl;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_mrc_login);
- DatabaseHelper.getInstance(); // do not delete this line
- LocationTrackingHelper.getInstance(this).start();
- /*NGPrefUtils.saveUserName("AGI01");//SM000001
- NGPrefUtils.savePassword("1234");
- NGPrefUtils.saveUrl("192.168.10.14:8099");*/
- Bundle bundle = getIntent().getExtras();
- if (bundle != null && bundle.getBoolean(Config.BUNDLE_CLOSE_APPLICATION)) finish();
- loadPref();
- initView();
- }
- private void loadPref() {
- savedUsername = NGPrefUtils.getUserName();
- savedPassword = NGPrefUtils.getPassword();
- savedUrl = NGPrefUtils.getUrl();
- }
- private void initView() {
- TextView tvVersion = findViewById(R.id.tv_version);
- btnLogin = findViewById(R.id.btn_login);
- edtUsername = findViewById(R.id.ed_user_name);
- edtPassword = findViewById(R.id.ed_password);
- edtUrl = findViewById(R.id.ed_url);
- btnSync = findViewById(R.id.btn_sync);
- tvUrl = findViewById(R.id.tv_url);
- btnApps = findViewById(R.id.btn_apps);
- edtUsername.setText(savedUsername);
- edtPassword.setText(savedPassword);
- edtUrl.setText(savedUrl);
- tvVersion.setText(getString(R.string.p_version, Utils.getAppVersionName(this)));
- SingleClick singleClick = getSingleClick(this);
- btnSync.setOnClickListener(singleClick);
- btnLogin.setOnClickListener(singleClick);
- btnApps.setOnClickListener(singleClick);
- initUrlField();
- }
- private void initUrlField() {
- // IMPORTANT: IGNORE THE WARNINGS
- if (edtUrl.getText().toString().trim().isEmpty()
- || BuildConfig.FORCE_URL) {
- edtUrl.setText(BuildConfig.BASE_URL);
- }
- if (BuildConfig.HIDE_URL) {
- edtUrl.setVisibility(View.GONE);
- tvUrl.setVisibility(View.GONE);
- edtPassword.setImeOptions(EditorInfo.IME_ACTION_DONE);
- }
- }
- @Override
- public void onClick(View v) {
- int id = v.getId();
- switch (id) {
- case R.id.btn_login:
- case R.id.btn_sync:
- String newUserName = edtUsername.getText().toString()
- .replaceAll("\\s", "").trim().toUpperCase(Locale.getDefault());
- edtUsername.setText(newUserName);
- String newPassword = edtPassword.getText().toString();
- String newUrl = edtUrl.getText().toString().replaceAll("\\s", "").trim();
- // if username, password or url changed, run settings process
- if (!newUserName.equals(savedUsername) || !newUrl.equals(savedUrl) || !newPassword.equals(savedPassword)) {
- if (!dmspro.ngaim.orderentry.uploadimages.Uploader.isUploadImageRunning()) {
- executeSettings(newUserName, newUrl);
- } else {
- String msg = getResources().getString(R.string.network_error_upload_image_running_in_other_thread_setting);
- OneButtonDialog dateError = new OneButtonDialog(this);
- dateError.setAlertContent(msg);
- dateError.show();
- }
- } else {
- // if SR tap button Sync or
- // if SR tap button Login but hasn't sync today
- // proceed syncing
- if (id == R.id.btn_sync || !DMSAimUserModel.checkSyncDate()) {
- startLocation(this, false);
- } else {
- afterSyncComplete(this);
- }
- }
- break;
- case R.id.btn_apps:
- SupportingAppsActivity.launch(this);
- break;
- }
- }
- public void startLocation(final Context context, final boolean lastUpload) {
- final LoadingDialog dialog = new LoadingDialog(context, context.getString(R.string.alert_synchronizing));
- dialog.show();
- new GPSOnlineFunction(context).startGetLocation(new GPSOnlineFunction.OnStartGetLocationListener() {
- @Override
- public void onGettingLocation(long millsTime) {
- dialog.setLoadingMessage(context.getString(R.string.alert_obtaining_location) + String.valueOf(millsTime / 1000) + "s");
- }
- @Override
- public void onLocationIsHWGPS(double latitude, double longitude, double accuracy, long mills_total_time_get_location) {
- sendOrderToServer(context, dialog, latitude, longitude, lastUpload);
- }
- @Override
- public void onLocationIsAGPS(double latitude, double longitude, double accuracy, long mills_total_time_get_location) {
- sendOrderToServer(context, dialog, latitude, longitude, lastUpload);
- }
- @Override
- public void onLocationIsError(long mills_total_time_get_location) {
- sendOrderToServer(context, dialog, 0.0, 0.0, lastUpload);
- }
- });
- }
- private void uploadImage(final Context context, final LoadingDialog loading, final double lat, final double lng, final boolean lastUpload) {
- //final LoadingDialog loading = new LoadingDialog(this);
- if (!loading.isShowing()) loading.show();
- loading.setLoadingMessage(context.getString(R.string.uploading_data));
- ImageScanner.uploadImageLacked(context, new ImageScanner.IOnUploadImageLackedListener() {
- @Override
- public void onUploading(int count) {
- loading.setLoadingMessage(context.getString(R.string.remained) + " " + count + " " + context.getString(R.string.image));
- }
- @Override
- public void onFailed(IOnUploaderCallback.UploaderEnum error) {
- loading.dismiss();
- if (lastUpload) {
- onSave();
- } else {
- String msg;
- if (error == IOnUploaderCallback.UploaderEnum.AlreadyRunning) {
- msg = context.getResources().getString(R.string.network_error_upload_image_running_in_other_thread_login);
- } else {
- msg = dmspro.ngaim.orderentry.uploadimages.Uploader.getUploadImageError(context, error);
- }
- OneButtonDialog dialogerrroruser = new OneButtonDialog(context, null);
- dialogerrroruser.setAlertContent(msg);
- dialogerrroruser.setCancelable(false);
- if (context instanceof Activity) {
- Activity act = ((Activity) context);
- if (!act.isFinishing()) {
- dialogerrroruser.show();
- }
- }
- }
- }
- @Override
- public void onCompleted() {
- if (lastUpload) {
- loading.dismiss();
- onSave();
- } else {
- updateApK(context, loading, lat, lng);
- }
- }
- });
- }
- private void sendOrderToServer(final Context context, final LoadingDialog d, final double lat, final double lng, final boolean lastUpload) {
- d.setLoadingMessage(context.getString(R.string.alert_uploading));
- Uploader.uploadData(Uploader.SYNC_MIDDLE_DAY, lat, lng, new Uploader.OnUploadListener() {
- @Override
- public void onSuccess() {
- uploadImage(context, d, lat, lng, lastUpload);
- }
- @Override
- public void onError(String error) {
- d.dismiss();
- if (lastUpload) {
- onSave();
- } else {
- OneButtonDialog dialog = new OneButtonDialog(context, null);
- dialog.setAlertContent(error);
- dialog.show();
- }
- }
- },false);
- }
- public void sync(final Context context, final LoadingDialog dialog, final double latitude, final double longitude) {
- dialog.setLoadingMessage(context.getString(R.string.alert_synchronizing));
- boolean isFirstSync = !DMSAimUserModel.checkSyncDate();
- new SyncTask(isFirstSync, latitude, longitude, new SyncTask.SyncCallBack() {
- @Override
- public void onFinished(SyncTask.SyncResult result) {
- if (result == SyncTask.SyncResult.Success) {
- if (DMSAimUserModel.checkSyncDate()) {
- getDistributorStock(context, dialog);
- } else {
- dialog.dismiss();
- OneButtonDialog dateError = new OneButtonDialog(context);
- dateError.setAlertContent(R.string.alert_sync_check_date_error);
- dateError.show();
- }
- } else {
- final TwoButtonDialog error = new TwoButtonDialog(context, new TwoButtonDialog.IAlertConfirm() {
- @Override
- public void accept() {
- dialog.dismiss();
- }
- }, new TwoButtonDialog.IAlertConfirm() {
- @Override
- public void accept() {
- sync(context, dialog, latitude, longitude);
- }
- });
- //error.setAlertContent(context.getString(R.string.alert_sync_error));
- error.setAlertContent(SyncTask.getDownloadError(context, result));
- error.setAlertLeftBtnText(context.getString(R.string.alert_button_exit));
- error.setAlertRightBtnText(context.getString(R.string.alert_button_retry));
- error.show();
- }
- }
- }).execute();
- }
- public void updateApK(final Context context, final LoadingDialog dialog, final double latitude, final double longitude) {
- UpdateAPKUtils.checkVersion(context, NGPrefUtils.getUrlUpdateAPK(), new UpdateAPI.IOnCheckVersionListener() {
- @Override
- public void onChecked(VersionInfo newInfo, VersionInfo oldInfo, UpdateAPI updateAPI) {
- if (newInfo != null && oldInfo != null) {
- double newInfoVersionCode = 0;
- try {
- newInfoVersionCode = Double.parseDouble(newInfo.getVersionCode());
- } catch (NumberFormatException e) {
- e.printStackTrace();
- }
- double oldinfoVersionCode = 0;
- try {
- oldinfoVersionCode = Double.parseDouble(oldInfo.getVersionCode());
- } catch (NumberFormatException e) {
- e.printStackTrace();
- }
- if (newInfoVersionCode > oldinfoVersionCode) {
- dialog.dismiss();
- DialogDownloadAPK d = new DialogDownloadAPK(context, newInfo);
- if (context instanceof Activity) {
- if (!((Activity) context).isFinishing()) {
- d.show();
- }
- }
- return;
- } else {
- // khong co version moi
- sync(context, dialog, latitude, longitude);
- }
- } else {
- dialog.dismiss();
- OneButtonDialog dialog = new OneButtonDialog(context, new OneButtonDialog.IAlertConfirm() {
- @Override
- public void accept() {
- if (context instanceof Activity) {
- ((Activity) context).finish();
- }
- }
- });
- dialog.setAlertContent(context.getString(R.string.error_checking_update));
- dialog.show();
- }
- }
- });
- }
- public static boolean isAllFileDownloaded() {
- boolean allFileDownloaded = true;
- ArrayList<DMSAimFileSyncEntity> fileSyncEntities = checkSum(DMSAimFileSyncModel.getAlls());
- if (fileSyncEntities.size() > 0) {
- allFileDownloaded = false;
- }
- return allFileDownloaded;
- }
- public static void downloadFile(final Context context) {
- OneButtonDialog downloadDialog = new OneButtonDialog(context, new OneButtonDialog.IAlertConfirm() {
- @Override
- public void accept() {
- Intent intent = new Intent(context, FileSyncActivity.class);
- Bundle b = new Bundle();
- b.putBoolean(FileSyncActivity.BUNDLE_AUTO_DOWNLOAD, true);
- intent.putExtras(b);
- if (context instanceof Activity && !((Activity) context).isFinishing()) {
- context.startActivity(intent);
- }
- }
- });
- downloadDialog.setAlertContent(R.string.file_is_not_downloaded);
- downloadDialog.show();
- }
- private static ArrayList<DMSAimFileSyncEntity> checkSum(ArrayList<DMSAimFileSyncEntity> allEntities) {
- ArrayList<DMSAimFileSyncEntity> results = new ArrayList<DMSAimFileSyncEntity>();
- for (DMSAimFileSyncEntity e : allEntities) {
- // kiem tra file da ton tai hay chua
- File f = new File(e.getSaveTo());
- if (f.exists()) {
- // check md5
- String md5 = Utils.fileToMD5(e.getSaveTo());
- if (md5 != null) {
- if (!md5.equalsIgnoreCase(e.getMD5CheckSum())) {
- results.add(e);
- // // xoa
- File file = new File(e.getSaveTo());
- file.delete();
- }
- }
- } else
- results.add(e);
- }
- return results;
- }
- public static void afterSyncComplete(Context context) {
- boolean install = false;
- boolean launcherEnable = DMSAimParameterModel.isLauncherEnabled();
- if (launcherEnable) {
- int currentVersion = LauncherUtil.getCurrentVersionCode(context);
- int newVersion = DMSAimParameterModel.getLauncherVersionCode();
- String url = DMSAimParameterModel.getLauncherUrl();
- if (newVersion > currentVersion && url != null && !url.trim().equals("")) {
- VersionInfo newInfo = new VersionInfo();
- newInfo.setAppName(Config.LAUNCHER_APP_NAME);
- newInfo.setApkUrl(url);
- newInfo.setPackageName(Config.LAUNCHER_PACKAGE_NAME);
- DialogDownloadAPK d = new DialogDownloadAPK(context, newInfo);
- d.setCloseDialogWhenInstall(true);
- if (context instanceof Activity) {
- if (!((Activity) context).isFinishing()) {
- d.show();
- }
- }
- install = true;
- }
- }
- if (!install) {
- lastCheck(context);
- }
- }
- public static void lastCheck(Context context) {
- LauncherUtil.sendBroadCast(context);
- if (Utils.checkStateDevice(context, true) == null) {
- Intent intent = new Intent(context, MainMRCActivity.class);
- context.startActivity(intent);
- }
- }
- public static void deleteUploadedFiles(final Context context, final LoadingDialog dialog) {
- ImageScanner.deleteFiles(context, new ImageScanner.IOnDeleteListener() {
- @Override
- public void onDeleting(int total) {
- dialog.setLoadingMessage(R.string.dialog_deleting_uploaded_files);
- }
- @Override
- public void onCompleted() {
- dialog.dismiss();
- if (!isAllFileDownloaded()) {
- downloadFile(context);
- return;
- }
- afterSyncComplete(context);
- }
- });
- }
- private void executeSettings(String newUserName, String newUrl) {
- String newPass = edtPassword.getText().toString();
- if (newUserName.isEmpty() || newUrl.isEmpty()) {
- String msg;
- if (newUserName.isEmpty()) {
- msg = getString(R.string.setting_alert_username_can_not_blank);
- } else {
- msg = getString(R.string.setting_alert_url_can_not_blank);
- }
- OneButtonDialog dialog = new OneButtonDialog(this);
- dialog.setAlertContent(msg);
- dialog.show();
- } else if (!newUserName.equals(savedUsername) || !newUrl.equals(savedUrl)) { //User changed
- DMSAimUserEntity user = DMSAimUserModel.getUser();
- if (user == null) {
- onSave();
- } else {
- // re-save data when exists data in db but not in pref
- if (savedUsername.isEmpty()) {
- NGPrefUtils.saveUserName(user.getUserName());
- }
- if (NGPrefUtils.getToken().isEmpty()) {
- NGPrefUtils.saveToken(Config.TEMP_TOKEN);
- }
- if (savedUrl.isEmpty()) {
- NGPrefUtils.saveUrl(BuildConfig.BASE_URL);
- }
- startLocation(this, true);
- }
- } else {
- NGPrefUtils.savePassword(newPass);
- startLocation(this, false);
- }
- }
- public void onSave() {
- DatabaseHelper.deleteAllTables();
- NGPrefUtils.saveToken(Config.EMPTY_TEXT);
- NGPrefUtils.saveUserName(edtUsername.getText().toString().replaceAll("\\s", "").trim());
- NGPrefUtils.savePassword(edtPassword.getText().toString().replaceAll("\\s", ""));
- NGPrefUtils.saveUrl(edtUrl.getText().toString().replaceAll("\\s", "").trim());
- if (TextUtils.isEmpty(NGPrefUtils.getToken())) {
- authenticate();
- }
- }
- private void authenticate() {
- String userName = NGPrefUtils.getUserName();
- final LoadingDialog dialog = new LoadingDialog(this, getString(R.string.alert_authenticating));
- dialog.show();
- new AuthenticateTask(HardwareUtils.getUID(this), userName, new AuthenticateTask.AuthenticateBack() {
- @Override
- public void onFinished(AuthenticateTask.AuthenticateResult result, String token) {
- if (!isDestroyed()) dialog.dismiss();
- if (result == AuthenticateTask.AuthenticateResult.Success) {
- NGPrefUtils.saveToken(token);
- startLocation(LoginActivity.this, false);
- } else {
- NGPrefUtils.saveUrl(Config.EMPTY_TEXT);
- NGPrefUtils.savePassword(Config.EMPTY_TEXT);
- NGPrefUtils.saveUserName(Config.EMPTY_TEXT);
- NGPrefUtils.saveToken(Config.EMPTY_TEXT);
- OneButtonDialog dialog = new OneButtonDialog(LoginActivity.this);
- dialog.setAlertContent(AuthenticateTask.getAuthenticateError(LoginActivity.this, result));
- dialog.setAlertBtnText(R.string.dialog_btn_accept);
- dialog.show();
- }
- loadPref();
- }
- }).execute();
- }
- public static void getDistributorStock(final Context context, final LoadingDialog dialog) {
- dialog.setLoadingMessage(R.string.msg_downloading_distributor_stock);
- new DistributorStockAvailableDownloader().download(new DistributorStockAvailableDownloader.IDistributorStockDownloadResultListener() {
- @Override
- public void onSuccess() {
- deleteUploadedFiles(context,dialog);
- }
- @Override
- public void onFail() {
- dialog.dismiss();
- TwoButtonDialog retryDialog = new TwoButtonDialog(context, new TwoButtonDialog.IAlertConfirm() {
- @Override
- public void accept() {
- LoadingDialog dialog = new LoadingDialog(context, context.getString(R.string.alert_synchronizing));
- dialog.show();
- deleteUploadedFiles(context,dialog);
- }
- }, new TwoButtonDialog.IAlertConfirm() {
- @Override
- public void accept() {
- LoadingDialog dialog = new LoadingDialog(context);
- dialog.show();
- // Do chỉ delete lúc đồng bộ nên phải tự delete lúc retry
- DatabaseHelper.getInstance().delete(DMSAimDistributorStockAvailableEntity.TABLE_NAME, null, null);
- getDistributorStock(context, dialog);
- }
- });
- retryDialog.setAlertContent(R.string.msg_retry_get_distributor_stock);
- retryDialog.setAlertLeftBtnText(context.getString(R.string.skip));
- retryDialog.setAlertRightBtnText(context.getString(R.string.alert_button_retry));
- retryDialog.show();
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement