Hyper::Developer::Generator::Control::Container - class for generating Container Controls


Hyper-Developer documentation Contained in the Hyper-Developer distribution.

Index


Code Index:

NAME

Top

Hyper::Developer::Generator::Control::Container - class for generating Container Controls

VERSION

Top

This document describes Hyper::Developer::Generator::Control::Container 0.01

SYNOPSIS

Top

    use Hyper::Developer::Generator::Control::Container;

    my $object = Hyper::Developer::Generator::Control::Container->new({
        base_path => '/srv/web/www.example.com/',
        namespace => 'Example',
        usecase   => 'ChangePassword',
        service   => 'AccountManagement',
    });

    $object->create();

DESCRIPTION

Top

Used to create the initial environment for a Hyper Based Web Application.

ATTRIBUTES

Top

template :init_arg

Indicated if the template should be generated.

code :init_arg

Indicated if perl code should be generated.

SUBROUTINES/METHODS

Top

BUILD

    my $object = Hyper::Developer::Generator::Control::Container->new({
        base_path => '/srv/web/www.example.com/',
        namespace => 'Example',
        usecase   => 'ChangePassword',
        service   => 'AccountManagement',
    });

Called on object creation and sets some default vars.

create

    $object->create();

Creates the following files (depends on the init_args - see ATTRIBUTES):

$BASE_PATH/lib/$NAMESPACE/Control/Container/$SERVICE/C$USECASE.pm

This is generated once and won't be signed over. That's the place where you can put your code in.

$BASE_PATH/lib/$NAMESPACE/Control/Container/$SERVICE/_C$USECASE.pm

This file will be reqritten on each method call. So don't change anything in this file.

$BASE_PATH/var/$NAMESPACE/Control/Container/$SERVICE/C$USECASE.htc

This is the default template for the new container.

DIAGNOSTICS

Top

CONFIGURATION AND ENVIRONMENT

Top

DEPENDENCIES

Top

INCOMPATIBILITIES

Top

BUGS AND LIMITATIONS

Top

RCS INFORMATIONS

Top

Last changed by

$Author: ac0v $

Id

$Id: Container.pm 333 2008-02-18 22:59:27Z ac0v $

Revision

$Revision: 333 $

Date

$Date: 2008-02-18 23:59:27 +0100 (Mon, 18 Feb 2008) $

HeadURL

$HeadURL: http://svn.hyper-framework.org/Hyper/Hyper-Developer/branches/0.07/lib/Hyper/Developer/Generator/Control/Container.pm $

AUTHOR

Top

Andreas Specht <ACID@cpan.org>

LICENSE AND COPYRIGHT

Top


Hyper-Developer documentation Contained in the Hyper-Developer distribution.

package Hyper::Developer::Generator::Control::Container;

use strict;
use warnings;
use version; our $VERSION = qv('0.01');

use Class::Std;
use base qw(Hyper::Developer::Generator::Control::ContainerFlow);

use Hyper::Config::Reader::Container;

my %create_template_of :ATTR(:init_arg<template>);
my %create_code_of     :ATTR(:init_arg<code>);

sub BUILD {
    my $self = shift;

    $self->set_type('package');
    $self->set_sub_path('/Control/Container/');
    $self->set_suffix('pm');

    return $self;
}

sub create {
    my $self     = shift;
    my $ident    = ident $self;
    my $usecase  = $self->get_usecase();
    my $service  = $self->get_service();

    my $config = Hyper::Config::Reader::Container->new({
        base_path => $self->get_base_path(),
        config_for => $self->get_namespace() . "::Control::Container::${service}::C${usecase}",
    });

    my $data_ref = $self->_get_data_ref_of_steps(
        $config->get_steps()
    );

    my $attr_ref = $config->get_attributes();

    if ( %{$data_ref} ) {
        if ( $create_code_of{$ident} ) {
            $self->SUPER::create({
                data       => {
                    attributes => $attr_ref,
                    step_data  => $data_ref,
                },
                name     => "_C$usecase",
                template => 'Generator/Control/_container.tpl',
                force    => 1,
            });
            $self->SUPER::create({
                data       => {
                    attributes => $attr_ref,
                    step_data  => $data_ref,
                },
                name     => "C$usecase",
                template => 'Generator/Control/container.tpl',
            });
        }
        if ( $create_template_of{$ident} ) {
            $self->set_type('template');
            $self->set_suffix('htc');
            $self->SUPER::create({
                data       => {
                    attributes => $attr_ref,
                    step_data  => $data_ref,
                },
                name       => "C$usecase",
                template   => 'Generator/Control/Container/template.tpl',
            });
        }
    }

    return $self;
}

1;


__END__