/** * */ package org.lodder.subtools.sublibrary.settings; import java.util.ArrayList; import java.util.prefs.Preferences; import org.lodder.subtools.sublibrary.settings.model.MappingSettings; import org.lodder.subtools.sublibrary.settings.model.MappingTvdbScene; import org.lodder.subtools.sublibrary.xml.XMLMappingTvdbScene; /** * @author lodder * */ public class MappingSettingsControl { private MappingSettings mappingSettings; private Preferences preferences; public MappingSettingsControl(Preferences preferences) { setMappingSettings(new MappingSettings()); this.preferences = preferences; } /** * */ public void store() { int last = 0; for (int i = 0; i < mappingSettings.getMappingList().size(); i++) { preferences.put("Dictionary" + i, mappingSettings.getMappingList().get(i).getSceneName() + "\\\\" + mappingSettings.getMappingList().get(i).getTvdbId()); last++; } preferences.putInt("lastItemDictionary", last); preferences.putInt("mappingVersion", mappingSettings.getMappingVersion()); } public void load() { int last = preferences.getInt("lastItemDictionary", 0); mappingSettings.setMappingVersion(preferences.getInt("mappingVersion", 0)); for (int i = 0; i < last; i++) { int tvdbid = 0; String s = preferences.get("Dictionary" + i, ""); String[] items = s.split("\\\\"); if (items.length == 3) { if (items[2].length() != 0) { tvdbid = Integer.parseInt(items[2]); } } MappingTvdbScene item = new MappingTvdbScene(items[0], tvdbid); mappingSettings.getMappingList().add(item); } } public void updateMappingFromOnline() throws Throwable { /*int mappingVersion = XMLMappingTvdbScene.getMappingsVersionNumber(); if (mappingVersion > mappingSettings.getMappingVersion()) {*/ ArrayList<MappingTvdbScene> onlineList = XMLMappingTvdbScene.getOnlineMappingCollection(); if (mappingSettings.getMappingList().size() == 0) { mappingSettings.setMappingList(onlineList); } else { for (MappingTvdbScene onlineItem : onlineList) { boolean missing = true; for (int i = 0; i < mappingSettings.getMappingList().size(); i++) { MappingTvdbScene localItem = mappingSettings.getMappingList().get(i); if ((onlineItem.getTvdbId() != localItem.getTvdbId() && onlineItem.getSceneName() .equalsIgnoreCase(localItem.getSceneName()))) { localItem = onlineItem; mappingSettings.getMappingList().set(i, onlineItem); missing = false; break; } else if ((onlineItem.getTvdbId() == localItem.getTvdbId() && onlineItem .getSceneName().equalsIgnoreCase(localItem.getSceneName()))) { missing = false; break; } } if (missing) mappingSettings.getMappingList().add(onlineItem); } } //} } /** * @return the mappingSettings */ public MappingSettings getMappingSettings() { return mappingSettings; } /** * @param mappingSettings the mappingSettings to set */ public void setMappingSettings(MappingSettings mappingSettings) { this.mappingSettings = mappingSettings; } }