module SwissDB

SwissDB Cursor Helps move around a result set Convenience methods over the standard cursor Used by Swiss DataStore

main connection point creates and upgrades our database for us and provides low level SQL features

Swiss Model An ActiveRecord like Model for RubyMotion Android

Attributes

context[RW]
resources[RW]
store[RW]
version[RW]

Public Class Methods

create_tables_from_schema(db) click to toggle source
# File lib/swiss_db/swiss_db.rb, line 24
def create_tables_from_schema(db)
  message = 'Error reading schema SQL'
  read_from_raw_resource('schema', message) do |reader|
    execute_sql_script(db, reader)
  end
end
db_name() click to toggle source
# File lib/swiss_db/swiss_db.rb, line 6
def db_name
  'swissdb'
end
get_version_from_raw() click to toggle source
# File lib/swiss_db/swiss_db.rb, line 17
def get_version_from_raw
  message = 'Error reading schema version'
  read_from_raw_resource('version', message) do |reader|
    @version = reader.readLine.to_i
  end
end
read_from_raw_resource(resource_name, error_message, &block) click to toggle source
# File lib/swiss_db/swiss_db.rb, line 31
def read_from_raw_resource(resource_name, error_message, &block)
  resource_id = find_resource(resource_name, 'raw')
  stream = resources.openRawResource(resource_id)
  is_reader = Java::IO::InputStreamReader.new(stream)
  reader = Java::IO::BufferedReader.new(is_reader)
  begin
    block.call(reader)
  rescue
    raise error_message
  ensure
    [stream, is_reader, reader].each(&:close)
  end
end
setup(context) click to toggle source
# File lib/swiss_db/swiss_db.rb, line 10
def setup(context)
  @context = context
  @resources = context.getResources
  get_version_from_raw
  @store = DataStore.new(context, db_name, nil, version)
end

Private Class Methods

execute_sql_script(db, reader) click to toggle source
# File lib/swiss_db/swiss_db.rb, line 52
def execute_sql_script(db, reader)
  # is there a better way?
  sql = ''
  line = ''
  while line = reader.readLine
    sql << line
    if line[-1] == ';'
      db.execSQL(sql)
      sql = ''
    end
  end
end
find_resource(name, type) click to toggle source
# File lib/swiss_db/swiss_db.rb, line 47
def find_resource(name, type)
  package_name = PMApplication.current_application.package_name
  resources.getIdentifier(name, type, package_name)
end