Пример #1
0
                            }
                        }
                    }
                }
            }
        }
    }
}
//require_once($config_dir . '/config.php');
require_once '/export/servers/' . $v_path . '/PhpCodeFactory/code/parseConfig.php';
$tDtl = array();
$tDtl['IP'] = $agentip;
$tDtl['PORT'] = $agentport;
$tDtl['TOKEN'] = $accesstoken;
parseConfig($cfg, $tDtl);
if ($php_dir != null) {
    TPL2CODE::buildDTCfg($tDtl, $php_dir, $v_path);
    TPL2CODE::buildDTCPHP($tDtl, $php_dir, $v_path);
    var_dump(TPL2CODE::$errMsg);
}
if ($java_dir != null) {
    TPL2CODE::buildDTCfg($tDtl, $java_dir, $v_path);
    TPL2CODE::buildDTCJAVA($tDtl, $java_dir, $v_path);
    var_dump(TPL2CODE::$errMsg);
}
if ($cplus_dir != null) {
    TPL2CODE::buildDTCfg($tDtl, $cplus_dir, $v_path);
    TPL2CODE::buildDTCCplus($tDtl, $cplus_dir, $v_path);
    var_dump(TPL2CODE::$errMsg);
}
//End Of Script
Пример #2
0
 static function buildDTCCplus($tDtl, $dir, $path)
 {
     self::clearError();
     $cfgFile = $dir . '/' . $tDtl['TABLE_NAME'] . '.conf';
     $dtcCfg = parse_ini_file($cfgFile, true);
     if (!is_array($dtcCfg)) {
         self::$errCode = 100;
         self::$errMsg = '读取TTC配置文件失败';
         return false;
     }
     if (!isset($dtcCfg['FIELD1']) || !isset($dtcCfg['TABLE_DEFINE']['TableName'])) {
         self::$errCode = 100;
         self::$errMsg = 'TTC配置文件格式错误';
         return false;
     }
     $dtcFieldLst = array();
     for ($i = 1;; ++$i) {
         $key = 'FIELD' . $i;
         if (!key_exists($key, $dtcCfg)) {
             break;
         }
         if (!is_array($dtcCfg[$key])) {
             break;
         }
         $index = $i - 1;
         $dtcFieldLst[$index] = array();
         $dtcFieldLst[$index]['name'] = $dtcCfg[$key]['FieldName'];
         if (isset($dtcCfg[$key]['DefaultValue']) && $dtcCfg[$key]['DefaultValue'] == "auto_increment") {
             $dtcFieldLst[$index]['auto'] = true;
         }
         if ($dtcCfg[$key]['FieldType'] == 1) {
             //signed
             $dtcFieldLst[$index]['type'] = 1;
             switch ($dtcCfg[$key]['FieldSize']) {
                 case 1:
                     $dtcFieldLst[$index]['min'] = -128;
                     $dtcFieldLst[$index]['max'] = 127;
                     break;
                 case 2:
                     $dtcFieldLst[$index]['min'] = -65536;
                     $dtcFieldLst[$index]['max'] = 0x7fff;
                     break;
                 case 4:
                     $dtcFieldLst[$index]['min'] = -2147483648;
                     $dtcFieldLst[$index]['max'] = 0x7fffffff;
                     break;
                 case 8:
                     //当做字符串处理
                     //						$dtcFieldLst[$index]['min'] = -9223372036854775808;
                     //						$dtcFieldLst[$index]['max'] = 0x7FFFFFFFFFFFFFFF;
                     $dtcFieldLst[$index]['min'] = -2147483648;
                     $dtcFieldLst[$index]['max'] = 0x7fffffff;
                     break;
                 default:
                     self::$errCode = 100;
                     self::$errMsg = "FILED[" . $dtcCfg[$key]['FieldName'] . "] SIZE TOO BIG " . $dtcCfg[$key]['FieldSize'];
                     return false;
             }
         } else {
             if ($dtcCfg[$key]['FieldType'] == 2) {
                 //unsigned
                 $dtcFieldLst[$index]['type'] = 2;
                 $dtcFieldLst[$index]['min'] = 0;
                 switch ($dtcCfg[$key]['FieldSize']) {
                     case 1:
                         $dtcFieldLst[$index]['max'] = 255;
                         break;
                     case 2:
                         $dtcFieldLst[$index]['max'] = 0xffff;
                         break;
                     case 4:
                         $dtcFieldLst[$index]['max'] = 0xffffffff;
                         break;
                     case 8:
                         //当做字符串处理
                         //						$dtcFieldLst[$index]['min'] = 0;
                         //						$dtcFieldLst[$index]['max'] = 0xFFFFFFFFFFFFFFFF;
                         $dtcFieldLst[$index]['min'] = 0;
                         $dtcFieldLst[$index]['max'] = 0xffffffff;
                         break;
                     default:
                         self::$errCode = 100;
                         self::$errMsg = "FILED[" . $dtcCfg[$key]['FieldName'] . "] SIZE TOO BIG " . $dtcCfg[$key]['FieldSize'];
                         return false;
                 }
             } else {
                 if ($dtcCfg[$key]['FieldType'] == 4) {
                     //STRING
                     $dtcFieldLst[$index]['type'] = 4;
                     $dtcFieldLst[$index]['min'] = 0;
                     $dtcFieldLst[$index]['max'] = $dtcCfg[$key]['FieldSize'];
                 } else {
                     if ($dtcCfg[$key]['FieldType'] == 5) {
                         //STRING
                         $dtcFieldLst[$index]['type'] = 5;
                         $dtcFieldLst[$index]['min'] = 0;
                         $dtcFieldLst[$index]['max'] = $dtcCfg[$key]['FieldSize'];
                     } else {
                         if ($dtcCfg[$key]['FieldType'] == 3) {
                             //FLOAT
                             $dtcFieldLst[$index]['type'] = 3;
                             $dtcFieldLst[$index]['min'] = -0xffffffff;
                             $dtcFieldLst[$index]['max'] = 0xffffffff;
                         } else {
                             self::$errCode = 100;
                             self::$errMsg = "FILED[" . $dtcCfg[$key]['FieldName'] . "TYPE IS INVALID ";
                             return false;
                         }
                     }
                 }
             }
         }
     }
     $itLst = $tDtl['FIELDS'];
     $str = "/export/servers/" . $path . "/PhpCodeFactory/tpl/tpl_c++/";
     $tpl = new Template($str);
     $tpl->set_file("main", "dtc.h");
     $tpl->set_var('Dtckey', $tDtl['TTCKEY']);
     $tpl->set_var('IP', $tDtl['IP']);
     $tpl->set_var('Port', $tDtl['PORT']);
     $tpl->set_var('Token', $tDtl['TOKEN']);
     //$tpl->set_var('PRIKEY', $tDtl['FIELDS'][0]['name']);
     $tpl->set_var('TableName', $tDtl['TABLE_NAME']);
     $tpl->set_block('main', 'FIELD1', 'FIELD1S');
     //$tpl->set_block('main', 'FIELD2', 'FIELD2S');
     //$len  = self::getFieldsMaxLen($itLst);
     foreach ($dtcFieldLst as $it) {
         $strName = str_pad($it['name'], strlen($it['name']));
         $tpl->set_var('FIELD1Name', $strName);
         $tpl->set_var('FIELD1Type', $it['type']);
         $tpl->set_var('minsize', $it['min']);
         $tpl->set_var('maxsize', $it['max']);
         $tpl->parse('FIELD1S', 'FIELD1', true);
     }
     foreach ($itLst as $it) {
         $strName = str_pad($it['name'], strlen($it['name']));
         $tpl->set_var('FIELD2Name', $strName);
         $tmp = $it['type'] != 4 && $it['type'] != 5 ? ' XXX' : "'XXX'";
         $tpl->set_var('FIELD2_VALUE', $tmp);
         $tpl->set_var('FIELD2_NAME_CH', $it['cname']);
         $tpl->parse('FIELD2S', 'FIELD2', true);
     }
     $tpl->parse("main", "main");
     $v = $tpl->get_var("main");
     self::writeFile($dir . '/', "dtc_{$tDtl['TABLE_NAME']}.h", $v);
     $tpl1 = new Template($str);
     $tpl1->set_file("main1", "dtc.cpp");
     $tpl1->set_var('TableName', $tDtl['TABLE_NAME']);
     $tpl1->parse("main1", "main1");
     $v1 = $tpl1->get_var("main1");
     self::writeFile($dir . '/', "dtc_{$tDtl['TABLE_NAME']}.cpp", $v1);
     $errorCode = false;
     $ss = "/export/servers/" . $path . "/PhpCodeFactory/tpl/tpl_c++/ttcapi.h ";
     $cmd = 'cp -p ' . $ss . $dir;
     exec($cmd, $errorCode);
     return $errorCode;
 }