]> git.llucax.com Git - mecon/yatta.git/blobdiff - lib/YATTA/Proceso.php
YATTA_Proceso cuando asigna un servidor a un nuevo proceso lo hace ponderando.
[mecon/yatta.git] / lib / YATTA / Proceso.php
index 0f7c963e2dc1964b583bd3ff14d96b1965738b7c..2c1e2fe3747c15f86d03d44342ea849da07711bc 100644 (file)
@@ -105,10 +105,9 @@ class YATTA_Proceso extends MECON_DBO {
      * Estado del proceso.       
      * 0 = En Espera
      * 1 = Procesando
-     * 2 = Finalizado sin copiar el resultado al tacho
-     * 3 = Finalizado
-     * 4 = Error
-     * 5 = Abortado
+     * 2 = Finalizado
+     * 3 = Error
+     * 4 = Abortado
      *
      * @var    int $status
      * @access public
@@ -164,6 +163,14 @@ class YATTA_Proceso extends MECON_DBO {
      */
     var $resultado = null;
     
+    /**
+     * Nombre del archivo en el tacho
+     *
+     * @var    string $archivo
+     * @access public
+     */
+    var $archivo = null;
+    
     /**
      * Nota explicativa sobre el error producido o el motivo por el cual se
      * aborto el proceso.
@@ -172,6 +179,14 @@ class YATTA_Proceso extends MECON_DBO {
      * @access public
      */
     var $nota = null;
+
+    /**
+     * Descripcion del estado.
+     *
+     * @var    string $icono
+     * @access public
+     */
+    var $icono = null;
     
     /**
      * Carga el objeto con los datos que se pasan por parametro.
@@ -185,6 +200,7 @@ class YATTA_Proceso extends MECON_DBO {
     {
         // Si es un resultado, obtengo los elemento.
         if (is_a($db, 'db_result')) {
+            $this->predefinirAtributos();
             $res = $db->fetchRow(DB_FETCHMODE_ASSOC);
             // Si hay error lo devuelve.
             if (DB::isError($res)) {
@@ -193,27 +209,29 @@ class YATTA_Proceso extends MECON_DBO {
             elseif (!$res) {
                 return false;
             }
+
+            $this->id               = $res['id'];
+            $fecha                  =& new Date ($res['fecha'].' 00:00:00');
+            $this->fecha            = $fecha; 
+            $this->script           = $res['script'];
+            $this->id_sistema       = $res['id_sistema'];
+            $this->nombre_sistema   = $res['nombre_sistema'];
+            $this->descripcion      = $res['descripcion'];
+            $this->pid              = $res['pid'];
+            $this->server           = $res['server'];
+            $this->status           = $res['status'];
+            $this->owner            = $res['owner'];
+            $this->destinos         = split(',', $res['destinos']);
+            $this->prioridad        = $res['prioridad'];
+            $this->scheduling       = $res['scheduling'];
+            $this->notificar        = $res['notificar'];
+            $this->resultado        = $res['resultado'];
+            $this->archivo          = $res['archivo'];
+            $this->nota             = $res['nota'];
+            $this->icono            = $res['icono'];
+            return true;
         }
-        
-        $this->id               = $res['id'];
-        $fecha                  =& new Date ($res['fecha'].' 00:00:00');
-        $this->fecha            = $fecha; 
-        $this->script           = $res['script'];
-        $this->id_sistema       = $res['id_sistema'];
-        $this->nombre_sistema   = $res['nombre_sistema'];
-        $this->descripcion      = $res['descripcion'];
-        $this->pid              = $res['pid'];
-        $this->server           = $res['server'];
-        $this->status           = $res['status'];
-        $this->owner            = $res['owner'];
-        $this->destinos         = split(',', $res['destinos']);
-        $this->prioridad        = $res['prioridad'];
-        $this->scheduling       = $res['scheduling'];
-        $this->notificar        = $res['notificar'];
-        $this->resultado        = $res['resultado'];
-        $this->nota             = $res['nota'];
-   
-        return true;
+        return false; 
     }
 
     /**
@@ -242,6 +260,9 @@ class YATTA_Proceso extends MECON_DBO {
     function buscar($db = null, $operador = MECON_DBO_OR, $orden = null) 
     {
         // Armo el WHERE.
+        if (is_null($this->owner)) {
+            return new PEAR_Error ('Debe definirse el Owner del proceso.');
+        }
         $where = array();
         if (!is_null($this->id)) {
             $where[] = 'p.id = '.$this->id;
@@ -257,16 +278,16 @@ class YATTA_Proceso extends MECON_DBO {
             $where[] = 'p.fecha = '. $db->quote("$fecha");
         }
         if (!is_null($this->script)) {
-            $where[] = 'p.script LIKE'. $db->quote("%$this->script%");
+            $where[] = 'p.script LIKE '. $db->quote("%$this->script%");
         }
         if (!is_null($this->id_sistema)) {
             $where[] = 'p.id_sistema = '. $this->id_sistema; 
         }
         if (!is_null($this->nombre_sistema)) {
-            $where[] = 's.nombre_sistema LIKE'. $db->quote("%$this->nombre_sistema%");
+            $where[] = 's.nombre_sistema LIKE '. $db->quote("%$this->nombre_sistema%");
         }
         if (!is_null($this->descripcion)) {
-            $where[] = 'p.descripcion LIKE'. $db->quote("%$this->descripcion%");
+            $where[] = 'p.descripcion LIKE '. $db->quote("%$this->descripcion%");
         }
         if (!is_null($this->pid)) {
             $where[] = 'p.pid = '.$this->pid;
@@ -277,40 +298,39 @@ class YATTA_Proceso extends MECON_DBO {
         if (!is_null($this->status)) {
             $where[] = 'p.status = '.$this->status;
         }
-        if (!is_null($this->owner)) {
-            $where[] = 'p.owner LIKE'. $db->quote("%$this->owner%");
-        }
         if (!is_null($this->destinos)) {
             if (is_array($this->destinos)) {
                 foreach ($this->destinos as $destino) {
-                    $where[] = 'p.destinos LIKE'. $db->quote("%$destino");
+                    $where[] = 'p.destinos LIKE '. $db->quote("%$destino");
                 }
             }
             else {
-                $where[] = 'p.destinos LIKE'. $db->quote("%$this->destinos%");
+                $where[] = 'p.destinos LIKE '. $db->quote("%$this->destinos%");
             }
         }
         if (!is_null($this->prioridad)) {
             $where[] = 'p.prioridad = '.$this->prioridad;
         }
         if (!is_null($this->scheduling)) {
-            $where[] = 'p.scheduling LIKE'. $db->quote("%$this->scheduling%");
+            $where[] = 'p.scheduling LIKE '. $db->quote("%$this->scheduling%");
         } 
         if (!is_null($this->notificar)) {
             $where[] = 'p.notificar ='. $this->notificar;
         } 
         if (!is_null($this->resultado)) {
-            $where[] = 'p.resultado LIKE'. $db->quote("%$this->resultado%");
+            $where[] = 'p.resultado LIKE '. $db->quote("%$this->resultado%");
         } 
         if (!is_null($this->nota)) {
-            $where[] = 'p.nota LIKE'. $db->quote("%$this->nota%");
+            $where[] = 'p.nota LIKE '. $db->quote("%$this->nota%");
         } 
         if ($where) {
-            $where = 'WHERE p.id_sistema = s.id_sistema AND ('. join ("$operador
+            $where = 'WHERE p.owner = '. $db->quote("$this->owner").
+                'AND p.id_sistema = s.id_sistema AND ('. join ("$operador
                         ", $where).')';
         } 
         else {
-            $where = '';
+            $where = 'WHERE p.owner = '. $db->quote("$this->owner").
+                'AND p.id_sistema = s.id_sistema';
         }
         // Armo el ORDER BY.
         if (is_string($orden))
@@ -325,27 +345,62 @@ class YATTA_Proceso extends MECON_DBO {
             $orden = '';
         }
         
-        return $db->query("SELECT p.id AS id, p.fecha AS fecha, p.script AS
+        return $db->query("SELECT p.id AS id, 
+                DATE_FORMAT(p.fecha, '%d-%m-%Y') AS fecha, 
+                p.script AS
                 script, p.id_sistema AS id_sistema, s.nombre_sistema AS
                 nombre_sistema, p.descripcion AS descripcion, p.pid AS pid, 
                 p.server AS server, p.status AS status, p.owner AS owner, 
                 p.destinos AS destinos, p.prioridad AS prioridad, p.scheduling 
                 AS scheduling, p.notificar AS notificar, p.resultado AS 
-                resultado, p.nota AS nota
+                resultado, p.nota AS nota, p.archivo AS archivo, ".
+                "IF (p.status = 0, 'El proceso esta en cola. Aun no se ejecuto.".
+                "', ".
+                "IF(p.status = 1, 'El proceso se esta ejecutando en este momento.".
+                "',".
+                "IF(p.status = 2, 'El proceso ha finalizado. ".
+                "',".
+                "IF(p.status = 3, 'Se produjo un error durante la ejecucion".
+                " del proceso.".
+                "',".
+                "'El proceso fue detenido por alguna persona (el responsable o".
+                " el administrador).".
+                "'".
+                ")".
+                ")".
+                ")".
+                ") AS icono               
                 FROM yatta.procesos AS p, samurai.sistema AS s
                 $where
                 $orden");
     }
 
     /**
+     * Guarda los datos en la base.
+     *
      * @param  DB $db Conexion a la base de datos.
      * @param  bool $nuevo Indica si se trata de un nuevo registro en la base.
      *
      * @return mixed
      * @access public
      */
-    function guardar($db = null, $nuevo = false)
+    function guardar($db = null, $nuevo = true)
     {
+        //Busco el servidor
+        $res = $db->query('SELECT id, escala * procesos AS ponderacion
+                FROM yatta.servidores 
+                ORDER BY ponderacion, escala');
+        $res = $res->fetchRow(DB_FETCHMODE_ASSOC);
+        // Si hay error lo devuelve.
+        if (DB::isError($res)) {
+            return $res;
+        }
+        $this->server = $res['id'];
+        //Asigno la fecha
+        if (@is_null($this->fecha)) {
+            $this->fecha = date ('Y-m-d');
+        }
+        
         if ($nuevo) {
             $datos = array (
                         'fecha'         => $this->fecha,
@@ -361,6 +416,7 @@ class YATTA_Proceso extends MECON_DBO {
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
+                        'archivo'       => $this->archivo,
                         'nota'          => $this->nota
                     );
 
@@ -382,6 +438,7 @@ class YATTA_Proceso extends MECON_DBO {
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
+                        'archivo'       => $this->archivo,
                         'nota'          => $this->nota
                     );
 
@@ -389,6 +446,15 @@ class YATTA_Proceso extends MECON_DBO {
                     DB_AUTOQUERY_UPDATE, 'id = '.$this->id);
             
         }
+
+        if (DB::isError($res)) {
+            return $res;
+        }
+
+        $res = $db->query('
+                UPDATE yatta.servidores
+                SET procesos = procesos + 1
+                WHERE id = '. $this->server);
         return $res;
     }
 
@@ -414,7 +480,9 @@ class YATTA_Proceso extends MECON_DBO {
         $this->scheduling = null;
         $this->notificar = null;
         $this->resultado = null;
+        $this->archivo = null;
         $this->nota = null;
+        $this->icono = null;
     }
 }
 ?>
\ No newline at end of file