package net.pterodactylus.sone.core; import net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired; import net.pterodactylus.util.config.Configuration; import net.pterodactylus.util.config.ConfigurationException; /** * Loads preferences stored in a {@link Configuration} into a {@link * Preferences} object. * * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a> */ public class PreferencesLoader { private final Preferences preferences; public PreferencesLoader(Preferences preferences) { this.preferences = preferences; } public void loadFrom(Configuration configuration) { loadInsertionDelay(configuration); loadPostsPerPage(configuration); loadImagesPerPage(configuration); loadCharactersPerPost(configuration); loadPostCutOffLength(configuration); loadRequireFullAccess(configuration); loadPositiveTrust(configuration); loadNegativeTrust(configuration); loadTrustComment(configuration); loadFcpInterfaceActive(configuration); loadFcpFullAccessRequired(configuration); } private void loadInsertionDelay(Configuration configuration) { preferences.setInsertionDelay(configuration.getIntValue( "Option/InsertionDelay").getValue(null)); } private void loadPostsPerPage(Configuration configuration) { preferences.setPostsPerPage( configuration.getIntValue("Option/PostsPerPage") .getValue(null)); } private void loadImagesPerPage(Configuration configuration) { preferences.setImagesPerPage( configuration.getIntValue("Option/ImagesPerPage") .getValue(null)); } private void loadCharactersPerPost(Configuration configuration) { preferences.setCharactersPerPost( configuration.getIntValue("Option/CharactersPerPost") .getValue(null)); } private void loadPostCutOffLength(Configuration configuration) { try { preferences.setPostCutOffLength( configuration.getIntValue("Option/PostCutOffLength") .getValue(null)); } catch (IllegalArgumentException iae1) { /* previous versions allowed -1, ignore and use default. */ } } private void loadRequireFullAccess(Configuration configuration) { preferences.setRequireFullAccess( configuration.getBooleanValue("Option/RequireFullAccess") .getValue(null)); } private void loadPositiveTrust(Configuration configuration) { preferences.setPositiveTrust( configuration.getIntValue("Option/PositiveTrust") .getValue(null)); } private void loadNegativeTrust(Configuration configuration) { preferences.setNegativeTrust( configuration.getIntValue("Option/NegativeTrust") .getValue(null)); } private void loadTrustComment(Configuration configuration) { preferences.setTrustComment( configuration.getStringValue("Option/TrustComment") .getValue(null)); } private void loadFcpInterfaceActive(Configuration configuration) { preferences.setFcpInterfaceActive(configuration.getBooleanValue( "Option/ActivateFcpInterface").getValue(null)); } private void loadFcpFullAccessRequired(Configuration configuration) { Integer fullAccessRequiredInteger = configuration .getIntValue("Option/FcpFullAccessRequired").getValue(null); preferences.setFcpFullAccessRequired( (fullAccessRequiredInteger == null) ? null : FullAccessRequired.values()[fullAccessRequiredInteger]); } }