Class: RecordEntity

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/datahub/datahub-record-entity.rb

Instance Method Summary collapse

Constructor Details

#initialize(schema) ⇒ RecordEntity

Returns a new instance of RecordEntity.



5
6
7
8
9
10
11
12
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 5

def initialize(schema)
    @columns_map = {}
    
    @shard_id = nil
    @attributes = {}
    
    @schema = schema
end

Instance Method Details

#add_attribute(name, value) ⇒ Object



26
27
28
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 26

def add_attribute(name, value)
    @attributes[name] = value
end

#get_columns_mapObject



30
31
32
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 30

def get_columns_map
    return @columns_map
end

#get_schemaObject



34
35
36
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 34

def get_schema
    return @schema
end

#get_stored_column_valuesObject



113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 113

def get_stored_column_values
    data = []
    fields = @schema.get_fields
    for i in 0...fields.size
        field = fields[i]
        name = field.get_name
        if @columns_map[name] == nil
            data.push(@columns_map[name])
        elsif
            data.push(@columns_map[name].to_s)
        end
    end
    return data
end

#set(name, value) ⇒ Object



14
15
16
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 14

def set(name, value)
    @columns_map[name] = value
end

#set_shard_id(shard_id) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 18

def set_shard_id(shard_id)
    if shard_id.is_a?String
        @shard_id = shard_id
    else
        raise "shard_id must be String type!"
    end
end

#setBigInt(name, value) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 39

def setBigInt(name, value)
    if value == nil
        set(name, value)
    elsif value.is_a?Integer
        set(name, value)
    elsif value.is_a?String and value.to_i.to_s == value
        set(name, value.to_i)
    else
        raise "value show be Integer, name:" + name.to_s + " value:" + value.to_s
    end
end

#setBoolean(name, value) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 67

def setBoolean(name, value)
    if value == nil
        set(name, value)
    elsif value.is_a?String
        if value == "true"
            set(name, true)
        elsif value == "false"
            set(name, false)
        else
            raise "value must be true or false, name:" + name.to_s + " value:" + value.to_s
        end
    elsif value != false and value != true
        raise "value must be bool or string[true,false], name:" + name.to_s + " value:" + value.to_s
    end
    set(name, value)
end

#setDouble(name, value) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 51

def setDouble(name, value)
    if value == nil
        set(name, value)
    elsif value.is_a?Float
        set(name, value)
    elsif value.is_a?String
        begin
            set(name, Float(value))
        rescue
            raise "value show be Float, name:" + name.to_s + " value:" + value.to_s
        end
    else
        raise "value show be Float, name:" + name.to_s + " value:" + value.to_s
    end
end

#setString(name, value) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 96

def setString(name, value)
    if value == nil
        set(name, value)
    elsif value.is_a?String and value.length < $STRING_MAX_LENGTH
        if @schema.get_encoding == nil
            set(name, value)
        else
            # puts "encoding:" + @schema.get_encoding.to_s
            value.force_encoding(@schema.get_encoding)
            set(name, value)
            # puts value
        end
    else
        raise "value show be String and len < " + $STRING_MAX_LENGTH.to_s + ", name:" + name.to_s + " value:" + value.to_s
    end
end

#setTimeStamp(name, value) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 84

def setTimeStamp(name, value)
    if value == nil
        set(name, value)
    elsif value.is_a?Integer
        set(name, value)
    elsif value.is_a?String and value.to_i.to_s == value
        set(name, value.to_i)
    else
        raise "value should be Integer, name:" + name.to_s + " value:" + value.to_s
    end
end

#to_json(*a) ⇒ Object



128
129
130
131
132
133
134
# File 'lib/fluent/plugin/datahub/datahub-record-entity.rb', line 128

def to_json(*a)
    {
        "Data" => get_stored_column_values,
        "ShardId" => @shard_id,
        "Attributes" => @attributes
    }.to_json(*a)
end