package adapters.sharing; import android.content.Context; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import model.DaoDBHelper; import model.daoModels.Language; import model.daoModels.LanguageLocale; import model.daoModels.Project; import model.daoModels.Version; /** * Created by Fechner on 12/11/15. */ public class SharingLanguageViewModel implements Comparable<SharingLanguageViewModel> { private String title; private List<Version> versions = new ArrayList<>(); public SharingLanguageViewModel(String title, List<Version> versions) { this.versions = versions; this.title = title; } public List<Version> getVersions() { return versions; } public String getTitle() { return title; } @Override public int compareTo(SharingLanguageViewModel another) { return this.title.compareTo(another.getTitle()); } public static List<SharingLanguageViewModel> createViewModels(Context context, Project[] projects) { Map<String, List<Version>> versionMap = new HashMap<>(); for (Project project : projects) { for(Language language : project.getLanguages()){ if(!versionMap.containsKey(language.getLanguageAbbreviation())){ versionMap.put(language.getLanguageAbbreviation(), new ArrayList<Version>()); } for(Version version : language.getVersions()){ if(version.isDownloaded()) { versionMap.get(language.getLanguageAbbreviation()).add(version); } } } } List<SharingLanguageViewModel> models = new ArrayList<>(); for (Map.Entry<String, List<Version>> entry : versionMap.entrySet()) { if(entry.getValue().size() > 0) { models.add(new SharingLanguageViewModel(getTitle(context, entry.getKey()), entry.getValue())); } } Collections.sort(models); return models; } private static String getTitle(Context context, String abbreviation){ return getLanguageName(context, abbreviation) + " (" + abbreviation + ")"; } private static String getLanguageName(Context context, String abbreviation){ LanguageLocale languageLocale = LanguageLocale.getLocalForKey(abbreviation, DaoDBHelper.getDaoSession(context)); return (languageLocale != null)? languageLocale.getLanguageName() : ""; } }