=begin
CapicuaGen
CapicuaGen es un software que ayuda a la creación automática de
sistemas empresariales a través de la definición y ensamblado de
diversos generadores de características.
El proyecto fue iniciado por José Luis Bautista Martín, el 6 de enero
de 2016.
Puede modificar y distribuir este software, según le plazca, y usarlo
para cualquier fin ya sea comercial, personal, educativo, o de cualquier
índole, siempre y cuando incluya este mensaje, y se permita acceso al
código fuente.
Este software es código libre, y se licencia bajo LGPL.
Para más información consultar http://www.gnu.org/licenses/lgpl.html
=end
require 'active_support/core_ext/object/blank'
require_relative '../../../balthazar'
require_relative '../../..//Mixins/card_view_fragment_mixin'
require 'CapicuaGenMelchior/Mixins/entity_sql_table_mixin'
require_relative '../../../Mixins/android_context_provider_mixin'
require_relative '../../../Mixins/java_mixin'
module CapicuaGen::Balthazar
# Característica generadora para pantalla visualizadora de entidades
class AndyMainActivityFeature < CapicuaGen::TemplateFeature
include CapicuaGen
include CapicuaGen::Balthazar
include CapicuaGen::Melchior
public
# Inicializa la característica
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("main", Template.new(:file => 'main.erb'))
set_template('main_activity', Template.new(:file => 'main_activity.erb'))
end
# Configura los objetivos de las platillas (despues de establecer el generador)
def configure_template_targets
set_template_target("main", TemplateTarget.new(:out_file => get_package_out_file("MainActivity.java")))
set_template_target("main_activity", TemplateTarget.new(:out_file => get_activity_out_file("activity_main.xml")))
end
# Resetea los atributos personalizados de la característica (antes de establecer el generador)
def reset_attributes
self.generation_attributes[:package] = nil
self.generation_attributes[:package_out_dir]= nil
end
# Configura los atributos personalizados de la característica (antes de establecer el generador)
def configure_attributes()
self.generation_attributes[:package] = "#{self.generation_attributes[:package]}.activities" unless self.generation_attributes.has_in_self?(:package)
self.generation_attributes[:package_out_dir]= get_package_out_dir
end
# Genera el código de la carateristica
def generate
super()
begin
message_helper.add_indent
generate_configuration
ensure
message_helper.remove_indent
end
end
# Modifica el archivo Manifest para agregar las actividades.
def generate_configuration
manifest_file= get_manifest_file
return unless manifest_file
if not File.exist? manifest_file
message_helper.puts_file_modified manifest_file, :ignore
return
end
# Ruta para conseguir el archivo manifiest.xml
xml= Nokogiri::XML(File.read(manifest_file))
=begin
=end
xpath = "uses-permission[@android:name= 'android.permission.INTERNET']"
node = XMLHelper.get_node_from_xml_document(xml, xpath)
# Configuro el nodo
node['android:name'] = "android.permission.INTERNET"
=begin
=end
# Recupero el nodo
xpath = "application/activity[@android:name= '.activities.MainActivity']"
node = XMLHelper.get_node_from_xml_document(xml, xpath)
# Configuro el nodo
node['android:name'] = ".activities.MainActivity"
node['android:screenOrientation']= "portrait"
node['android:theme'] = "@style/Theme.AppCompat"
# Formateo el texto
formatted_xml = XMLHelper.format(xml.to_xml)
# Guardo el resultado
File.write(manifest_file, formatted_xml)
message_helper.puts_file_modified manifest_file, :override
end
end
end