diff --git a/android/RapidInventorySystem/app/src/main/java/lc/ris/android/BarcodeBroker.java b/android/RapidInventorySystem/app/src/main/java/lc/ris/android/BarcodeBroker.java
index 9a20f4d4a2fa9ddf4d917be6d70cfc2c21d0e3f2..67409ae20f09a5f6007cec0827cb08dc57cb998f 100644
--- a/android/RapidInventorySystem/app/src/main/java/lc/ris/android/BarcodeBroker.java
+++ b/android/RapidInventorySystem/app/src/main/java/lc/ris/android/BarcodeBroker.java
@@ -16,6 +16,9 @@ import java.util.WeakHashMap;
* getter on the activity, where they can register & unregister listeners as their lifecycle progresses. To
* protect against memory leaks, this implementation only holds weak references to receivers.
*
+ * Note that this class just transports the scanned transport; it is up to other code within RIS to make sense
+ * of the barcode and to decode the contents and associate it with an entityId.
+ *
* @author Alex Leigh
* @since mk1
*/
@@ -30,10 +33,10 @@ public class BarcodeBroker {
weakHashSet.remove(listener);
}
- public void publish(final String barcode) {
- Log.i("RIS", "Publishing barcode scan: " + barcode);
+ public void publish(final String scannedCode) {
+ Log.i("RIS", "Publishing barcode scan: " + scannedCode);
for (BarcodeListener listener : weakHashSet) {
- listener.receiveBarcode(barcode);
+ listener.receiveBarcode(scannedCode);
}
}
}
diff --git a/android/RapidInventorySystem/app/src/main/java/lc/ris/android/ScanBroadcastReceiver.java b/android/RapidInventorySystem/app/src/main/java/lc/ris/android/DataWedgeReceiver.java
similarity index 70%
rename from android/RapidInventorySystem/app/src/main/java/lc/ris/android/ScanBroadcastReceiver.java
rename to android/RapidInventorySystem/app/src/main/java/lc/ris/android/DataWedgeReceiver.java
index fdb3ed5fc13901943a2ee932ea26bd9305ce20b4..2db69f3273f27b3407d89c56ba70371a1efe8a62 100644
--- a/android/RapidInventorySystem/app/src/main/java/lc/ris/android/ScanBroadcastReceiver.java
+++ b/android/RapidInventorySystem/app/src/main/java/lc/ris/android/DataWedgeReceiver.java
@@ -5,10 +5,17 @@ import android.content.Context;
import android.content.Intent;
import android.util.Log;
-public class ScanBroadcastReceiver extends BroadcastReceiver {
+/**
+ * This class receives intent messages from the Zebra DataWedge application and uses that to process
+ * barcodes in the RIS application.
+ *
+ * @author Alex Leigh
+ * @since mk1
+ */
+public class DataWedgeReceiver extends BroadcastReceiver {
private final ScanFragment scanFragment;
- public ScanBroadcastReceiver(ScanFragment scanFragment) {
+ public DataWedgeReceiver(ScanFragment scanFragment) {
this.scanFragment = scanFragment;
}
@@ -17,7 +24,7 @@ public class ScanBroadcastReceiver extends BroadcastReceiver {
String action = intent.getAction();
if (action.equals(scanFragment.getResources().getString(R.string.activity_intent_filter_action))) {
try {
- displayScanResult(intent, "via Broadcast");
+ displayScanResult(intent);
} catch (Exception e) {
// Do nothing
}
@@ -28,10 +35,11 @@ public class ScanBroadcastReceiver extends BroadcastReceiver {
* This method is called when we receive a barcode scan from the Zebra DataWedge, which arrives
* via an Android intent.
*/
- private void displayScanResult(Intent initiatingIntent, String howDataReceived) {
+ private void displayScanResult(Intent initiatingIntent) {
// Every time we get a hardware scan, we clear the contents of the text box.
String decodedSource = initiatingIntent.getStringExtra(scanFragment.getResources().getString(R.string.datawedge_intent_key_source));
- String decodedData = initiatingIntent.getStringExtra(scanFragment.getResources().getString(R.string.datawedge_intent_key_data));
+ String decodedData = initiatingIntent.getStringExtra(
+ scanFragment.getResources().getString(R.string.datawedge_intent_key_data));
String decodedLabelType = initiatingIntent.getStringExtra(scanFragment.getResources().getString(R.string.datawedge_intent_key_label_type));
Log.i("RIS", "Received hardware scan: " + decodedData);
diff --git a/android/RapidInventorySystem/app/src/main/java/lc/ris/android/ItemFragment.java b/android/RapidInventorySystem/app/src/main/java/lc/ris/android/ItemFragment.java
index 3ab1819fd5c3c2d55a516387a05782e170c922b9..5cac8d6a9fa877e6e31dd3352ef5b7a8b2c2566c 100644
--- a/android/RapidInventorySystem/app/src/main/java/lc/ris/android/ItemFragment.java
+++ b/android/RapidInventorySystem/app/src/main/java/lc/ris/android/ItemFragment.java
@@ -47,8 +47,7 @@ public class ItemFragment extends Fragment implements BarcodeListener {
@Override
public void receiveBarcode(String barcode) {
RapidInventoryClient client = ((MainActivity) getActivity()).getRisClient();
- Entity entity = client.getEntity(barcode);
-
+ Entity entity = client.getInventoryStore().getEntity(barcode);
final EditText et = getView().findViewById(R.id.formEntityNameInput);
et.setText(entity.getEntityName());
}
diff --git a/android/RapidInventorySystem/app/src/main/java/lc/ris/android/ScanFragment.java b/android/RapidInventorySystem/app/src/main/java/lc/ris/android/ScanFragment.java
index 344f3278ce41cf8d9ebf18f126a6a43b375525c9..455c4244f70ab5c0484601b2b5a670eb11848bc7 100644
--- a/android/RapidInventorySystem/app/src/main/java/lc/ris/android/ScanFragment.java
+++ b/android/RapidInventorySystem/app/src/main/java/lc/ris/android/ScanFragment.java
@@ -22,7 +22,7 @@ import androidx.fragment.app.Fragment;
* @since mk1
*/
public class ScanFragment extends Fragment {
- private ScanBroadcastReceiver myBroadcastReceiver;
+ private DataWedgeReceiver myBroadcastReceiver;
public ScanFragment() {
// Required empty public constructor
@@ -33,7 +33,7 @@ public class ScanFragment extends Fragment {
IntentFilter filter = new IntentFilter();
filter.addCategory(Intent.CATEGORY_DEFAULT);
filter.addAction(getResources().getString(R.string.activity_intent_filter_action));
- myBroadcastReceiver = new ScanBroadcastReceiver(this);
+ myBroadcastReceiver = new DataWedgeReceiver(this);
getActivity().registerReceiver(myBroadcastReceiver, filter);
}
diff --git a/android/RapidInventorySystem/app/src/main/java/lc/ris/client/InventoryStore.java b/android/RapidInventorySystem/app/src/main/java/lc/ris/client/InventoryStore.java
new file mode 100644
index 0000000000000000000000000000000000000000..1b1f2f1ae7076631576ecdae47faddbab7940202
--- /dev/null
+++ b/android/RapidInventorySystem/app/src/main/java/lc/ris/client/InventoryStore.java
@@ -0,0 +1,18 @@
+package lc.ris.client;
+
+/**
+ * Classes implementing this interface provide access to a store of inventory information within the
+ * Rapid Inventory System.
+ *
+ * @author Alex Leigh
+ * @since mk1
+ */
+public interface InventoryStore {
+ Entity getEntity(final String entityId);
+
+ /**
+ * Attempt to locate an {@link Entity} based on a barcode scan. Where required this will attempt to decode the
+ * contents of the barcode.
+ */
+ Entity getEntityFromBarcode(final String scan);
+}
diff --git a/android/RapidInventorySystem/app/src/main/java/lc/ris/client/RAMInventoryStore.java b/android/RapidInventorySystem/app/src/main/java/lc/ris/client/RAMInventoryStore.java
new file mode 100644
index 0000000000000000000000000000000000000000..206d5988e59105117658d07a8f709889841e7f23
--- /dev/null
+++ b/android/RapidInventorySystem/app/src/main/java/lc/ris/client/RAMInventoryStore.java
@@ -0,0 +1,20 @@
+package lc.ris.client;
+
+/**
+ * This implementation of {@link InventoryStore} holds all of its information in RAM, and it most useful for
+ * debugging & test scenarios.
+ *
+ * @author Alex Leigh
+ * @since mk1
+ */
+public class RAMInventoryStore implements InventoryStore {
+ @Override
+ public Entity getEntity(String entityId) {
+ return new Entity(entityId, "Entity - " + entityId);
+ }
+
+ @Override
+ public Entity getEntityFromBarcode(String scan) {
+ return getEntity(scan);
+ }
+}
diff --git a/android/RapidInventorySystem/app/src/main/java/lc/ris/client/RapidInventoryClient.java b/android/RapidInventorySystem/app/src/main/java/lc/ris/client/RapidInventoryClient.java
index 09224dcfdcb82e7c075c858b540f99c803cdad1d..84177c16ad21a8960040d8597f06233fdfa2b2e5 100644
--- a/android/RapidInventorySystem/app/src/main/java/lc/ris/client/RapidInventoryClient.java
+++ b/android/RapidInventorySystem/app/src/main/java/lc/ris/client/RapidInventoryClient.java
@@ -13,9 +13,11 @@ import java.util.Objects;
*/
public class RapidInventoryClient {
private final String universe;
+ private final InventoryStore inventoryStore;
public RapidInventoryClient(String universe) {
this.universe = universe;
+ this.inventoryStore = new RAMInventoryStore();
}
@Override
@@ -38,7 +40,7 @@ public class RapidInventoryClient {
return Objects.hash(universe);
}
- public Entity getEntity(final String entityId) {
- return new Entity(entityId, "Test Object");
+ public InventoryStore getInventoryStore() {
+ return inventoryStore;
}
}
diff --git a/android/RapidInventorySystem/app/src/main/res/layout/fragment_item.xml b/android/RapidInventorySystem/app/src/main/res/layout/fragment_item.xml
index a78a6a13bb002e833b1c94e7b3824210f41ef1b7..338b97633c27e80924a4f4d9091bfaca4f2015cf 100644
--- a/android/RapidInventorySystem/app/src/main/res/layout/fragment_item.xml
+++ b/android/RapidInventorySystem/app/src/main/res/layout/fragment_item.xml
@@ -20,7 +20,7 @@
android:ems="10"
android:id="@+id/entityName"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@id/scanFragmentView"
+ app:layout_constraintTop_toBottomOf="@id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name" app:layout_constraintEnd_toEndOf="parent">
@@ -28,9 +28,35 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android/RapidInventorySystem/app/src/main/res/layout/fragment_scan.xml b/android/RapidInventorySystem/app/src/main/res/layout/fragment_scan.xml
index ff0f5131cb80066fb206fd34f21baecffcabc81c..acb749cab3c61c87eabd6d76f07722d3534ac3a4 100644
--- a/android/RapidInventorySystem/app/src/main/res/layout/fragment_scan.xml
+++ b/android/RapidInventorySystem/app/src/main/res/layout/fragment_scan.xml
@@ -28,6 +28,7 @@