| /* |
| * Copyright 2011 Google Inc. |
| * |
| * 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 com.google.gwt.i18n.server; |
| |
| import com.google.gwt.i18n.server.Message.AlternateFormMapping; |
| import com.google.gwt.i18n.shared.GwtLocale; |
| import com.google.gwt.i18n.shared.AlternateMessageSelector.AlternateForm; |
| |
| import java.util.Arrays; |
| import java.util.Iterator; |
| import java.util.List; |
| import java.util.Map; |
| |
| /** |
| * A {@link MessageTranslation} that is backed by a map, along with an ordered |
| * list of keys. |
| */ |
| class StringMapMessageTranslation |
| implements MessageTranslation { |
| |
| private final String defaultMessage; |
| private final List<String> forms; |
| private final Map<String, String> map; |
| private final GwtLocale locale; |
| |
| public StringMapMessageTranslation(String defaultMessage, |
| List<String> forms, Map<String, String> map, GwtLocale locale) { |
| this.defaultMessage = defaultMessage; |
| this.forms = forms; |
| this.map = map; |
| this.locale = locale; |
| } |
| |
| public Iterable<AlternateFormMapping> getAllMessageForms() { |
| return new Iterable<AlternateFormMapping>() { |
| protected final Iterator<String> iter = forms.iterator(); |
| |
| public Iterator<AlternateFormMapping> iterator() { |
| return new Iterator<AlternateFormMapping>() { |
| public boolean hasNext() { |
| return iter.hasNext(); |
| } |
| |
| public AlternateFormMapping next() { |
| String form = iter.next(); |
| return new AlternateFormMapping(Arrays.asList(new AlternateForm( |
| form, form)), map.get(form)); |
| } |
| |
| public void remove() { |
| throw new UnsupportedOperationException(); |
| } |
| }; |
| } |
| }; |
| } |
| |
| public String getDefaultMessage() { |
| return defaultMessage; |
| } |
| |
| public GwtLocale getMatchedLocale() { |
| return locale; |
| } |
| } |