Class: SettingsHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/quartz_flow/settings_helper.rb

Defined Under Namespace

Classes: SettingMetainfo

Constant Summary collapse

@@floatValidator =
Proc.new do |v|
  raise "Invalid ratio" if v !~ /^\d+(\.\d+)?$/
  v.to_s
end
@@saveFilterForSize =
Proc.new do |v|
  if v.nil? || v.length == 0
    nil
  else
    QuartzTorrent::Formatter.parseSize(v) 
  end
end
@@saveFilterForDuration =
Proc.new do |v|
  if v.nil? || v.length == 0
    nil
  else
    QuartzTorrent::Formatter.parseTime(v) 
  end
end
@@settingsMetainfo =
{
  :defaultUploadRateLimit => SettingMetainfo.new(
    :defaultUploadRateLimit,
    :global,
    @@saveFilterForSize,
    Proc.new{ |v| QuartzTorrent::Formatter.formatSpeed(v) }
  ),
  :defaultDownloadRateLimit => SettingMetainfo.new(
    :defaultDownloadRateLimit,
    :global,
    @@saveFilterForSize,
    Proc.new{ |v| QuartzTorrent::Formatter.formatSpeed(v) }
  ),
  :defaultRatio => SettingMetainfo.new(
    :defaultRatio,
    :global,
    @@floatValidator,
    Proc.new{ |v| v.to_f }
  ),
  :defaultUploadDuration => SettingMetainfo.new(
    :defaultUploadDuration,
    :global,
    @@saveFilterForDuration,
    Proc.new{ |v| QuartzTorrent::Formatter.formatTime(v) }
  ),
  :uploadRateLimit => SettingMetainfo.new(
    :uploadRateLimit,
    :torrent,
    @@saveFilterForSize,
    Proc.new{ |v| QuartzTorrent::Formatter.formatSpeed(v) }
  ),
  :downloadRateLimit => SettingMetainfo.new(
    :downloadRateLimit,
    :torrent,
    @@saveFilterForSize,
    Proc.new{ |v| QuartzTorrent::Formatter.formatSpeed(v) }
  ),
  :ratio => SettingMetainfo.new(
    :ratio,
    :torrent,
    @@floatValidator,
    Proc.new{ |v| v.to_f }
  ),
  :uploadDuration => SettingMetainfo.new(
    :uploadDuration,
    :torrent,
    @@saveFilterForDuration,
    Proc.new{ |v| QuartzTorrent::Formatter.formatTime(v) }
  ),
}

Instance Method Summary collapse

Instance Method Details

#deleteForOwner(owner) ⇒ Object



144
145
146
# File 'lib/quartz_flow/settings_helper.rb', line 144

def deleteForOwner(owner)
  Setting.all(:owner => owner).destroy!
end

#get(settingName, filter = :filter, owner = nil) ⇒ Object



129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/quartz_flow/settings_helper.rb', line 129

def get(settingName, filter = :filter, owner = nil)
  setting = settingName.to_sym
  metaInfo = @@settingsMetainfo[setting]
  raise "Unknown setting #{settingName}" if ! metaInfo

  result = nil
  settingModel = loadWithOwner(settingName, owner)
  
  if settingModel
    result = settingModel.value
    result = metaInfo.filterOnLoad(result) if filter == :filter
  end
  result
end

#globalSettingsHashObject

Return a hashtable of all global settings



149
150
151
152
153
154
155
156
157
158
# File 'lib/quartz_flow/settings_helper.rb', line 149

def globalSettingsHash
  result = {}

  @@settingsMetainfo.each do |k,v|
    next if v.scope != :global
    result[k] = get(k)
  end
  
  result
end

#set(settingName, value, owner = nil) ⇒ Object



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/quartz_flow/settings_helper.rb', line 108

def set(settingName, value, owner = nil)
  setting = settingName.to_sym

  metaInfo = @@settingsMetainfo[setting]
  raise "Unknown setting #{settingName}" if ! metaInfo

  value = nil if metaInfo.emptyIsNil? && value.is_a?(String) && value.length == 0
  value = value.to_s if value
  value = metaInfo.filterOnSave(value)
  
  settingModel = loadWithOwner(settingName, owner)

  if ! settingModel
    settingModel = Setting.create( :name => settingName, :value => value, :scope => metaInfo.scope, :owner => owner )
    settingModel.save
  else
    settingModel.value = value
    settingModel.save
  end
end

#setGlobalSettingsHash(hash) ⇒ Object

Set global settings as a hash



161
162
163
164
165
# File 'lib/quartz_flow/settings_helper.rb', line 161

def setGlobalSettingsHash(hash)
  @@settingsMetainfo.each do |k,v|
    set(k, hash[k.to_s]) if hash.has_key?(k.to_s)
  end
end