Sha256: bec3f8a2c26025366350db044882b0b2e376b1a62899c331eaf8a87e7451f951

Contents?: true

Size: 1.86 KB

Versions: 26

Compression:

Stored size: 1.86 KB

Contents

# encoding: UTF-8
#
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

require_relative '../metadata'
require_relative '../../mixins/is_dimension'
require_relative 'metadata'

module GoodData
  class Dimension < GoodData::MdObject
    include Mixin::IsDimension

    class << self
      # Method intended to get all objects of that type in a specified project
      #
      # @param options [Hash] the options hash
      # @option options [Boolean] :full if passed true the subclass can decide to pull in full objects. This is desirable from the usability POV but unfortunately has negative impact on performance so it is not the default
      # @return [Array<GoodData::MdObject> | Array<Hash>] Return the appropriate metadata objects or their representation
      def all(options = { :client => GoodData.connection, :project => GoodData.project })
        query('dimension', Dimension, options)
      end

      # Returns a Project object identified by given string
      # The following identifiers are accepted
      #  - /gdc/md/<id>
      #  - /gdc/projects/<id>
      #  - <id>
      #
      def [](id, opts = { client: GoodData.connection })
        return id if id.instance_of?(GoodData::Dimension) || id.respond_to?(:dimension?) && id.dimension?

        if id == :all
          Dimension.all({ client: GoodData.connection }.merge(opts))
        else
          uri = id

          c = client(opts)
          fail ArgumentError, 'No :client specified' if c.nil?

          response = c.get(uri)
          c.factory.create(Dimension, response)
        end
      end
    end

    def attributes
      content['attributes'].map do |attribute|
        client.create(Attribute, { 'attribute' => attribute }, project: project)
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 2 rubygems

Version Path
gooddata-edge-0.6.27.edge lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.49 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.48 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.47 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.46 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.45 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.44 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.43 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.42 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.41 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.40 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.39 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.38 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.37 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.36 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.35 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.34 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.33 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.32 lib/gooddata/models/metadata/dimension.rb
gooddata-0.6.31 lib/gooddata/models/metadata/dimension.rb