Class: Dynamicloud::API::DynamicloudHelper
- Inherits:
- 
      Object
      
        - Object
- Dynamicloud::API::DynamicloudHelper
 
- Defined in:
- lib/dynamic_api.rb
Overview
This is a class with utility methods
Class Method Summary collapse
- 
  
    
      .build_fields_json(data)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Builds a compatible string to update a record. 
- 
  
    
      .build_items(array)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Builds an array of RecordFieldItems according JSONArray. 
- 
  
    
      .build_join_tag(joins)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    This method builds the tag joins as follows: i.e: “joins”: [ { “type”: “full”, “alias”: “user”, “target”: “3456789”, “on”: { “user.id” : “languages.id” } } ]. 
- 
  
    
      .build_projection(projection)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Build a compatible string using projection. 
- 
  
    
      .build_record(jr)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Builds the record hash with data from jr JSON object. 
- 
  
    
      .build_record_results(response)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    This utility will build a RecordResults object. 
- 
  
    
      .build_string(conditions, group_by, order_by, projection, aliass = nil, joins = [])  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Builds a compatible String to use in service executions. 
- 
  
    
      .get_record_list(data)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    This method will extract data and Bind each field with attributes in mapper:getInstance method instance. 
- 
  
    
      .normalize_record(record)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    This method will normalize the response from Dynamicloud servers. 
Class Method Details
.build_fields_json(data) ⇒ Object
Builds a compatible string to update a record. This method will get field name and its value form data hash.
| 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 | # File 'lib/dynamic_api.rb', line 604 def self.build_fields_json(data) result = data.clone data.each do |key, value| if value.respond_to?(:each) array = '' value.each do |item| if item array = array + (array == '' ? '' : ',') + item.to_s end end result[key] = array end end result.to_json end | 
.build_items(array) ⇒ Object
Builds an array of RecordFieldItems according JSONArray
| 623 624 625 626 627 628 629 630 631 632 633 634 635 636 | # File 'lib/dynamic_api.rb', line 623 def self.build_items(array) items = [] if array.length > 0 array.each do |item| ri = Dynamicloud::API::Model::RecordFieldItem.new ri.text = item['text'] ri.value = item['value'] items.push ri end end items end | 
.build_join_tag(joins) ⇒ Object
This method builds the tag joins as follows: i.e: “joins”: [ { “type”: “full”, “alias”: “user”, “target”: “3456789”, “on”: { “user.id” : “languages.id” } } ]
| 690 691 692 693 694 695 696 697 698 699 700 701 702 703 | # File 'lib/dynamic_api.rb', line 690 def self.build_join_tag(joins) tag = '"joins": [' unless joins.nil? first_time = true joins.each do |clause| tag += (first_time ? '' : ', ') + clause.to_record_string(Dynamicloud::API::Criteria::Condition::ROOT) first_time = false end end return tag + ']' end | 
.build_projection(projection) ⇒ Object
Build a compatible string using projection
| 671 672 673 674 675 676 677 678 679 680 681 682 683 | # File 'lib/dynamic_api.rb', line 671 def self.build_projection(projection) unless (projection) && (projection.length > 0) return '' end columns = '"columns": [' cols = '' projection.each do |field| cols = cols + (cols == '' ? '' : ',') + '"' + field + '"' end columns + cols + ']' end | 
.build_record(jr) ⇒ Object
Builds the record hash with data from jr JSON object
| 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 | # File 'lib/dynamic_api.rb', line 737 def self.build_record(jr) record = {} jr.each do |key, value| if value.is_a?(Hash) value.each do |k, v| if v.respond_to?(:each) values = [] v.each do |item| values.push(item.to_s) end record[key] = values else record[key] = value end break end else record[key] = value end end record end | 
.build_record_results(response) ⇒ Object
This utility will build a RecordResults object
| 707 708 709 710 711 712 713 714 715 716 717 718 719 | # File 'lib/dynamic_api.rb', line 707 def self.build_record_results(response) results = Dynamicloud::API::RecordResults.new json = JSON.parse(response) data = json['records'] results.total_records = data['total'] results.fast_returned_size = data['size'] results.records = get_record_list(data) results end | 
.build_string(conditions, group_by, order_by, projection, aliass = nil, joins = []) ⇒ Object
Builds a compatible String to use in service executions
| 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 | # File 'lib/dynamic_api.rb', line 640 def self.build_string(conditions, group_by, order_by, projection, aliass = nil, joins = []) built = '{' + (aliass == nil ? '' : '"alias": "' + aliass + '", ') + build_join_tag(joins) + ((projection.nil? || projection.eql?('') || projection.strip!.eql?('')) ? '' : (', ' + projection)) + ', "where": {' if conditions.length > 0 global = conditions[0] if conditions.length > 1 conditions = conditions[1..conditions.length] conditions.each do |condition| global = Dynamicloud::API::Criteria::ANDCondition.new global, condition end end built = built + global.to_record_string(Dynamicloud::API::Criteria::Condition::ROOT) end built = built + '}' if group_by built = built + ',' + group_by.to_record_string(Dynamicloud::API::Criteria::Condition::ROOT) end if order_by built = built + ',' + order_by.to_record_string(Dynamicloud::API::Criteria::Condition::ROOT) end built + '}' end | 
.get_record_list(data) ⇒ Object
This method will extract data and Bind each field with attributes in mapper:getInstance method instance
| 724 725 726 727 728 729 730 731 732 733 734 | # File 'lib/dynamic_api.rb', line 724 def self.get_record_list(data) record_list = [] records = data['records'] records.each do |jr| record_list.push(build_record(jr)) end record_list end | 
.normalize_record(record) ⇒ Object
This method will normalize the response from Dynamicloud servers
| 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 | # File 'lib/dynamic_api.rb', line 572 def self.normalize_record(record) normalized = {} record.each do |key, value| if value.is_a?(Hash) #This hash has only one key value.each do |ik, iv| if iv.respond_to?(:each) array = [] iv.each do |item| array.push item.to_s end normalized[key] = array elsif iv.is_a?(String) normalized[key] = iv.to_s end #This hash has only one key break end else normalized[key] = value end end normalized end |