]> 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
      * 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
      *
      * @var    int $status
      * @access public
@@ -164,6 +163,14 @@ class YATTA_Proceso extends MECON_DBO {
      */
     var $resultado = null;
     
      */
     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.
     /**
      * 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;
      * @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.
     
     /**
      * 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')) {
     {
         // 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)) {
             $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;
             }
             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.
     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;
         $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.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)) {
         }
         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)) {
         }
         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;
         }
         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->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) {
         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 {
                 }
             }
             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)) {
             }
         }
         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)) {
         } 
         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)) {
         } 
         if (!is_null($this->nota)) {
-            $where[] = 'p.nota LIKE'. $db->quote("%$this->nota%");
+            $where[] = 'p.nota LIKE '. $db->quote("%$this->nota%");
         } 
         if ($where) {
         } 
         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).')';
         } 
         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))
         }
         // Armo el ORDER BY.
         if (is_string($orden))
@@ -325,27 +345,62 @@ class YATTA_Proceso extends MECON_DBO {
             $orden = '';
         }
         
             $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 
                 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");
     }
 
     /**
                 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
      */
      * @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,
         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,
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
+                        'archivo'       => $this->archivo,
                         'nota'          => $this->nota
                     );
 
                         'nota'          => $this->nota
                     );
 
@@ -382,6 +438,7 @@ class YATTA_Proceso extends MECON_DBO {
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
+                        'archivo'       => $this->archivo,
                         'nota'          => $this->nota
                     );
 
                         'nota'          => $this->nota
                     );
 
@@ -389,6 +446,15 @@ class YATTA_Proceso extends MECON_DBO {
                     DB_AUTOQUERY_UPDATE, 'id = '.$this->id);
             
         }
                     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;
     }
 
         return $res;
     }
 
@@ -414,7 +480,9 @@ class YATTA_Proceso extends MECON_DBO {
         $this->scheduling = null;
         $this->notificar = null;
         $this->resultado = null;
         $this->scheduling = null;
         $this->notificar = null;
         $this->resultado = null;
+        $this->archivo = null;
         $this->nota = null;
         $this->nota = null;
+        $this->icono = null;
     }
 }
 ?>
\ No newline at end of file
     }
 }
 ?>
\ No newline at end of file