Menu

Attempt to redeclare the inherited attribute

Thibault A
2012-07-11
2012-12-19
  • Thibault A

    Thibault A - 2012-07-11

    Hello,

    After updating my version of iTop 1.0.2 to 1.2.1, I tried to add a CI I called "BDD". I created the class which extends from Server and the code is the same as the last one (I mean I coded the BDD class in 1.2.1 the same way as before in 1.0.2) but I have an error while refreshing the Data Model via the Data Model Toolkit.
    I get this error :

    An error occured while processing the PHP files of the data model:
    Declaration of BDD: attempting to redeclare the inherited attribute 'application_list', originaly declared in Server

    That class used to work in 1.0.2 and I added that piece of code in the end of the model file (as in the 1.0.2 version) :

    new OQLMenuNode('BDD', 'SELECT BDD', $oShortcutsNode->GetIndex(), 1 /* fRank */);
    

    By the way, here is the code :

    class Server extends InfrastructureCI
    {
        public static function Init()
        {
            $aParams = array
            (
                "category" => "bizmodel,searchable,configmgmt",
                "key_type" => "autoincrement",
                "name_attcode" => "name",
                "state_attcode" => "",
                "reconc_keys" => array("name","org_id","owner_name","location_id","location_name"),
                "db_table" => "server",
                "db_key_field" => "id",
                "db_finalclass_field" => "",
                "icon" => "../modules/itop-config-mgmt-1.0.0/images/server.png",
            );
            MetaModel::Init_Params($aParams);
            MetaModel::Init_InheritAttributes();
            MetaModel::Init_AddAttribute(new AttributeString("cpu", array("allowed_values"=>null, "sql"=>"cpu", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("ram", array("allowed_values"=>null, "sql"=>"ram", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("hdd", array("allowed_values"=>null, "sql"=>"hdd", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("os_family", array("allowed_values"=>null, "sql"=>"os_family", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("os_version", array("allowed_values"=>null, "sql"=>"os_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeLinkedSet("application_list", array("linked_class"=>"SoftwareInstance", "ext_key_to_me"=>"device_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("patch_list", array("linked_class"=>"lnkPatchToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"patch_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeEnum("etat", array("allowed_values"=>new ValueSetEnum('en_test, down, dispo'), "sql"=>"etat", "default_value"=>"dispo", "target_attcode"=>"etat", "is_null_allowed"=>false, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeEnum("environnement", array("allowed_values"=>new ValueSetEnum('PROD,INDUS'), "sql"=>"environnement", "default_value"=>"INDUS", "target_attcode"=>"env", "is_null_allowed"=>false, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('Dev, Recette, Maintenance, Integration'), "sql"=>"type", "default_value"=>"Integration", "target_attcode"=>"type", "is_null_allowed"=>false, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("bail", array("allowed_values"=>null, "sql"=>"bail", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("IP", array("allowed_values"=>null, "sql"=>"IP", "default_value"=>"Base", "is_null_allowed"=>false, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("comm", array("allowed_values"=>null, "sql"=>"comm", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
                MetaModel::Init_AddAttribute(new AttributeString("datastore", array("allowed_values"=>null, "sql"=>"datastore", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
                  //  MetaModel::Init_AddAttribute(new AttributeString("taille_tot", array("allowed_values"=>null, "sql"=>"taille_tot", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
                    //MetaModel::Init_AddAttribute(new AttributeString("taille_oqp", array("allowed_values"=>null, "sql"=>"taille_oqp", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("Reboot", array("allowed_values"=>null, "sql"=>"Reboot", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("contact", array("allowed_values"=>null, "sql"=>"contact indus", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("Fonction", array("allowed_values"=>null, "sql"=>"fonction", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("Gestionnaire", array("allowed_values"=>null, "sql"=>"gestionnaire", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeEnum("typem", array("allowed_values"=>new ValueSetEnum('VM, Zone Oracle, Zone Web, Ip Virtuelle, Base, ProdVM, MP, Archivee'), "sql"=>"typem", "default_value"=>"Base", "target_attcode"=>"typem", "is_null_allowed"=>false, "depends_on"=>array())));
            MetaModel::Init_SetZListItems('details', array('name', 'IP', 'Gestionnaire', 'environnement', 'type' , 'Fonction', 'bail' , 'datastore', 'org_id', 'importance', 'Reboot', 'comm' , 'contact', 'typem', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'nwinterface_list', 'application_list', 'patch_list'));
            MetaModel::Init_SetZListItems('advanced_search', array('name', 'IP', 'Gestionnaire', 'environnement', 'type', 'Fonction', 'bail' , 'datastore',  'status', 'org_id','Reboot', 'comm' , 'contact', 'typem', 'importance', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
            MetaModel::Init_SetZListItems('standard_search', array('name', 'IP', 'Gestionnaire', 'environnement', 'Fonction', 'type' , 'bail' , 'org_id','datastore' ,'Reboot', 'location_id', 'contact', 'typem'));
            MetaModel::Init_SetZListItems('list', array( 'IP' , 'Gestionnaire', 'environnement', 'Fonction', 'type' , 'org_id', 'comm' , 'bail' , 'datastore' ,'Reboot', 'contact', 'typem'));
        }
    }
    class BDD extends Server
    {
        public static function Init()
        {
            $aParams = array
            (
                "category" => "bizmodel,searchable,configmgmt",
                "key_type" => "autoincrement",
                "name_attcode" => "name",
                "state_attcode" => "",
                "reconc_keys" => array("name","org_id","owner_name","location_id","location_name"),
                "db_table" => "BDD",
                "db_key_field" => "id",
                "db_finalclass_field" => "",
                "icon" => "../modules/itop-config-mgmt-1.0.0/images/database-instance.png",
            );
            MetaModel::Init_Params($aParams);
            MetaModel::Init_InheritAttributes();
            //MetaModel::Init_AddAttribute(new AttributeString("cpu", array("allowed_values"=>null, "sql"=>"cpu", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            //MetaModel::Init_AddAttribute(new AttributeString("ram", array("allowed_values"=>null, "sql"=>"ram", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            //MetaModel::Init_AddAttribute(new AttributeString("hdd", array("allowed_values"=>null, "sql"=>"hdd", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            //MetaModel::Init_AddAttribute(new AttributeString("os_family", array("allowed_values"=>null, "sql"=>"os_family", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            //MetaModel::Init_AddAttribute(new AttributeString("os_version", array("allowed_values"=>null, "sql"=>"os_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeLinkedSet("application_list", array("linked_class"=>"SoftwareInstance", "ext_key_to_me"=>"device_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("patch_list", array("linked_class"=>"lnkPatchToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"patch_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
            //MetaModel::Init_AddAttribute(new AttributeEnum("etat", array("allowed_values"=>new ValueSetEnum('en_test, down, dispo'), "sql"=>"etat", "default_value"=>"dispo", "target_attcode"=>"etat", "is_null_allowed"=>false, "depends_on"=>array())));
            //MetaModel::Init_AddAttribute(new AttributeEnum("environnement", array("allowed_values"=>new ValueSetEnum('PROD,INDUS'), "sql"=>"environnement", "default_value"=>"INDUS", "target_attcode"=>"env", "is_null_allowed"=>false, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('Serveur, FOM'), "sql"=>"type", "default_value"=>"Integration", "target_attcode"=>"type", "is_null_allowed"=>true, "depends_on"=>array())));
            //MetaModel::Init_AddAttribute(new AttributeString("bail", array("allowed_values"=>null, "sql"=>"bail", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
            //MetaModel::Init_AddAttribute(new AttributeString("IP", array("allowed_values"=>null, "sql"=>"IP", "default_value"=>"null", "is_null_allowed"=>false, "depends_on"=>array())));
            //MetaModel::Init_AddAttribute(new AttributeLinkedSet("Server", array("linked_class"=>"Server", "ext_key_to_me"=>"name", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeExternalField("owner_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeExternalKey("server_id", array("targetclass"=>"Server", "jointype"=>null, "allowed_values"=>null, "sql"=>"serv_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeExternalField("name_S", array("allowed_values"=>null, "extkey_attcode"=>"server_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("prctage", array("allowed_values"=>null, "sql"=>"prctage", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("orahome", array("allowed_values"=>null, "sql"=>"orahome", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_AddAttribute(new AttributeString("comm", array("allowed_values"=>null, "sql"=>"comm", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
                 MetaModel::Init_AddAttribute(new AttributeString("taille_tot", array("allowed_values"=>null, "sql"=>"taille_tot", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
                    MetaModel::Init_AddAttribute(new AttributeString("taille_oqp", array("allowed_values"=>null, "sql"=>"taille_oqp", "default_value"=>"null", "is_null_allowed"=>true, "depends_on"=>array())));
            MetaModel::Init_SetZListItems('details', array('name', 'server_id', 'type' ,'taille_tot', 'taille_oqp' , 'org_id', 'comm' ,'orahome', 'prctage',  'location_id', 'location_details', 'asset_ref', 'description', 'cpu', 'ram', 'hdd',  'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'nwinterface_list', 'application_list', 'patch_list'));
            MetaModel::Init_SetZListItems('advanced_search', array( 'name' ,'server_id', 'taille_tot', 'taille_oqp' , 'comm', 'org_id','orahome', 'prctage',  'location_id', 'location_details', 'status' , 'comm' , 'importance','org_id',  'location_id', 'location_details','brand', 'model', 'serial_number', 'asset_ref', 'description', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
            MetaModel::Init_SetZListItems('standard_search', array('name' ,'server_id', 'taille_tot', 'taille_oqp' ,'comm', 'org_id','orahome',  'location_id', 'location_details', 'asset_ref'));
            MetaModel::Init_SetZListItems('list', array( 'server_id', 'type' ,'taille_tot', 'taille_oqp' , 'org_id','orahome' ));
        }
    }
    

    Can someone help me please ? Thanks in advance.
    Thibault.

     
  • boris

    boris - 2012-07-19

    if BDD extends Server, it will have the Server's attributes. You have already set this attribute in Server, why bother declaring it in BDD?

     
  • Thibault A

    Thibault A - 2012-07-20

    Because the "type" attribute in BDD is not the same as the one in Server, that is one of the advantage of inheritance : you can redeclare it if it's different.

    Type in Server :

     MetaModel::Init_AddAttribute(new AttributeEnum("type",[b] array("allowed_values"=>new ValueSetEnum('Dev, Recette, Maintenance, Integration')[/b], "sql"=>"type", "default_value"=>"Integration", "target_attcode"=>"type", "is_null_allowed"=>false, "depends_on"=>array())));
    

    Type in BDD :

     MetaModel::Init_AddAttribute(new AttributeEnum("type", [b]array("allowed_values"=>new ValueSetEnum('Serveur, FOM')[/b], "sql"=>"type", "default_value"=>"Integration", "target_attcode"=>"type", "is_null_allowed"=>true, "depends_on"=>array())));
    

    By the way the default value above is wrong but it doesn't matter. That piece of code used to work in previous versions of iTop.

    Anyway, my coworker fixed the problem my commenting an exception in a file which isn't in previous versions.

    Thanks you anyway.

    Thibault

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.