Code generation: Algoritmo básico

A continuación se presenta el pseudocódigo base para la generación de código a partir de un esquema de base de datos.

El codigo supone la existencia de las siguientes clases:

  • Entidad: Mapeo de una entidad de la base de datos compuesta por un nombre y un conjunto de campos.
  • Campo: Mapeo de un campo de una entidad de la base de datos, compuesto por un nombre, y un alias (único para cada campo)
abstract class CodeGeneration {
  
  Entidad $entidad;  

  public function main(){
    $this->generarComienzo();
    $this->recursion($this->entidad);
    $this->generarFin();
  }

  abstract protected function generarComienzo();
  abstract protected function generarFin();
  abstract protected function generarCuerpo($entidad, $prefijo);
  
  protected function recursion(Entidad $entidad, array<string> $visitado = [], string $prefijo= ""){
    if (!empty($prefijo)){ $this->body($entity, $prefix); }

    $this->recorrerClavesForaneas(Entidad $entidad, array<string> $visitado, string $prefijo);
  }

  public function recorrerClavesForaneas(Entidad $entidad, array<string> $visitado, string $prefijo){
    array<Campo> $fk = $entidad->obtenerClavesForaneasNoVisitadas($visitado);
    $prefijoAuxiliar = (empty($prefijo)) ? "" : $prefijo. "_";
    array_push($visitado, $entidad->nombre());

    foreach($fk as $campo){
      $this->recursion($campo->entidadReferenciada(), $visitado, $prefijoAuxiliar.$campo->alias());
    }
  }
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *