package moviescraper.doctord.controller.amalgamation; import java.util.LinkedList; import moviescraper.doctord.controller.siteparsingprofile.SiteParsingProfileItem; import moviescraper.doctord.model.dataitem.DataItemSource; import moviescraper.doctord.model.dataitem.DefaultDataItemSource; /** * Ranked list of what DataItemSources I would prefer to pick from when doing an amalgamation * */ public class DataItemSourceAmalgamationPreference { private LinkedList<DataItemSource> amalgamationPreferenceOrder; /** * * @param dataItemSources - the list of preferred items to use to amalgamate. the first parameter passed * in is the most preferred item, the second the second most preferred, and so on */ public DataItemSourceAmalgamationPreference(DataItemSource ...dataItemSources) { amalgamationPreferenceOrder = new LinkedList<>(); for (DataItemSource dis : dataItemSources) { amalgamationPreferenceOrder.add(dis); } //Always put this at the end as a fall back for items which didn't get their data item source set another way //to allow us to still pick them in case no other item from a more preferred source was found first when amalgamating if(!amalgamationPreferenceOrder.contains(DefaultDataItemSource.DEFAULT_DATA_ITEM_SOURCE)) amalgamationPreferenceOrder.add(DefaultDataItemSource.DEFAULT_DATA_ITEM_SOURCE); } public DataItemSourceAmalgamationPreference(LinkedList<DataItemSource> amalgamationPreferenceOrder) { this.amalgamationPreferenceOrder = amalgamationPreferenceOrder; } public LinkedList<DataItemSource> getAmalgamationPreferenceOrder() { return amalgamationPreferenceOrder; } public void setAmalgamationPreferenceOrder( LinkedList<DataItemSource> amalgamationPreferenceOrder) { this.amalgamationPreferenceOrder = amalgamationPreferenceOrder; } public void setAmalgamationPreferenceOrder(SiteParsingProfileItem[] parsingProfileItems) { if(parsingProfileItems != null) { amalgamationPreferenceOrder = new LinkedList<>(); for(SiteParsingProfileItem currentParsingProfileItem : parsingProfileItems) { if(!currentParsingProfileItem.isDisabled()) amalgamationPreferenceOrder.add(currentParsingProfileItem.getParser()); } if(!amalgamationPreferenceOrder.contains(DefaultDataItemSource.DEFAULT_DATA_ITEM_SOURCE)) amalgamationPreferenceOrder.add(DefaultDataItemSource.DEFAULT_DATA_ITEM_SOURCE); } else { amalgamationPreferenceOrder = new LinkedList<>(); amalgamationPreferenceOrder.add(DefaultDataItemSource.DEFAULT_DATA_ITEM_SOURCE); } } @Override public String toString() { return amalgamationPreferenceOrder.toString(); } }