def initialize( params )
if (Blob.valid_source_params & params.keys).size > 1 then
raise Blob::Error, "Only a one of #{Blob.valid_source_params.join(', ')} is allowed to initialize a Blob. #{params.keys.join(', ')} were sent"
end
@source = nil
@source_length = 0
@close_source_after_read = false
@incremental = true
@block_size = params[:block_size] || Blob.default_block_size
@column = params[:column]
raise Blob::Error, "A :column parameter is required for a Blob" unless @column or params.has_key?( :string )
if params.has_key?( :file ) then
@source = File.open( params[:file], "r" )
@length = File.size( params[:file] )
@close_source_after_read = true
elsif params.has_key?( :io ) then
@source = params[:io]
@length = @source.length
elsif params.has_key?( :db_blob ) then
@source = params[:db_blob]
@length = @source.length
@close_source_after_read = true
elsif params.has_key?( :string ) then
@source = params[:string]
@length = @source.length
@incremental = false
end
end