Skip to content

Commit c3527a6

Browse files
authored
Merge pull request odk-x#222 from odk-x/demo
2.1.9 release
2 parents c619af7 + 03a6d3f commit c3527a6

15 files changed

+551
-156
lines changed

androidlibrary_lib/build.gradle

+7-5
Original file line numberDiff line numberDiff line change
@@ -104,15 +104,17 @@ dependencies {
104104
implementation 'net.jcip:jcip-annotations:1.0'
105105
implementation 'androidx.annotation:annotation:1.2.0'
106106
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
107-
implementation 'androidx.appcompat:appcompat:1.2.0'
107+
implementation 'androidx.appcompat:appcompat:1.3.1'
108108
implementation 'androidx.preference:preference:1.1.1'
109-
implementation 'androidx.fragment:fragment:1.3.2'
110-
implementation 'com.google.android.material:material:1.3.0'
109+
implementation 'androidx.fragment:fragment:1.3.6'
110+
implementation 'com.google.android.material:material:1.4.0'
111111
// Testing dependencies
112112
testImplementation 'junit:junit:4.13.1'
113113
testImplementation 'androidx.annotation:annotation:1.2.0'
114-
androidTestImplementation 'androidx.test:rules:1.3.0'
115-
androidTestImplementation 'androidx.test:runner:1.3.0'
114+
androidTestImplementation 'androidx.test:rules:1.4.0'
115+
androidTestImplementation 'androidx.test:runner:1.4.0'
116+
androidTestImplementation 'androidx.test:core:1.4.0'
117+
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
116118
}
117119

