Aktywne Wpisy
SaintWykopek +443
Kto miał taką latarkę plusuje
frow +65
Debile dali za mało kratek do pytania, ale sobie poradziłem. Za to potrzebuję pomocy z hasłem "lokal z zalanymi majtkami". Ktoś pomoże? :/
#heheszki
#heheszki
Aplikacja Rest, java, spring.
Dostaje w headerze "Accept-Language" - na jego podstawie ustalam główny obsługiwany język naszej przeglądarki.
Potem wyciągam z bazy danych wszystkie języki obsługiwane przez moją aplikacje, mapuję na mój model restowy i chcę ustawić w mojej liście języków ustawić który element jest aktualnym językiem.
główna metodamapująca:
public static List mapFromSupportedLanguagesEntitiesAndSetActualLanguage(
List supportedLanguagesEntities, String actualLanguage) {
List supportedLanguagesList = new ArrayList<>();
for (SupportedLanguagesEntity supportedLanguagesEntity : supportedLanguagesEntities){
SupportedLanguages supportedLanguages = mapFromSupportedLanguagesEntity(supportedLanguagesEntity);
supportedLanguagesList.add(supportedLanguages);
}
setActualLanguage(supportedLanguagesList, actualLanguage);
return supportedLanguagesList;
}
metodaustawiająca flagę:
private static void setActualLanguage(List supportedLanguagesList, String actualLanguage) {
boolean actualLanguageExist = supportedLanguagesList.stream().anyMatch(s -> actualLanguage.equalsIgnoreCase(s.getIdentity()));
if (actualLanguageExist) {
for(SupportedLanguages supportedLanguages : supportedLanguagesList) {
if (actualLanguage.equalsIgnoreCase(supportedLanguages.getIdentity())) {
supportedLanguages.setActualLanguage(true);
}
}
} else {
for(SupportedLanguages supportedLanguages : supportedLanguagesList) {
if ("EN".equalsIgnoreCase(supportedLanguages.getIdentity())) {
supportedLanguages.setActualLanguage(true);
}
}
}
}
Pytanie jak ładniej napisać drugą metodę, nie podoba mi się że muszę trzykrotnie przelecieć po całej liście i interesuje mnie jakieś lepsze rozwiązanie(jesli jest).
PS. Jest dla javy jakis serwis gdzie mogę wrzucić kod który automatycznie sie tam sformatuje i nie trzeba go uruchamiać?
#java #naukaprogramowania
@dinor913: github ma gist
boolean actualLanguageExist = supportedLanguagesList.stream().anyMatch(s -> actualLanguage.equalsIgnoreCase(s.getIdentity()));
if (actualLanguageExist) {
for(SupportedLanguages supportedLanguages : supportedLanguagesList) {
if (actualLanguage.equalsIgnoreCase(supportedLanguages.getIdentity())) {
supportedLanguages.setActualLanguage(true);
}
Albo źle widzę klamry, albo całą tą metodę można zwinąć do:
https://gist.github.com/mtszpater/ee8981d3a59af604ca6b6c4f1b57818a
(nie patrz na nawiasy, bo moga byc #!$%@?)
SupportedLanguage actualLang = langMap.get(actualLanguage);
if (actualLang != null) {
actualLang.setActualLanguage(true);
} else {
langMap.get("en").setActualLanguage(true);
}
1.Muszę użyć pętli aby utworzyć mapy z odpowiednim kluczem.
2.Klucze muszą być odporne na wielkość liter więc musiał bym mieć w mapie mieć getIgnoreCase...
(można samemu stworzyć taką mapę)
ad 1) nie, nie musisz.
ad 2) Czemu muszą być odporne? Kto ustawia header w rządaniu HTTP?
Wrzucam na gist kod teraz lepiej wygląda.
Ominąłeś drugi warunek czyli ustaw jezyk EN jako podstawowy jeśli żadnego nie znajdzie.
https://gist.github.com/anonymous/4d7d4f05feb02aff5015eb6f2c92cac2
Oraz stworzyłem wersję która mnie zadowala
https://gist.github.com/anonymous/be15d40d27f5a9f1d808d8f64120a961
1.Faktycznie mój błąd.
2.Uczono mnie że nie powinienem polegać na tym że obiekt zawsze będzie taki i taki i powinienem zapobiegać tego typu poprzez rożnego rodzaju walidacje - w tym przypadku ignoreCase.
Co sądzisz o tego typu zabezpieczeniach programu że np mamy w bazie danych wartości z małych liter i z hedera też dostajemy wartość z małych liter a i tak chcemy sie zabezpieczyć poprzez użycie ignoreCase.
nadgorliwość? czy może
Ale w tym przypadku zadałem pytanie - kto ustawia wartość headera? Tag language jest case-insensitive, więc jeśli to zawsze Ty (czy podmiot nad którym masz pełną kontrolę) ustawia ten tag, to możesz śmiało przyjąć, że np. zawsze będzie pisany wielkimi literami -> dzięki temu odpadnie Ci sprawdzanie, ot, jak ktoś wyśle małymi, to mu