private static function prepareData(Blueprint $blueprint, $where = NULL, array $filters = NULL)
 {
     $tag = "EntityExporter::prepareData()";
     Log::notice("{$tag}");
     /*
     // BUILD QUERY
     */
     $query = new EntityQuery($blueprint);
     // WHERE
     if ($where != NULL) {
         $query->where($where);
     }
     // FILTERS
     if ($filters != NULL) {
         foreach ($filters as $key => $value) {
             if (ereg("^filter_(.+)_(.+)", $key, $regs)) {
                 $filter_field = $regs[1];
                 $filter_type = $regs[2];
                 $field = $blueprint->get($filter_field);
                 switch ($field->getDataType()) {
                     case "string":
                         switch ($filter_type) {
                             case "like":
                                 $query->where("{$filter_field} LIKE '%{$value}%'");
                                 break;
                             case "equals":
                                 $query->where("{$filter_field}='{$value}'");
                                 break;
                         }
                         break;
                     case "int":
                         switch ($filter_type) {
                             case "equals":
                                 $query->where("{$filter_field}={$value}");
                                 break;
                             case "min":
                                 $query->where("{$filter_field}>={$value}");
                                 break;
                             case "max":
                                 $query->where("{$filter_field}<={$value}");
                         }
                         break;
                     case "decimal":
                         switch ($filter_type) {
                             case "equals":
                                 $query->where("{$filter_field}='{$value}'");
                                 break;
                             case "min":
                                 $query->where("{$filter_field}>='{$value}'");
                                 break;
                             case "max":
                                 $query->where("{$filter_field}<='{$value}'");
                         }
                         break;
                     case "date":
                     case "datetime":
                         switch ($filter_type) {
                             case "equals":
                                 $query->where("{$filter_field}='{$value}'");
                                 break;
                             case "min":
                                 $query->where("{$filter_field}>='{$value}'");
                                 break;
                             case "max":
                                 $query->where("{$filter_field}<='{$value}'");
                         }
                         break;
                     case "enum":
                         switch ($filter_type) {
                             case "like":
                                 $query->where("{$filter_field} LIKE '%{$value}%'");
                                 break;
                             case "equals":
                                 $query->where("{$filter_field}='{$value}'");
                                 break;
                         }
                         break;
                 }
                 // END: switch($field->getDataType())
             }
             // END: if(ereg("^filter_(.+)_(.+)", $key, $regs))
         }
         // END: foreach($filters as $key=>$value)
     }
     // END: if($filters != NULL)
     // Execute Query
     $sql = new DatabaseQuery($query->toString());
     try {
         $sql->doQuery();
         $num_rows = $sql->get_num_rows();
         Log::debug("{$tag}: Exporting {$num_rows} rows");
         return $sql;
     } catch (Exception $e) {
         Log::error("{$tag}: [" . $sql->err_code . "] " . $sql->err_message);
         throw $e;
     }
 }