118120
publishing {

androidlibrary_lib/src/androidTest/AndroidManifest.xml

+4-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
66
<uses-permission android:name="android.permission.INTERNET" />
77

8-
<application android:requestLegacyExternalStorage="true">
8+
<application
9+
android:requestLegacyExternalStorage="true"
10+
android:theme="@style/Theme.AppCompat">
11+
<activity android:name="org.opendatakit.test_utils.TestActivity" />
912
</application>
1013

1114

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
package org.opendatakit.fragment;
2+
3+
4+
import org.junit.Rule;
5+
import org.junit.Test;
6+
import org.junit.Assert;
7+
import org.junit.Before;
8+
import java.util.Random;
9+
import static org.junit.Assert.assertThat;
10+
import static org.hamcrest.CoreMatchers.is;
11+
import static org.junit.Assert.assertEquals;
12+
import androidx.fragment.app.FragmentManager;
13+
import androidx.test.core.app.ActivityScenario;
14+
import org.opendatakit.test_utils.TestActivity;
15+
import androidx.test.ext.junit.rules.ActivityScenarioRule;
16+
import org.opendatakit.fragment.AlertNProgessMsgFragmentMger.DialogState;
17+
18+
public class AlertNProgessMsgFragmentMgerTest {
19+
20+
private static final String APP_NAME = "APP_NAME";
21+
22+
private static final String ALERT_DIALOG_TAG = "ALERT_DIALOG_TAG";
23+
private static final String PROGRESS_DIALOG_TAG = "PROGRESS_DIALOG_TAG";
24+
25+
private static final String ALERT_DIALOG_TITLE = "ALERT_DIALOG_TITLE";
26+
private static final String ALERT_DIALOG_MESSAGE = "ALERT_DIALOG_MESSAGE";
27+
28+
private static final String PROGRESS_DIALOG_TITLE = "PROGRESS_DIALOG_TITLE";
29+
private static final String PROGRESS_DIALOG_MESSAGE = "PROGRESS_DIALOG_TITLE";
30+
31+
private AlertNProgessMsgFragmentMger systemUnderTest;
32+
33+
@Rule
34+
public ActivityScenarioRule<TestActivity> rule = new ActivityScenarioRule<>(TestActivity.class);
35+
36+
@Before
37+
public void setUp() {
38+
systemUnderTest = new AlertNProgessMsgFragmentMger(APP_NAME,
39+
ALERT_DIALOG_TAG,
40+
PROGRESS_DIALOG_TAG,
41+
false,
42+
false);
43+
}
44+
45+
@Test
46+
public void testNoDialogIsCreated() {
47+
assertEquals(DialogState.None, systemUnderTest.getDialogState());
48+
}
49+
50+
@Test
51+
public void testAlertDialogIsCreated() {
52+
ActivityScenario<TestActivity> scenario = rule.getScenario();
53+
54+
scenario.onActivity(new ActivityScenario.ActivityAction<TestActivity>() {
55+
@Override
56+
public void perform(TestActivity activity) {
57+
int fragmentId = new Random().nextInt();
58+
FragmentManager fragmentManager = activity.getSupportFragmentManager();
59+
60+
systemUnderTest.createAlertDialog(ALERT_DIALOG_TITLE, ALERT_DIALOG_MESSAGE, fragmentManager, fragmentId);
61+
fragmentManager.executePendingTransactions();
62+
63+
assertThat(fragmentManager.findFragmentByTag(ALERT_DIALOG_TAG).isAdded(), is(true));
64+
assertEquals(DialogState.Alert, systemUnderTest.getDialogState());
65+
Assert.assertThat(systemUnderTest.hasDialogBeenCreated(), is(true));
66+
}
67+
});
68+
}
69+
70+
@Test
71+
public void testProgressDialogIsCreated() {
72+
ActivityScenario<TestActivity> scenario = rule.getScenario();
73+
74+
scenario.onActivity(new ActivityScenario.ActivityAction<TestActivity>() {
75+
@Override
76+
public void perform(TestActivity activity) {
77+
FragmentManager fragmentManager = activity.getSupportFragmentManager();
78+
79+
systemUnderTest.createProgressDialog(PROGRESS_DIALOG_TITLE, PROGRESS_DIALOG_MESSAGE, fragmentManager);
80+
fragmentManager.executePendingTransactions();
81+
82+
assertThat(fragmentManager.findFragmentByTag(PROGRESS_DIALOG_TAG).isAdded(), is(true));
83+
assertEquals(DialogState.Progress, systemUnderTest.getDialogState());
84+
Assert.assertThat(systemUnderTest.hasDialogBeenCreated(), is(true));
85+
}
86+
});
87+
}
88+
89+
@Test
90+
public void testProgressDialogIsDismissed() {
91+
ActivityScenario<TestActivity> scenario = rule.getScenario();
92+
93+
scenario.onActivity(new ActivityScenario.ActivityAction<TestActivity>() {
94+
@Override
95+
public void perform(TestActivity activity) {
96+
FragmentManager fragmentManager = activity.getSupportFragmentManager();
97+
98+
systemUnderTest.createProgressDialog(PROGRESS_DIALOG_TITLE, PROGRESS_DIALOG_MESSAGE, fragmentManager);
99+
fragmentManager.executePendingTransactions();
100+
systemUnderTest.dismissProgressDialog(fragmentManager);
101+
102+
assertEquals(DialogState.None, systemUnderTest.getDialogState());
103+
}
104+
});
105+
}
106+
107+
@Test
108+
public void testAlertDialogIsDismissed() {
109+
ActivityScenario<TestActivity> scenario = rule.getScenario();
110+
111+
scenario.onActivity(new ActivityScenario.ActivityAction<TestActivity>() {
112+
@Override
113+
public void perform(TestActivity activity) {
114+
int fragmentId = new Random().nextInt();
115+
FragmentManager fragmentManager = activity.getSupportFragmentManager();
116+
117+
systemUnderTest.createAlertDialog(ALERT_DIALOG_TITLE, ALERT_DIALOG_MESSAGE, fragmentManager, fragmentId);
118+
fragmentManager.executePendingTransactions();
119+
systemUnderTest.dismissAlertDialog(fragmentManager);
120+
121+
assertEquals(DialogState.None, systemUnderTest.getDialogState());
122+
}
123+
});
124+
}
125+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.opendatakit.test_utils;
2+
3+
import android.content.Context;
4+
import androidx.appcompat.app.AppCompatActivity;
5+
import org.opendatakit.activities.IAppAwareActivity;
6+
7+
public class TestActivity extends AppCompatActivity implements IAppAwareActivity {
8+
9+
@Override
10+
public String getAppName() {
11+
return "TEST_APP_NAME";
12+
}
13+
14+
@Override
15+
public Context getApplicationContext() {
16+
return getApplication().getApplicationContext();
17+
}
18+
}

androidlibrary_lib/src/main/java/org/opendatakit/builder/InitializationUtil.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ public class InitializationUtil {
5454

5555
private static final String TAG = "InitializationUtil";
5656

57+
private static final String CSV = "csv";
58+
private static final String PROPERTIES = "properties";
59+
5760
private Context appContext;
5861
private InitializationSupervisor supervisor;
5962
private String appName;
@@ -455,21 +458,21 @@ private void initTables(final InitializationOutcome pendingOutcome)
455458
// get past the file separator
456459
String csvFilename = filename.substring(assetsCsvDirPath.length() + 1);
457460
String[] terms = csvFilename.split("\\.");
458-
if (terms.length == 2 && terms[1].equals("csv")) {
461+
if (terms.length == 2 && terms[1].equals(CSV)) {
459462
String tableId = terms[0];
460463
String fileQualifier = null;
461464
request = new ImportRequest(tableId, fileQualifier);
462-
} else if (terms.length == 3 && terms[1].equals("properties") && terms[2]
463-
.equals("csv")) {
465+
} else if (terms.length == 3 && terms[1].equals(PROPERTIES) && terms[2]
466+
.equals(CSV)) {
464467
String tableId = terms[0];
465468
String fileQualifier = null;
466469
request = new ImportRequest(tableId, fileQualifier);
467-
} else if (terms.length == 3 && terms[2].equals("csv")) {
470+
} else if (terms.length == 3 && terms[2].equals(CSV)) {
468471
String tableId = terms[0];
469472
String fileQualifier = terms[1];
470473
request = new ImportRequest(tableId, fileQualifier);
471-
} else if (terms.length == 4 && terms[2].equals("properties") && terms[3]
472-
.equals("csv")) {
474+
} else if (terms.length == 4 && terms[2].equals(PROPERTIES) && terms[3]
475+
.equals(CSV)) {
473476
String tableId = terms[0];
474477
String fileQualifier = terms[1];
475478
request = new ImportRequest(tableId, fileQualifier);

androidlibrary_lib/src/main/java/org/opendatakit/consts/CharsetConsts.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package org.opendatakit.consts;
1616

1717
import java.nio.charset.Charset;
18+
import java.nio.charset.StandardCharsets;
1819

1920
/**
2021
* Added to suppress warnings about Charsets.UTF_8 deprecation
@@ -23,5 +24,5 @@
2324
*/
2425

2526
public class CharsetConsts {
26-
public static final Charset UTF_8 = Charset.forName("UTF-8");
27+
public static final Charset UTF_8 = StandardCharsets.UTF_8;
2728
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
package org.opendatakit.consts;
2+
3+
/**
4+
* Created by love on 14/10/21.
5+
*/
6+
7+
public class SqliteConsts {
8+
9+
public static final String ABORT = "ABORT";
10+
public static final String ACTION = "ACTION";
11+
public static final String ADD = "ADD";
12+
public static final String AFTER = "AFTER";
13+
public static final String ALL = "ALL";
14+
public static final String ALTER = "ALTER";
15+
public static final String ANALYZE = "ANALYZE";
16+
public static final String AND = "AND";
17+
public static final String AS = "AS";
18+
public static final String ASC = "ASC";
19+
public static final String ATTACH = "ATTACH";
20+
public static final String AUTOINCREMENT = "AUTOINCREMENT";
21+
public static final String BEFORE = "BEFORE";
22+
public static final String BEGIN = "BEGIN";
23+
public static final String BETWEEN = "BETWEEN";
24+
public static final String BY = "BY";
25+
public static final String CASCADE = "CASCADE";
26+
public static final String CASE = "CASE";
27+
public static final String CAST = "CAST";
28+
public static final String CHECK = "CHECK";
29+
public static final String COLLATE = "COLLATE";
30+
public static final String COLUMN = "COLUMN";
31+
public static final String COMMIT = "COMMIT";
32+
public static final String CONFLICT = "CONFLICT";
33+
public static final String CONSTRAINT = "CONSTRAINT";
34+
public static final String CREATE = "CREATE";
35+
public static final String CROSS = "CROSS";
36+
public static final String CURRENT_DATE = "CURRENT_DATE";
37+
public static final String CURRENT_TIME = "CURRENT_TIME";
38+
public static final String CURRENT_TIMESTAMP = "CURRENT_TIMESTAMP";
39+
public static final String DATABASE = "DATABASE";
40+
public static final String DEFAULT = "DEFAULT";
41+
public static final String DEFERRABLE = "DEFERRABLE";
42+
public static final String DEFERRED = "DEFERRED";
43+
public static final String DELETE = "DELETE";
44+
public static final String DESC = "DESC";
45+
public static final String DETACH = "DETACH";
46+
public static final String DISTINCT = "DISTINCT";
47+
public static final String DROP = "DROP";
48+
public static final String EACH = "EACH";
49+
public static final String ELSE = "ELSE";
50+
public static final String END = "END";
51+
public static final String ESCAPE = "ESCAPE";
52+
public static final String EXCEPT = "EXCEPT";
53+
public static final String EXCLUSIVE = "EXCLUSIVE";
54+
public static final String EXISTS = "EXISTS";
55+
public static final String EXPLAIN = "EXPLAIN";
56+
public static final String FAIL = "FAIL";
57+
public static final String FOR = "FOR";
58+
public static final String FOREIGN = "FOREIGN";
59+
public static final String FROM = "FROM";
60+
public static final String FULL = "FULL";
61+
public static final String GLOB = "GLOB";
62+
public static final String GROUP = "GROUP";
63+
public static final String HAVING = "HAVING";
64+
public static final String IF = "IF";
65+
public static final String IGNORE = "IGNORE";
66+
public static final String IMMEDIATE = "IMMEDIATE";
67+
public static final String IN = "IN";
68+
public static final String INDEX = "INDEX";
69+
public static final String INDEXED = "INDEXED";
70+
public static final String INITIALLY = "INITIALLY";
71+
public static final String INNER = "INNER";
72+
public static final String INSERT = "INSERT";
73+
public static final String INSTEAD = "INSTEAD";
74+
public static final String INTERSECT = "INTERSECT";
75+
public static final String INTO = "INTO";
76+
public static final String IS = "IS";
77+
public static final String ISNULL = "ISNULL";
78+
public static final String JOIN = "JOIN";
79+
public static final String KEY = "KEY";
80+
public static final String LEFT = "LEFT";
81+
public static final String LIKE = "LIKE";
82+
public static final String LIMIT = "LIMIT";
83+
public static final String MATCH = "MATCH";
84+
public static final String NATURAL = "NATURAL";
85+
public static final String NO = "NO";
86+
public static final String NOT = "NOT";
87+
public static final String NOTNULL = "NOTNULL";
88+
public static final String NULL = "NULL";
89+
public static final String OF = "OF";
90+
public static final String OFFSET = "OFFSET";
91+
public static final String ON = "ON";
92+
public static final String OR = "OR";
93+
public static final String ORDER = "ORDER";
94+
public static final String OUTER = "OUTER";
95+
public static final String PLAN = "PLAN";
96+
public static final String PRAGMA = "PRAGMA";
97+
public static final String PRIMARY = "PRIMARY";
98+
public static final String QUERY = "QUERY";
99+
public static final String RAISE = "RAISE";
100+
public static final String REFERENCES = "REFERENCES";
101+
public static final String REGEXP = "REGEXP";
102+
public static final String REINDEX = "REINDEX";
103+
public static final String RELEASE = "RELEASE";
104+
public static final String RENAME = "RENAME";
105+
public static final String REPLACE = "REPLACE";
106+
public static final String RESTRICT = "RESTRICT";
107+
public static final String RIGHT = "RIGHT";
108+
public static final String ROLLBACK = "ROLLBACK";
109+
public static final String ROW = "ROW";
110+
public static final String SAVEPOINT = "SAVEPOINT";
111+
public static final String SELECT = "SELECT";
112+
public static final String SET = "SET";
113+
public static final String TABLE = "TABLE";
114+
public static final String TEMP = "TEMP";
115+
public static final String TEMPORARY = "TEMPORARY";
116+
public static final String THEN = "THEN";
117+
public static final String TO = "TO";
118+
public static final String TRANSACTION = "TRANSACTION";
119+
public static final String TRIGGER = "TRIGGER";
120+
public static final String UNION = "UNION";
121+
public static final String UNIQUE = "UNIQUE";
122+
public static final String UPDATE = "UPDATE";
123+
public static final String USING = "USING";
124+
public static final String VACUUM = "VACUUM";
125+
public static final String VALUES = "VALUES";
126+
public static final String VIEW = "VIEW";
127+
public static final String VIRTUAL = "VIRTUAL";
128+
public static final String WHEN = "WHEN";
129+
public static final String WHERE = "WHERE";
130+
}

androidlibrary_lib/src/main/java/org/opendatakit/fragment/AlertNProgessMsgFragmentMger.java

+4
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,10 @@ public boolean hasDialogBeenCreated() {
191191
return false;
192192
}
193193

194+
public DialogState getDialogState() {
195+
return mDialogState;
196+
}
197+
194198
public void clearDialogsAndRetainCurrentState(FragmentManager fragmentManager) {
195199
if (fragmentManager == null) {
196200
throw new IllegalArgumentException("FragmentManager cannot be null");

androidlibrary_lib/src/main/java/org/opendatakit/fragment/ProgressDialogFragment.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ public class ProgressDialogFragment extends DialogFragment
5353
* implement this interface in order to receive event callbacks.
5454
*/
5555
public interface ProgressDialogListener {
56-
public void onProgressDialogPositiveButtonClick(ProgressDialogFragment dialog);
56+
void onProgressDialogPositiveButtonClick(ProgressDialogFragment dialog);
5757

58-
public void onProgressDialogNegativeButtonClick(ProgressDialogFragment dialog);
58+
void onProgressDialogNegativeButtonClick(ProgressDialogFragment dialog);
5959

60-
public void onProgressDialogNeutralButtonClick(ProgressDialogFragment dialog);
60+
void onProgressDialogNeutralButtonClick(ProgressDialogFragment dialog);
6161
}
6262

6363
public static final String BUNDLE_KEY_TITLE = "PDF_title";

0 commit comments

Comments
 (0)