class CapicuaGen::Gaspar::CSRESTFULCatalogFeature

Característica generadora para acceso a catalogos de RestFUL creados a traves de entidades de negocio

Public Class Methods

new(values= {}) click to toggle source

Inicializa la característica

Calls superclass method
# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 43
def initialize(values= {})
  super(values)

  # Configuro los tipos si estos no han sido configurados previamente
  self.types= [:catalog] if self.types.blank?

  # Configuro los templates
  set_template("catalogState", Template.new(:file => 'CatalogState.erb'))
  set_template('catalogs', Template.new(:file => 'Catalogs.erb'))
  set_template('catalogs.svc', Template.new(:file => 'Catalogs.svc.erb'))
  set_template('icatalogs', Template.new(:file => 'ICatalogs.erb'))


end

Public Instance Methods

configure_attributes() click to toggle source

Configura los atributos personalizados de la característica (antes de establecer el generador)

# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 77
def configure_attributes()
  self.generation_attributes[:out_dir]  = "#{self.generation_attributes[:out_dir]}/#{self.generation_attributes[:namespace]}/Services" unless self.generation_attributes.has_in_self?(:out_dir)
  self.generation_attributes[:namespace]= "#{self.generation_attributes[:namespace]}.Services" unless self.generation_attributes.has_in_self?(:namespace)
end
configure_template_targets() click to toggle source

Configura los objetivos de las platillas (despues de establecer el generador)

# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 59
def configure_template_targets

  # Configuro los templates
  set_template_target('catalogState', TemplateTarget.new(:out_file => "CatalogState.cs", :types => :proyect_file))
  set_template_target('catalogs', TemplateTarget.new(:out_file => "Catalogs.svc.cs", :types => :proyect_file, :class_name => 'Catalogs'))
  set_template_target('catalogs.svc', TemplateTarget.new(:out_file => "Catalogs.svc", :types => :proyect_file, :class_name => 'Catalogs'))
  set_template_target('icatalogs', TemplateTarget.new(:out_file => "ICatalogs.cs", :types => :proyect_file, :class_name => 'ICatalogs'))


end
generate() click to toggle source

Genera la característica

Calls superclass method
# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 121
def generate
  super()
  generate_configuration
end
generate_configuration() click to toggle source

Genera las configuraciones necesarias dentro del archivo web.config

# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 127
def generate_configuration

  web_config_file= get_app_config_file

  return unless web_config_file

  # Ruta para conseguir el archivo app.config

  xml                          = Nokogiri::XML(File.read(web_config_file))

  # Recupero el nodo
  xpath                        = "system.serviceModel/services/service[@name= '#{self.generation_attributes[:namespace]}.Catalogs']"
  node                         = XMLHelper.get_node_from_xml_document(xml, xpath)

  # Configuro el nodo
  node['name']                 = "#{self.generation_attributes[:namespace]}.Catalogs"

  # Recupero el nodo
  xpath                        = "#{xpath}/endpoint"
  node                         = XMLHelper.get_node_from_xml_document(xml, xpath)

  #Configuro el nodo
  node['binding']              = "webHttpBinding"
  node['contract']             = "#{self.generation_attributes[:namespace]}.ICatalogs"
  node['behaviorConfiguration']= "web"


  # Recupero el nodo
  xpath                        = "system.serviceModel/behaviors/endpointBehaviors/behavior[@name= 'web']"
  path                         = "system.serviceModel/behaviors/endpointBehaviors/behavior"
  node                         = XMLHelper.get_node_from_xml_document(xml, xpath)

  # Configuro el nodo
  node['name']                 = "web"

  xpath        = "system.serviceModel/behaviors/endpointBehaviors/behavior/webHttp"
  path         = "system.serviceModel/behaviors/endpointBehaviors/behavior/webHttp"
  node         = XMLHelper.get_node_from_xml_document(xml, xpath)

  # Formateo el texto
  formatted_xml= XMLHelper.format(xml.to_xml)

  # Guardo el resultado
  File.write(web_config_file, formatted_xml)

end
get_entity_by_catalog_name(catalog_name) click to toggle source

Devuelve una entidad en base al nombre de su catalogo

# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 110
def get_entity_by_catalog_name(catalog_name)
  # Busco  las características que contiene entidades de SQL para una table
  get_tables do |e|
    if catalog_name==get_entity_catalog_name(e.name)
      return e
    end
  end
  return nil
end
get_entity_catalog_full_name(entity_name) click to toggle source

Obtiene el nombre completo de un catalogo asociado a una entidad

# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 88
def get_entity_catalog_full_name (entity_name)
  return "#{self.generation_attributes[:namespace]}.#{get_entity_catalog_name(entity_name)}"
end
get_entity_catalog_name(entity_name) click to toggle source

Obtiene el nombre de un catalogo asociado a una entidad

# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 83
def get_entity_catalog_name(entity_name)
  return "#{entity_name}Catalog"
end
get_entity_catalogs_full_name() { |get_entity_catalog_full_name name| ... } click to toggle source

Obtiene el nombre completo de todos los catalogos asociados a una entidad

# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 94
def get_entity_catalogs_full_name
  # Busco  las características que contiene entidades de SQL para una table
  get_tables do |e|
    yield get_entity_catalog_full_name e.name
  end
end
get_entity_catalogs_name() { |get_entity_catalog_name name| ... } click to toggle source

Obtiene el nombre de todos los catalogos asociados a una entidad

# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 102
def get_entity_catalogs_name
  # Busco  las características que contiene entidades de SQL para una table
  get_tables do |e|
    yield get_entity_catalog_name e.name
  end
end
reset_attributes() click to toggle source

Resetea los atributos personalizados de la característica (antes de establecer el generador)

# File lib/CapicuaGenGaspar/WCFService/CSRESTFulCatalog/Source/cs_rest_ful_catalog_feature.rb, line 71
def reset_attributes
  self.generation_attributes[:out_dir]  = nil
  self.generation_attributes[:namespace]= nil
end