1e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com/*
2e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * Copyright (C) 2010 Google Inc.
3e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com *
4e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * Licensed under the Apache License, Version 2.0 (the "License");
5e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * you may not use this file except in compliance with the License.
6e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * You may obtain a copy of the License at
7e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com *
8e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * http://www.apache.org/licenses/LICENSE-2.0
9e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com *
10e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * Unless required by applicable law or agreed to in writing, software
11e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * distributed under the License is distributed on an "AS IS" BASIS,
12e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * See the License for the specific language governing permissions and
14e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * limitations under the License.
15e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com */
16e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com
175a389e2e67cc4db5232a7f9decfe8ffe88deabcblararennie@google.compackage com.android.i18n.addressinput;
18e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com
19e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.comimport java.util.HashMap;
205a389e2e67cc4db5232a7f9decfe8ffe88deabcblararennie@google.comimport java.util.Map;
21e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com
22e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com/**
23e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com * This structure keeps track of any errors found when validating the AddressData.
24e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com */
25e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.compublic class AddressProblems {
26fc91e8f34cd7c8c3eca9e4eeedca36c7f302d266lararennie@google.com
27e9664fb4251726db44bec0751f77026e23ce71bbshaopengjia@google.com    private Map<AddressField, AddressProblemType> mProblems =
28e9664fb4251726db44bec0751f77026e23ce71bbshaopengjia@google.com        new HashMap<AddressField, AddressProblemType>();
29e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com
302c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    /**
312c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     * Only one address problem type is saved per addressField. Address field as used here refers to
322c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     * the different data parts in the AddressData class.
332c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     */
34dc4cdad9dd71a57be66262d1d6d46a09c0973818lararennie@google.com    void add(AddressField addressField, AddressProblemType problem) {
3537ea1c8bb9bf0ee18a9ce7412ace03885098e348lararennie@google.com        mProblems.put(addressField, problem);
362c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    }
37e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com
382c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    /**
392c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     * Returns true if no problems have been added.
402c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     */
412c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    public boolean isEmpty() {
4237ea1c8bb9bf0ee18a9ce7412ace03885098e348lararennie@google.com        return mProblems.isEmpty();
432c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    }
44fc91e8f34cd7c8c3eca9e4eeedca36c7f302d266lararennie@google.com
451e17a681ee8e5566384ead1588f6e6c4c8aa333aroubert@google.com    @Override
462c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    public String toString() {
4737ea1c8bb9bf0ee18a9ce7412ace03885098e348lararennie@google.com        return mProblems.toString();
482c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    }
49fc91e8f34cd7c8c3eca9e4eeedca36c7f302d266lararennie@google.com
502c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    public void clear() {
5137ea1c8bb9bf0ee18a9ce7412ace03885098e348lararennie@google.com        mProblems.clear();
522c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    }
53fc91e8f34cd7c8c3eca9e4eeedca36c7f302d266lararennie@google.com
542c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    /**
552c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     * Returns null if no problems exists.
562c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     */
572c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    public AddressProblemType getProblem(AddressField addressField) {
5837ea1c8bb9bf0ee18a9ce7412ace03885098e348lararennie@google.com        return mProblems.get(addressField);
592c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    }
602c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com
612c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    /**
622c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     * This will return an empty map if there are no problems.
632c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     */
642c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    public Map<AddressField, AddressProblemType> getProblems() {
6537ea1c8bb9bf0ee18a9ce7412ace03885098e348lararennie@google.com        return mProblems;
662c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    }
67e46b341d4723dea4c7647eee7ef269ddeef6bebfjeanine@google.com}
68