public function get_selection_manager($table_name)
 {
     #print_r($this->selection_managers);
     if (!isset($this->selection_managers[$table_name])) {
         #print_r($this->selection_managers_file);
         $mysql_user_factory = Database_MySQLUserFactory::get_instance();
         $mysql_user = $mysql_user_factory->get_for_this_project();
         $database = $mysql_user->get_database();
         $table = $database->get_table($table_name);
         if (isset($this->selection_managers_file) && $this->selection_managers_file->has_selection_manager($table_name)) {
             $selection_manager_filename = $this->selection_managers_file->get_selection_manager_filename($table_name);
             #echo "\$selection_manager_filename: $selection_manager_filename\n";
             $selection_manager_file = new FileSystem_PHPClassFile($selection_manager_filename);
             $selection_manager_file->declare_class();
             $selection_manager_reflection_class = new ReflectionClass($selection_manager_file->get_php_class_name());
             $this->selection_managers[$table_name] = $selection_manager_reflection_class->newInstance($table);
         } else {
             #echo "Using default selection manager for $table_name\n";
             $this->selection_managers[$table_name] = $this->default_selection_manager_reflection_class->newInstance($table);
         }
     }
     return $this->selection_managers[$table_name];
 }
 public function get_field_renderer_class($table_name, $field_name)
 {
     if (isset($_SESSION['database-class-names'][$table_name]['fields'][$field_name]['renderer']['class_file'])) {
         require_once PROJECT_ROOT . $_SESSION['database-class-names'][$table_name]['fields'][$field_name]['renderer']['class_file'];
         return new ReflectionClass($_SESSION['database-class-names'][$table_name]['fields'][$field_name]['renderer']['class_name']);
     }
     if (DEBUG) {
         echo DEBUG_DELIM_OPEN;
         echo "Just entered: Database_DatabaseClassFactory::get_field_renderer_class(...)\n";
         echo "\$table_name: {$table_name}\n";
         echo "\$field_name: {$field_name}\n";
         $execution_timer = CLWDProjects_ExecutionTimer::get_instance();
         $execution_timer->mark();
         echo DEBUG_DELIM_CLOSE;
     }
     if (isset($this->field_renderer_classes[$table_name][$field_name])) {
         if (DEBUG) {
             echo DEBUG_DELIM_OPEN;
             echo "\$this->field_renderer_classes[{$table_name}][{$field_name}] is already set.\n";
             $execution_timer->mark();
             echo DEBUG_DELIM_CLOSE;
         }
     } else {
         $this->field_renderer_classes[$table_name][$field_name] = null;
         $project_directory_finder = HaddockProjectOrganisation_ProjectDirectoryFinder::get_instance();
         $project_directory = $project_directory_finder->get_project_directory_for_this_project();
         $project_specific_directory = $project_directory->get_project_specific_directory();
         $field_renderer_class_file = null;
         if ($project_specific_directory->has_database_class_name_file()) {
             $database_class_name_file = $project_specific_directory->get_database_class_name_file();
             if ($database_class_name_file->has_field_renderer_class_file($table_name, $field_name)) {
                 $field_renderer_class_file = $database_class_name_file->get_field_renderer_class_file($table_name, $field_name);
             }
         }
         # Fallback.
         if (!isset($field_renderer_class_file)) {
             $field_renderer_class_file = new FileSystem_PHPClassFile(PROJECT_ROOT . '/haddock/database/classes/renderers/Database_FieldRenderer.inc.php');
         }
         $field_renderer_class_file->declare_class();
         $this->field_renderer_classes[$table_name][$field_name] = new ReflectionClass($field_renderer_class_file->get_php_class_name());
     }
     if (DEBUG) {
         echo DEBUG_DELIM_OPEN;
         echo "About to return from: Database_DatabaseClassFactory::get_field_renderer_class(...)\n";
         $execution_timer->mark();
         echo "\$this->field_renderer_classes[{$table_name}][{$field_name}]:\n";
         print_r($this->field_renderer_classes[$table_name][$field_name]);
         echo DEBUG_DELIM_CLOSE;
     }
     return $this->field_renderer_classes[$table_name][$field_name];
 }
 /**
  * Should this be deprecated and moved to a helper class?
  */
 public static function cmp_php_class_names(FileSystem_PHPClassFile $a, FileSystem_PHPClassFile $b)
 {
     return strcasecmp($a->get_php_class_name(), $b->get_php_class_name());
 }