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.



215
216
217
218
219
220
# File 'lib/daengine/teamsite_metadata_processor.rb', line 215

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

Instance Method Details

#array_field?(field_name) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#assetsObject



222
223
224
# File 'lib/daengine/teamsite_metadata_processor.rb', line 222

def assets
  @assets
end

#boolean_field?(field_name) ⇒ Boolean

Returns:

  • (Boolean)


280
281
282
# File 'lib/daengine/teamsite_metadata_processor.rb', line 280

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

#characters(string) ⇒ Object



238
239
240
# File 'lib/daengine/teamsite_metadata_processor.rb', line 238

def characters(string)
  @text << string
end

#convert_to_array(string) ⇒ Object



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

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

#convert_to_boolean(string) ⇒ Object



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

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

#convert_to_datetime(string) ⇒ Object



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

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

#convert_value(field_name, string) ⇒ Object



268
269
270
271
272
273
274
275
276
277
278
# File 'lib/daengine/teamsite_metadata_processor.rb', line 268

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)


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

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

#end_element(name) ⇒ Object



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

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



259
260
261
# File 'lib/daengine/teamsite_metadata_processor.rb', line 259

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

#name_attr_value(attrs) ⇒ Object



304
305
306
307
308
309
# File 'lib/daengine/teamsite_metadata_processor.rb', line 304

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

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



226
227
228
229
230
231
232
233
234
235
236
# File 'lib/daengine/teamsite_metadata_processor.rb', line 226

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



311
312
313
# File 'lib/daengine/teamsite_metadata_processor.rb', line 311

def translate_field_name(name)
  TRANSLATION[name]
end

#warning(string) ⇒ Object



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

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