add project adins

This commit is contained in:
Alfrid Sanjaya Leo Putra 2024-07-25 14:44:22 +07:00
commit f8f85d679d
5299 changed files with 625430 additions and 0 deletions

View file

@ -0,0 +1,49 @@
/*
* Copyright 2013 Chris Banes
*
* 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
*
* http://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.
*/
package uk.co.senab.actionbarpulltorefresh.library.listeners;
import android.view.View;
public interface HeaderViewListener {
/**
* The state when the header view is completely visible.
*/
public static int STATE_VISIBLE = 0;
/**
* The state when the header view is minimized. By default this means
* that the progress bar is still visible, but the rest of the view is
* hidden, showing the Action Bar behind.
* <p/>
* This will not be called in header minimization is disabled.
*/
public static int STATE_MINIMIZED = 1;
/**
* The state when the header view is completely hidden.
*/
public static int STATE_HIDDEN = 2;
/**
* Called when the visibility state of the Header View has changed.
*
* @param headerView HeaderView who's state has changed.
* @param state The new state. One of {@link #STATE_VISIBLE},
* {@link #STATE_MINIMIZED} and {@link #STATE_HIDDEN}
*/
public void onStateChanged(View headerView, int state);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View file

@ -0,0 +1,222 @@
package com.adins.mss.foundation.db;
import android.content.Context;
import android.database.Cursor;
import android.text.TextUtils;
import android.util.Log;
import com.adins.mss.base.GlobalData;
import com.adins.mss.base.crashlytics.FireCrash;
import com.adins.mss.constant.Global;
import com.adins.mss.dao.DaoMaster;
import com.adins.mss.dao.LogoPrintDao;
import com.adins.mss.dao.TaskH;
import com.adins.mss.dao.TaskSummaryDao;
import com.adins.mss.dao.ThemeDao;
import com.adins.mss.dao.ThemeItemDao;
import com.adins.mss.dao.Timeline;
import com.adins.mss.dao.TimelineType;
import com.adins.mss.foundation.db.dataaccess.TaskHDataAccess;
import com.adins.mss.foundation.db.dataaccess.TimelineDataAccess;
import com.adins.mss.foundation.db.dataaccess.TimelineTypeDataAccess;
import org.acra.ACRA;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import de.greenrobot.dao.AbstractDao;
import de.greenrobot.dao.database.Database;
import de.greenrobot.dao.internal.DaoConfig;
/**
* Created by gigin.ginanjar on 08/09/2016.
*/
public class MigrationHelper {
private static final String CONVERSION_CLASS_NOT_FOUND_EXCEPTION = "MIGRATION HELPER - CLASS DOESN'T MATCH WITH THE CURRENT PARAMETERS";
private static MigrationHelper instance;
private static boolean migrationFinished = false;
public static MigrationHelper getInstance() {
if (instance == null) {
instance = new MigrationHelper();
}
return instance;
}
private static List<String> getColumns(Database db, String tableName) {
List<String> columns = new ArrayList<>();
Cursor cursor = null;
try {
cursor = db.rawQuery("SELECT * FROM " + tableName + " limit 1", null);
if (cursor != null) {
columns = new ArrayList<>(Arrays.asList(cursor.getColumnNames()));
}
} catch (Exception e) {
FireCrash.log(e);
Log.v(tableName, e.getMessage(), e);
e.printStackTrace();
} finally {
if (cursor != null)
cursor.close();
}
return columns;
}
/**
* migrate Data from old DB
* how to use : add this sample in onUpgrade() method in DaoMaster.java
* MigrationHelper.getInstance().migrate(db, [optional]UserDao.class, [optional]ItemDao.class);
*
* @param db
* @param daoClasses
*/
public void migrate(Database db, Class<? extends AbstractDao<?, ?>>... daoClasses) {
generateTempTables(db, daoClasses);
DaoMaster.dropAllTables(db, true);
DaoMaster.createAllTables(db, false);
restoreData(db, daoClasses);
}
public void migrateFrom2x(Database db) {
//tr_depositreport_d
db.execSQL("ALTER TABLE TR_DEPOSITREPORT_D ADD AGREEMENT_NO TEXT");
//tr_timeline
db.execSQL("ALTER TABLE TR_TIMELINE ADD NAME TEXT");
db.execSQL("ALTER TABLE TR_TIMELINE ADD ADDRESS TEXT");
db.execSQL("ALTER TABLE TR_TIMELINE ADD AGREEMENT_NO TEXT");
db.execSQL("ALTER TABLE TR_TIMELINE ADD AMOUNT_DUE TEXT");
db.execSQL("ALTER TABLE TR_TIMELINE ADD OVERDUE TEXT");
db.execSQL("ALTER TABLE TR_TIMELINE ADD INSTALLMENT_NO TEXT");
db.execSQL("ALTER TABLE TR_TIMELINE ADD ATTD_ADDRESS TEXT");
db.execSQL("ALTER TABLE TR_TIMELINE ADD PRIORITY TEXT");
db.execSQL("ALTER TABLE TR_TIMELINE ADD IS_VERIFICATION_TASK TEXT");
db.execSQL("ALTER TABLE TR_TIMELINE ADD COLL_RESULT TEXT");
//create table
//tr_task_summary
TaskSummaryDao.createTable(db,true);
//tr_theme
ThemeDao.createTable(db,true);
//tr_theme_item
ThemeItemDao.createTable(db,true);
//tr_logo_print
LogoPrintDao.createTable(db,true);
}
public void migrateTaskHFrom2x(Context context, List<Timeline> timelineList){
if(!migrationFinished) {
TimelineType typeSaveDraft = TimelineTypeDataAccess.getTimelineTypebyType(context, Global.TIMELINE_TYPE_SAVEDRAFT);
for (Timeline timeline : timelineList) {
String uuid_task_h = timeline.getUuid_task_h();
if (!uuid_task_h.equalsIgnoreCase("")) {
List<TaskH> oldTaskH = TaskHDataAccess.getTaskById(context, uuid_task_h);
if (oldTaskH.get(0).getStatus().equals(TaskHDataAccess.STATUS_SEND_SAVEDRAFT) && oldTaskH.get(0).getSubmit_date() == null) {
timeline.setTimelineType(typeSaveDraft);
TimelineDataAccess.addOrReplace(context, timeline);
}
}
}
migrationFinished = true;
}
}
private void generateTempTables(Database db, Class<? extends AbstractDao<?, ?>>... daoClasses) {
for (int i = 0; i < daoClasses.length; i++) {
DaoConfig daoConfig = new DaoConfig(db, daoClasses[i]);
String divider = "";
String tableName = daoConfig.tablename;
String tempTableName = daoConfig.tablename.concat("_TEMP");
ArrayList<String> properties = new ArrayList<>();
StringBuilder createTableStringBuilder = new StringBuilder();
createTableStringBuilder.append("CREATE TABLE ").append(tempTableName).append(" (");
for (int j = 0; j < daoConfig.properties.length; j++) {
String columnName = daoConfig.properties[j].columnName;
if (getColumns(db, tableName).contains(columnName)) {
properties.add(columnName);
String type = null;
try {
type = getTypeByClass(daoConfig.properties[j].type);
} catch (Exception exception) {
ACRA.getErrorReporter().handleSilentException(exception);
}
createTableStringBuilder.append(divider).append(columnName).append(" ").append(type);
if (daoConfig.properties[j].primaryKey) {
createTableStringBuilder.append(" PRIMARY KEY");
}
divider = ",";
}
}
createTableStringBuilder.append(");");
db.execSQL(createTableStringBuilder.toString());
StringBuilder insertTableStringBuilder = new StringBuilder();
insertTableStringBuilder.append("INSERT INTO ").append(tempTableName).append(" (");
insertTableStringBuilder.append(TextUtils.join(",", properties));
insertTableStringBuilder.append(") SELECT ");
insertTableStringBuilder.append(TextUtils.join(",", properties));
insertTableStringBuilder.append(" FROM ").append(tableName).append(";");
db.execSQL(insertTableStringBuilder.toString());
}
}
private void restoreData(Database db, Class<? extends AbstractDao<?, ?>>... daoClasses) {
for (int i = 0; i < daoClasses.length; i++) {
DaoConfig daoConfig = new DaoConfig(db, daoClasses[i]);
String tableName = daoConfig.tablename;
String tempTableName = daoConfig.tablename.concat("_TEMP");
ArrayList<String> properties = new ArrayList();
for (int j = 0; j < daoConfig.properties.length; j++) {
String columnName = daoConfig.properties[j].columnName;
if (getColumns(db, tempTableName).contains(columnName)) {
properties.add(columnName);
}
}
StringBuilder insertTableStringBuilder = new StringBuilder();
insertTableStringBuilder.append("INSERT INTO ").append(tableName).append(" (");
insertTableStringBuilder.append(TextUtils.join(",", properties));
insertTableStringBuilder.append(") SELECT ");
insertTableStringBuilder.append(TextUtils.join(",", properties));
insertTableStringBuilder.append(" FROM ").append(tempTableName).append(";");
StringBuilder dropTableStringBuilder = new StringBuilder();
dropTableStringBuilder.append("DROP TABLE ").append(tempTableName);
db.execSQL(insertTableStringBuilder.toString());
db.execSQL(dropTableStringBuilder.toString());
}
}
private String getTypeByClass(Class<?> type) throws Exception {
if (type.equals(String.class)) {
return "TEXT";
}
if (type.equals(Long.class) || type.equals(Integer.class) || type.equals(long.class)) {
return "INTEGER";
}
if (type.equals(Boolean.class)) {
return "BOOLEAN";
}
Exception exception = new Exception(CONVERSION_CLASS_NOT_FOUND_EXCEPTION.concat(" - Class: ").concat(type.toString()));
throw exception;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layoutView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bgColorWhite"
android:orientation="vertical">
<Button
android:id="@+id/btnCreatePlan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/button_background"
android:text="@string/create_plan"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#ffffff"
android:textSize="18dp"
android:visibility="gone" />
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@android:color/transparent"
android:dividerHeight="5dp"
android:footerDividersEnabled="true"
android:headerDividersEnabled="true"
android:padding="5dp"
android:scrollbarSize="1dp"
android:scrollbarStyle="outsideOverlay" />
</LinearLayout>

View file

@ -0,0 +1,132 @@
package com.adins.mss.base.dynamicform.form.questions.viewholder;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import androidx.fragment.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import com.adins.mss.base.GlobalData;
import com.adins.mss.base.R;
import com.adins.mss.base.dynamicform.form.models.LookupCriteriaBean;
import com.adins.mss.base.util.LocaleHelper;
import com.adins.mss.constant.Global;
import com.adins.mss.foundation.formatter.Tool;
import com.google.firebase.analytics.FirebaseAnalytics;
import java.util.List;
import java.util.Locale;
public class LookupCriteriaOnlineActivity extends FragmentActivity {
public static final String KEY_SELECTED_CRITERIA = "KEY_SELECTED_CRITERIA";
public static final String KEY_WITH_FILTER = "KEY_WITH_FILTER";
protected static List<LookupCriteriaBean> beanList;
TableLayout criteriaTableLayout;
private boolean withFilter;
private FirebaseAnalytics screenName;
public static List<LookupCriteriaBean> getBeanList() {
return beanList;
}
public static void setBeanList(List<LookupCriteriaBean> beanList) {
LookupCriteriaOnlineActivity.beanList = beanList;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
screenName = FirebaseAnalytics.getInstance(this);
setContentView(R.layout.activity_lookup_online);
criteriaTableLayout = (TableLayout) findViewById(R.id.tableCriteriaLayout);
withFilter = getIntent().getBooleanExtra(KEY_WITH_FILTER, false);
if (getBeanList() != null) {
int index = 0;
for (final LookupCriteriaBean bean : getBeanList()) {
TableRow row = (TableRow) LayoutInflater.from(this).inflate(R.layout.lookup_criteria_row, criteriaTableLayout, false);
if (!bean.getValue().equals("No Data Found")) {
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra(KEY_SELECTED_CRITERIA, bean);
setResult(RESULT_OK, intent);
finish();
}
});
}
row.setPadding(0, 10, 0, 10);
String[] lookupCode = Tool.split(bean.getCode(), Global.DELIMETER_DATA_LOOKUP);
String[] lookupValue = Tool.split(bean.getValue(), Global.DELIMETER_DATA_LOOKUP);
StringBuilder lovCode = new StringBuilder();
StringBuilder lovValue = new StringBuilder();
for (String code : lookupCode) {
if (lovCode.length() != 0)
lovCode.append("\n");
lovCode.append(code);
}
for (String value : lookupValue) {
if (lovValue.length() != 0)
lovValue.append("\n");
lovValue.append(value);
}
TextView textDesc = (TextView) row.findViewById(R.id.fieldValue);
textDesc.setText(lovValue.toString());
criteriaTableLayout.addView(row);
// set divider
if (index + 1 < getBeanList().size()) {
TableRow divider = (TableRow) LayoutInflater.from(this).inflate(R.layout.lookup_criteria_divider, criteriaTableLayout, false);
criteriaTableLayout.addView(divider);
index++;
}
}
}
}
@Override
protected void onResume() {
super.onResume();
//Set Firebase screen name
screenName.setCurrentScreen(this, getString(R.string.screen_name_lookup_criteria), null);
}
@Override
protected void attachBaseContext(Context newBase) {
Context context = newBase;
Locale locale;
try{
locale = new Locale(GlobalData.getSharedGlobalData().getLocale());
context = LocaleHelper.wrap(newBase, locale);
} catch (Exception e) {
locale = new Locale(LocaleHelper.ENGLSIH);
context = LocaleHelper.wrap(newBase, locale);
} finally {
super.attachBaseContext(context);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
this.setBeanList(null);
}
@Override
public void onBackPressed() {
if (withFilter) {
super.onBackPressed();
} else {
Intent intent = new Intent();
setResult(RESULT_CANCELED, intent);
finish();
}
}
}

View file

@ -0,0 +1,43 @@
package com.adins.mss.base.plugins;
import android.content.Context;
/**
* Created by Aditya Purwa on 1/5/2015.
* Plugin.
*/
public abstract class Plugin {
private final Context context;
/**
* Initialize a new instance of plugin.
*
* @param context Context for the plugin.
*/
protected Plugin(Context context) {
this.context = context;
}
public Context getContext() {
return context;
}
/**
* When overridden in a derived class, used to check whether the given context could be plugged.
*
* @return True if supported, false otherwise.
*/
protected abstract boolean checkSupport();
/**
* Apply the plugin.
*
* @return True if applied successfully, false otherwise.
*/
public abstract boolean apply();
/**
* Cancel the application of the plugin.
*/
public abstract void cancel();
}

View file

@ -0,0 +1,9 @@
package com.adins.mss.base.depositreport;
import com.adins.mss.foundation.http.MssRequestType;
/**
* Created by angga.permadi on 8/29/2016.
*/
public class TaskLogRequest extends MssRequestType {
}

View file

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_grayscale"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="16dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/priorityViewByForm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@drawable/dropdown_background"
android:padding="5dp"
android:spinnerMode="dropdown" />
<ImageView
android:id="@+id/img_expand_by_form_pc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/priorityViewByForm"
android:layout_alignEnd="@+id/priorityViewByForm"
android:layout_alignBottom="@+id/priorityViewByForm"
android:layout_marginEnd="10dp"
android:tint="@color/colorMC"
app:srcCompat="@drawable/ic_expand" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/priorityViewByUser"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@drawable/dropdown_background"
android:padding="5dp"
android:spinnerMode="dropdown" />
<ImageView
android:id="@+id/img_expand_by_user_pc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/priorityViewByUser"
android:layout_alignEnd="@+id/priorityViewByUser"
android:layout_alignBottom="@+id/priorityViewByUser"
android:layout_marginEnd="10dp"
android:tint="@color/colorMC"
app:srcCompat="@drawable/ic_expand" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/priorityViewByBatch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@drawable/dropdown_background"
android:padding="5dp"
android:spinnerMode="dropdown" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/priorityViewByBatch"
android:layout_alignEnd="@+id/priorityViewByBatch"
android:layout_alignBottom="@+id/priorityViewByBatch"
android:layout_marginEnd="10dp"
android:tint="@color/colorMC"
app:srcCompat="@drawable/ic_expand" />
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/label_info_batch"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="4dp">
<TextView
android:id="@+id/formBatch"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="@string/label_info_form" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/divider_colon" />
<TextView
android:id="@+id/formBatchValue"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="4dp">
<TextView
android:id="@+id/dateBatch"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="@string/label_info_submitdate" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/divider_colon" />
<TextView
android:id="@+id/dateBatchValue"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:gravity="right" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/label_recapitulation"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black"
android:textStyle="bold" />
<ListView
android:id="@+id/recapitulationList"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
<Button
android:id="@+id/transferButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/button_background"
android:enabled="true"
android:text="@string/btnTransfer"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/fontColorWhite" />
</LinearLayout>
</LinearLayout>