package org.vaadin.viritin.util;
import com.vaadin.server.VaadinRequest;
import org.vaadin.viritin.util.VaadinLocale.LocaleNegotiationStrategey;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
public class Java7LocaleNegotiationStrategy implements
LocaleNegotiationStrategey {
@Override
public Locale negotiate(final List<Locale> supportedLocales,
VaadinRequest vaadinRequest) {
String languages = vaadinRequest.getHeader("Accept-Language");
ArrayList<Locale> preferredArray = new ArrayList<>(
supportedLocales);
if (languages != null) {
final String[] priorityList = languages.split(",");
Collections.sort(preferredArray, new Comparator<Locale>() {
@Override
public int compare(Locale o1, Locale o2) {
int pos1 = supportedLocales.size(), pos2 = supportedLocales
.size();
for (int i = 0; i < priorityList.length; i++) {
String lang = priorityList[i].split("[_;-]")[0].trim();
if (lang.equals(o1.getLanguage())) {
pos1 = i;
}
if (lang.equals(o2.getLanguage())) {
pos2 = i;
}
}
return pos1 - pos2;
}
});
}
return preferredArray.get(0);
}
}