Class: Daengine::Document

Inherits:
Nokogiri::XML::SAX::Document
  • Object
show all
Defined in:
lib/daengine/teamsite_metadata_processor.rb

Constant Summary collapse

DATA_TUPLE_ELEMENT =
'data-tuple'
TUPLE_FIELD_ELEMENT =
'tuple-field'
NAME_ATTRIBUTE =
'name'
TIME_FORMAT =

Teamsite Date example: Dec 29 2008 12:00:00:000AM

'%b %d %Y %k:%M:%S:%L%p'
TRANSLATION =
{
    'TeamSite/Metadata/rttTitle' => 'title',
    'TeamSite/Metadata/enterprise_last_updated_date' => 'changed_at',
    'TeamSite/Metadata/enterprise_audience_id' => 'audiences',
    'TeamSite/Metadata/enterprise_sami_desc' => 'sami_code',
    'TeamSite/Metadata/enterprise_last_publication_date' => 'published_at',
    'TeamSite/Metadata/enterprise_unpublish_date' => 'unpublished_at',
    'TeamSite/Metadata/enterprise_expiration_date' => 'expires_at',
    #'TeamSite/Metadata/enterprise_guid' => 'guid',
    'TeamSite/Metadata/enterprise_guid' => 'digital_asset_id',
    'TeamSite/Metadata/shortSynopsis' => 'summary',
    'TeamSite/Metadata/business_owner' => 'business_owner',
    'TeamSite/Metadata/enterprise_product_id' => 'product_ids',
    'TeamSite/Metadata/enterprise_content_organization_id' => 'content_organization_ids',
    'TeamSite/Metadata/enterprise_program_id' => 'program_ids',
    'TeamSite/Metadata/omnitureSiteSection_codes' => 'omniture_codes',
    'TeamSite/Metadata/display_on_website' => 'display_on_website',
    'path' => 'path',
    'TeamSite/Metadata/enterprise_last_content_update_date' => 'doc_changed_at',
    'TeamSite/Metadata/enterprise_content_type_id' => 'content_type'
}

Instance Method Summary collapse

Constructor Details

#initializeDocument

Returns a new instance of Document.



218
219
220
221
222
223
# File 'lib/daengine/teamsite_metadata_processor.rb', line 218

def initialize
  @asset = nil
  @field_name = nil
  @text = ''
  @assets = {}
end

Instance Method Details

#array_field?(field_name) ⇒ Boolean

Returns:

  • (Boolean)


291
292
293
# File 'lib/daengine/teamsite_metadata_processor.rb', line 291

def array_field?(field_name)
  ::ServiceDigitalAsset.array_field?(field_name)
end

#assetsObject



225
226
227
# File 'lib/daengine/teamsite_metadata_processor.rb', line 225

def assets
  @assets
end

#boolean_field?(field_name) ⇒ Boolean

Returns:

  • (Boolean)


283
284
285
# File 'lib/daengine/teamsite_metadata_processor.rb', line 283

def boolean_field?(field_name)
  ::ServiceDigitalAsset.boolean_field?(field_name)
end

#characters(string) ⇒ Object



241
242
243
# File 'lib/daengine/teamsite_metadata_processor.rb', line 241

def characters(string)
  @text << string
end

#convert_to_array(string) ⇒ Object



303
304
305
# File 'lib/daengine/teamsite_metadata_processor.rb', line 303

def convert_to_array(string)
  string.try(:split, ',')
end

#convert_to_boolean(string) ⇒ Object



295
296
297
# File 'lib/daengine/teamsite_metadata_processor.rb', line 295

def convert_to_boolean(string)
  !!(string =~ /Y|1|true/)
end

#convert_to_datetime(string) ⇒ Object



299
300
301
# File 'lib/daengine/teamsite_metadata_processor.rb', line 299

def convert_to_datetime(string)
  Time.strptime(string, TIME_FORMAT) unless string.blank?
end

#convert_value(field_name, string) ⇒ Object



271
272
273
274
275
276
277
278
279
280
281
# File 'lib/daengine/teamsite_metadata_processor.rb', line 271

def convert_value(field_name, string)
  begin
    return convert_to_boolean(string) if boolean_field?(field_name)
    return convert_to_datetime(string) if datetime_field?(field_name)
    return convert_to_array(string) if array_field?(field_name)
  rescue => ex
    Daengine.log("***** convert-value('#{field_name}', '#{string}') - #{ex.inspect}", 'error')
  end

  string
end

#datetime_field?(field_name) ⇒ Boolean

Returns:

  • (Boolean)


287
288
289
# File 'lib/daengine/teamsite_metadata_processor.rb', line 287

def datetime_field?(field_name)
  ::ServiceDigitalAsset.time_field?(field_name)
end

#end_element(name) ⇒ Object



245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
# File 'lib/daengine/teamsite_metadata_processor.rb', line 245

def end_element(name)
  case name
    when DATA_TUPLE_ELEMENT
      @assets[@asset.digital_asset_id] = [] if @assets[@asset.digital_asset_id].nil?
      @assets[@asset.digital_asset_id] << @asset
      @asset = nil
    when TUPLE_FIELD_ELEMENT
      unless @field_name.nil?
        value = convert_value(@field_name, @text)
        setter_name = "#{@field_name}=".to_sym
        @asset.send(setter_name, value) if @asset.respond_to?(setter_name)
      end
  end

  @field_name, @text = nil, ''
end

#error(string) ⇒ Object



262
263
264
# File 'lib/daengine/teamsite_metadata_processor.rb', line 262

def error(string)
  Daengine.log("***** Parse error - #{string} *****", 'error')
end

#name_attr_value(attrs) ⇒ Object



307
308
309
310
311
312
# File 'lib/daengine/teamsite_metadata_processor.rb', line 307

def name_attr_value(attrs)
  unless attrs.nil?
    hash = Hash[*attrs.flatten]
    hash[NAME_ATTRIBUTE]
  end
end

#start_element(name, attrs = []) ⇒ Object



229
230
231
232
233
234
235
236
237
238
239
# File 'lib/daengine/teamsite_metadata_processor.rb', line 229

def start_element(name, attrs = [])
  case name
    when DATA_TUPLE_ELEMENT
      @asset = ::ServiceDigitalAsset.new
      @field_name = nil
    when TUPLE_FIELD_ELEMENT
      @field_name = translate_field_name(name_attr_value(attrs))
  end

  @text = ''
end

#translate_field_name(name) ⇒ Object



314
315
316
# File 'lib/daengine/teamsite_metadata_processor.rb', line 314

def translate_field_name(name)
  TRANSLATION[name]
end

#warning(string) ⇒ Object



266
267
268
# File 'lib/daengine/teamsite_metadata_processor.rb', line 266

def warning(string)
  Daengine.log("***** Parse warning - #{string} *****", 'warn')
end