class SakaiInfo::Calendar

Attributes

dbrow[R]
next_id[R]

Public Class Methods

all_serializations() click to toggle source
# File lib/sakai-info/calendar.rb, line 109
def self.all_serializations
  [
   :default,
   :xml,
   :mod,
   :events,
  ]
end
clear_cache() click to toggle source
# File lib/sakai-info/calendar.rb, line 16
def self.clear_cache
  @@cache = {}
end
find(id) click to toggle source
# File lib/sakai-info/calendar.rb, line 29
def self.find(id)
  # if there's no slash in the id string, assume it's a site id
  if id !~ /\//
    id = "/calendar/calendar/#{id}/main"
  end

  if @@cache[id].nil?
    xml = ""
    row = DB.connect[:calendar_calendar].where(:calendar_id => id).first
    if row.nil?
      raise ObjectNotFoundException.new(Calendar, id)
    end
    @@cache[id] = Calendar.new(row)
  end
  @@cache[id]
end
find!(id) click to toggle source
# File lib/sakai-info/calendar.rb, line 46
def self.find!(id)
  begin
    Calendar.find(id)
  rescue ObjectNotFoundException => e
    if e.classname == Calendar.name
      MissingCalendar.find(id)
    end
  end
end
new(dbrow) click to toggle source
# File lib/sakai-info/calendar.rb, line 21
def initialize(dbrow)
  @dbrow = dbrow
  @id = dbrow[:calendar_id]
  @next_id = dbrow[:next_id]

  parse_xml
end

Public Instance Methods

default_serialization() click to toggle source

serialization

# File lib/sakai-info/calendar.rb, line 82
def default_serialization
  {
    "id" => self.id,
    "site" => self.site.serialize(:summary),
    "next_id" => self.next_id,
    "event_count" => self.event_count,
  }
end
event_count() click to toggle source
# File lib/sakai-info/calendar.rb, line 61
def event_count
  @event_count ||= CalendarEvent.count_by_calendar_id(@id)
end
events() click to toggle source

lazy properties

# File lib/sakai-info/calendar.rb, line 57
def events
  @events ||= CalendarEvent.find_by_calendar_id(@id)
end
events_serialization() click to toggle source
# File lib/sakai-info/calendar.rb, line 103
def events_serialization
  {
    "events" => self.events.collect{|e|e.serialize(:summary)}
  }
end
site() click to toggle source
# File lib/sakai-info/calendar.rb, line 69
def site
  @site ||= Site.find(self.site_id)
end
site_id() click to toggle source
# File lib/sakai-info/calendar.rb, line 65
def site_id
  @site_id ||= @id.split("/")[3]
end
summary_serialization() click to toggle source
# File lib/sakai-info/calendar.rb, line 91
def summary_serialization
  {
    "id" => self.id,
  }
end
xml() click to toggle source
# File lib/sakai-info/calendar.rb, line 73
def xml
  if @xml.nil?
    @xml = ""
    REXML::Document.new(@dbrow[:xml].read).write(@xml, 2)
  end
  @xml
end
xml_serialization() click to toggle source
# File lib/sakai-info/calendar.rb, line 97
def xml_serialization
  {
    "xml" => self.xml
  }
end