protected function createCommand(ReflectionMethod $method)
 {
     $methodName = $method->getName();
     $pdo = HermitDataSourceManager::get($this->context->getName(), $methodName, HermitEvent::EVT_SETUP);
     if (null === $pdo) {
         throw new RuntimeException('setup connection fail. pdo: ' . $pdo);
     }
     if (HermitNamingUtils::isProcedure($methodName)) {
         $factory = new HermitProcedureSqlCommandFactory();
     } else {
         if (HermitNamingUtils::isInsert($methodName)) {
             $factory = new HermitInsertSqlCommandFactory();
         } else {
             if (HermitNamingUtils::isUpdate($methodName)) {
                 $factory = new HermitUpdateSqlCommandFactory();
             } else {
                 if (HermitNamingUtils::isDelete($methodName)) {
                     $factory = new HermitDeleteSqlCommandFactory();
                 } else {
                     $factory = new HermitSelectSqlCommandFactory();
                 }
             }
         }
     }
     $factory->setAnnote($this->annote);
     $factory->setMethod($method);
     return $factory->create($pdo, $this->context);
 }
 protected static function getEventType($methodName)
 {
     if (HermitNamingUtils::isProcedure($methodName)) {
         return HermitEvent::EVT_PROCEDURE;
     }
     if (HermitNamingUtils::isInsert($methodName)) {
         return HermitEvent::EVT_INSERT;
     }
     if (HermitNamingUtils::isUpdate($methodName)) {
         return HermitEvent::EVT_UPDATE;
     }
     if (HermitNamingUtils::isDelete($methodName)) {
         return HermitEvent::EVT_DELETE;
     }
     return HermitEvent::EVT_SELECT;
 }