aboutsummaryrefslogtreecommitdiff
path: root/java/src/com/android/i18n/addressinput/StandardAddressVerifier.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/i18n/addressinput/StandardAddressVerifier.java')
-rw-r--r--java/src/com/android/i18n/addressinput/StandardAddressVerifier.java346
1 files changed, 173 insertions, 173 deletions
diff --git a/java/src/com/android/i18n/addressinput/StandardAddressVerifier.java b/java/src/com/android/i18n/addressinput/StandardAddressVerifier.java
index fccb24b..1b547c1 100644
--- a/java/src/com/android/i18n/addressinput/StandardAddressVerifier.java
+++ b/java/src/com/android/i18n/addressinput/StandardAddressVerifier.java
@@ -39,200 +39,200 @@ import java.util.Map;
*/
public class StandardAddressVerifier {
- protected final FieldVerifier mRootVerifier;
-
- protected final VerifierRefiner mRefiner;
-
- protected final Map<AddressField, List<AddressProblemType>> mProblemMap;
-
- /**
- * Uses the rootVerifier and {@link #DEFAULT_REFINER} to perform the standard checks on the
- * address fields, as defined in {@link StandardChecks}.
- */
- public StandardAddressVerifier(FieldVerifier rootVerifier) {
- this(rootVerifier, DEFAULT_REFINER, StandardChecks.PROBLEM_MAP);
- }
-
- /**
- * Uses the rootVerifier and the refiner to perform the standard checks on the address fields,
- * as defined in {@link StandardChecks}.
- */
- public StandardAddressVerifier(FieldVerifier rootVerifier, VerifierRefiner refiner) {
- this(rootVerifier, refiner, StandardChecks.PROBLEM_MAP);
- }
-
- /**
- * Uses the rootVerifier and {@link #DEFAULT_REFINER} to perform the given checks on the address
- * fields. A reference to problemMap is maintained. It is not modified by this class, and should
- * not be modified subsequent to this call.
- */
- public StandardAddressVerifier(FieldVerifier rootVerifier,
- Map<AddressField, List<AddressProblemType>> problemMap) {
- this(rootVerifier, DEFAULT_REFINER, problemMap);
+ protected final FieldVerifier rootVerifier;
+
+ protected final VerifierRefiner refiner;
+
+ protected final Map<AddressField, List<AddressProblemType>> problemMap;
+
+ /**
+ * Uses the rootVerifier and {@link #DEFAULT_REFINER} to perform the standard checks on the
+ * address fields, as defined in {@link StandardChecks}.
+ */
+ public StandardAddressVerifier(FieldVerifier rootVerifier) {
+ this(rootVerifier, DEFAULT_REFINER, StandardChecks.PROBLEM_MAP);
+ }
+
+ /**
+ * Uses the rootVerifier and the refiner to perform the standard checks on the address fields,
+ * as defined in {@link StandardChecks}.
+ */
+ public StandardAddressVerifier(FieldVerifier rootVerifier, VerifierRefiner refiner) {
+ this(rootVerifier, refiner, StandardChecks.PROBLEM_MAP);
+ }
+
+ /**
+ * Uses the rootVerifier and {@link #DEFAULT_REFINER} to perform the given checks on the address
+ * fields. A reference to problemMap is maintained. It is not modified by this class, and should
+ * not be modified subsequent to this call.
+ */
+ public StandardAddressVerifier(FieldVerifier rootVerifier,
+ Map<AddressField, List<AddressProblemType>> problemMap) {
+ this(rootVerifier, DEFAULT_REFINER, problemMap);
+ }
+
+ /**
+ * Uses the rootVerifier and the refiner to perform the given checks on the address fields. A
+ * reference to problemMap is maintained. It is not modified by this class, and should not be
+ * modified subsequent to this call.
+ */
+ public StandardAddressVerifier(FieldVerifier rootVerifier, VerifierRefiner refiner,
+ Map<AddressField, List<AddressProblemType>> problemMap) {
+ this.rootVerifier = rootVerifier;
+ this.refiner = refiner;
+ this.problemMap = StandardChecks.PROBLEM_MAP;
+ }
+
+ public void verify(AddressData address, AddressProblems problems) {
+ NotifyingListener listener = new NotifyingListener(this);
+ verifyAsync(address, problems, listener);
+ try {
+ listener.waitLoadingEnd();
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
}
-
- /**
- * Uses the rootVerifier and the refiner to perform the given checks on the address fields. A
- * reference to problemMap is maintained. It is not modified by this class, and should not be
- * modified subsequent to this call.
- */
- public StandardAddressVerifier(FieldVerifier rootVerifier, VerifierRefiner refiner,
- Map<AddressField, List<AddressProblemType>> problemMap) {
- mRootVerifier = rootVerifier;
- mRefiner = refiner;
- mProblemMap = StandardChecks.PROBLEM_MAP;
+ }
+
+ public void verifyAsync(AddressData address, AddressProblems problems,
+ DataLoadListener listener) {
+ Thread verifier = new Thread(new Verifier(address, problems, listener));
+ verifier.start();
+ }
+
+ private class Verifier implements Runnable {
+ private AddressData address;
+ private AddressProblems problems;
+ private DataLoadListener listener;
+
+ Verifier(AddressData address, AddressProblems problems, DataLoadListener listener) {
+ address = address;
+ problems = problems;
+ listener = listener;
}
- public void verify(AddressData address, AddressProblems problems) {
- NotifyingListener listener = new NotifyingListener(this);
- verifyAsync(address, problems, listener);
- try {
- listener.waitLoadingEnd();
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- }
-
- public void verifyAsync(AddressData address, AddressProblems problems,
- DataLoadListener listener) {
- Thread verifier = new Thread(new Verifier(address, problems, listener));
- verifier.start();
- }
+ @Override
+ public void run() {
+ listener.dataLoadingBegin();
- private class Verifier implements Runnable {
- private AddressData mAddress;
- private AddressProblems mProblems;
- private DataLoadListener mListener;
+ FieldVerifier v = rootVerifier;
- Verifier(AddressData address, AddressProblems problems, DataLoadListener listener) {
- mAddress = address;
- mProblems = problems;
- mListener = listener;
+ ScriptType script = null;
+ if (address.getLanguageCode() != null) {
+ if (Util.isExplicitLatinScript(address.getLanguageCode())) {
+ script = ScriptType.LATIN;
+ } else {
+ script = ScriptType.LOCAL;
}
-
- @Override
- public void run() {
- mListener.dataLoadingBegin();
-
- FieldVerifier v = mRootVerifier;
-
- ScriptType script = null;
- if (mAddress.getLanguageCode() != null) {
- if (Util.isExplicitLatinScript(mAddress.getLanguageCode())) {
- script = ScriptType.LATIN;
- } else {
- script = ScriptType.LOCAL;
- }
- }
-
- // The first four calls refine the verifier, so must come first, and in this
- // order.
- verifyField(script, v, COUNTRY, mAddress.getPostalCountry(), mProblems);
- if (mProblems.isEmpty()) {
- v = v.refineVerifier(mAddress.getPostalCountry());
- verifyField(script, v, ADMIN_AREA, mAddress.getAdministrativeArea(), mProblems);
- if (mProblems.isEmpty()) {
- v = v.refineVerifier(mAddress.getAdministrativeArea());
- verifyField(script, v, LOCALITY, mAddress.getLocality(), mProblems);
- if (mProblems.isEmpty()) {
- v = v.refineVerifier(mAddress.getLocality());
- verifyField(script, v, DEPENDENT_LOCALITY,
- mAddress.getDependentLocality(), mProblems);
- if (mProblems.isEmpty()) {
- v = v.refineVerifier(mAddress.getDependentLocality());
- }
- }
- }
+ }
+
+ // The first four calls refine the verifier, so must come first, and in this
+ // order.
+ verifyField(script, v, COUNTRY, address.getPostalCountry(), problems);
+ if (problems.isEmpty()) {
+ v = v.refineVerifier(address.getPostalCountry());
+ verifyField(script, v, ADMIN_AREA, address.getAdministrativeArea(), problems);
+ if (problems.isEmpty()) {
+ v = v.refineVerifier(address.getAdministrativeArea());
+ verifyField(script, v, LOCALITY, address.getLocality(), problems);
+ if (problems.isEmpty()) {
+ v = v.refineVerifier(address.getLocality());
+ verifyField(script, v, DEPENDENT_LOCALITY,
+ address.getDependentLocality(), problems);
+ if (problems.isEmpty()) {
+ v = v.refineVerifier(address.getDependentLocality());
}
+ }
+ }
+ }
- String street = Util.joinAndSkipNulls("\n", mAddress.getAddressLine1(),
- mAddress.getAddressLine2());
+ String street = Util.joinAndSkipNulls("\n", address.getAddressLine1(),
+ address.getAddressLine2());
- // remaining calls don't change the field verifier
- verifyField(script, v, POSTAL_CODE, mAddress.getPostalCode(), mProblems);
- verifyField(script, v, STREET_ADDRESS, street, mProblems);
- verifyField(script, v, SORTING_CODE, mAddress.getSortingCode(), mProblems);
- verifyField(script, v, ORGANIZATION, mAddress.getOrganization(), mProblems);
- verifyField(script, v, RECIPIENT, mAddress.getRecipient(), mProblems);
+ // remaining calls don't change the field verifier
+ verifyField(script, v, POSTAL_CODE, address.getPostalCode(), problems);
+ verifyField(script, v, STREET_ADDRESS, street, problems);
+ verifyField(script, v, SORTING_CODE, address.getSortingCode(), problems);
+ verifyField(script, v, ORGANIZATION, address.getOrganization(), problems);
+ verifyField(script, v, RECIPIENT, address.getRecipient(), problems);
- postVerify(v, mAddress, mProblems);
+ postVerify(v, address, problems);
- mListener.dataLoadingEnd();
- }
+ listener.dataLoadingEnd();
}
-
- /**
- * Hook to perform any final processing using the final verifier. Default does no additional
- * verification.
- */
- protected void postVerify(FieldVerifier verifier, AddressData address,
- AddressProblems problems) {
+ }
+
+ /**
+ * Hook to perform any final processing using the final verifier. Default does no additional
+ * verification.
+ */
+ protected void postVerify(FieldVerifier verifier, AddressData address,
+ AddressProblems problems) {
+ }
+
+ /**
+ * Hook called by verify with each verifiable field, in order. Override to provide pre- or
+ * post-checks for all fields.
+ */
+ protected boolean verifyField(LookupKey.ScriptType script,
+ FieldVerifier verifier, AddressField field, String value,
+ AddressProblems problems) {
+ Iterator<AddressProblemType> iter = getProblemIterator(field);
+ while (iter.hasNext()) {
+ AddressProblemType prob = iter.next();
+ if (!verifyProblemField(script, verifier, prob, field, value, problems)) {
+ return false;
+ }
}
-
- /**
- * Hook called by verify with each verifiable field, in order. Override to provide pre- or
- * post-checks for all fields.
- */
- protected boolean verifyField(LookupKey.ScriptType script,
- FieldVerifier verifier, AddressField field, String value,
- AddressProblems problems) {
- Iterator<AddressProblemType> iter = getProblemIterator(field);
- while (iter.hasNext()) {
- AddressProblemType prob = iter.next();
- if (!verifyProblemField(script, verifier, prob, field, value, problems)) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Hook for on-the-fly modification of the problem list. Override to change the problems to
- * check for a particular field. Generally, changing the problemMap passed to the constructor
- * is a better approach.
- */
- protected Iterator<AddressProblemType> getProblemIterator(AddressField field) {
- List<AddressProblemType> list = mProblemMap.get(field);
- if (list == null) {
- list = Collections.emptyList();
- }
- return list.iterator();
+ return true;
+ }
+
+ /**
+ * Hook for on-the-fly modification of the problem list. Override to change the problems to
+ * check for a particular field. Generally, changing the problemMap passed to the constructor
+ * is a better approach.
+ */
+ protected Iterator<AddressProblemType> getProblemIterator(AddressField field) {
+ List<AddressProblemType> list = problemMap.get(field);
+ if (list == null) {
+ list = Collections.emptyList();
}
+ return list.iterator();
+ }
+
+ /**
+ * Hook for adding special checks for particular problems and/or fields.
+ */
+ protected boolean verifyProblemField(LookupKey.ScriptType script,
+ FieldVerifier verifier, AddressProblemType problem, AddressField field,
+ String datum, AddressProblems problems) {
+ return verifier.check(script, problem, field, datum, problems);
+ }
+
+ /**
+ * This gets called with the hierarchical fields COUNTRY, ADMIN_AREA, LOCALITY,
+ * DEPENDENT_LOCALITY in order, returning the refined verifier at each step.
+ *
+ * <p>The default implementation is stateless, and delegates to the verifier to do the
+ * refinement.
+ */
+ public static class VerifierRefiner {
/**
- * Hook for adding special checks for particular problems and/or fields.
+ * Refines the verifier. This delegates to the verifier to perform the refinement.
*/
- protected boolean verifyProblemField(LookupKey.ScriptType script,
- FieldVerifier verifier, AddressProblemType problem, AddressField field,
- String datum, AddressProblems problems) {
- return verifier.check(script, problem, field, datum, problems);
+ public FieldVerifier refineVerifier(FieldVerifier v, AddressField field,
+ String subkey) {
+ return v.refineVerifier(subkey);
}
/**
- * This gets called with the hierarchical fields COUNTRY, ADMIN_AREA, LOCALITY,
- * DEPENDENT_LOCALITY in order, returning the refined verifier at each step.
- *
- * <p>The default implementation is stateless, and delegates to the verifier to do the
- * refinement.
+ * Returns a clean version of the refiner. Since this implementation is stateless, returns
+ * this.
*/
- public static class VerifierRefiner {
-
- /**
- * Refines the verifier. This delegates to the verifier to perform the refinement.
- */
- public FieldVerifier refineVerifier(FieldVerifier v, AddressField field,
- String subkey) {
- return v.refineVerifier(subkey);
- }
-
- /**
- * Returns a clean version of the refiner. Since this implementation is stateless, returns
- * this.
- */
- public VerifierRefiner newInstance() {
- return this;
- }
+ public VerifierRefiner newInstance() {
+ return this;
}
+ }
- private static final VerifierRefiner DEFAULT_REFINER = new VerifierRefiner();
+ private static final VerifierRefiner DEFAULT_REFINER = new VerifierRefiner();
}