]> git.llucax.com Git - mecon/yatta.git/commitdiff
(no commit message)
authorMartín Marrese <marrese@gmail.com>
Fri, 9 Jan 2004 21:37:26 +0000 (21:37 +0000)
committerMartín Marrese <marrese@gmail.com>
Fri, 9 Jan 2004 21:37:26 +0000 (21:37 +0000)
lib/YATTA/Controlador.php [new file with mode: 0644]
lib/YATTA/Proceso.php
lib/YATTA/Servidor.php [new file with mode: 0644]
script/servidores/YATTA_Server.php [new file with mode: 0755]
sistema/www/procesos.php
sistema/www/procesos_popup.php
test/nuevo_proceso.php

diff --git a/lib/YATTA/Controlador.php b/lib/YATTA/Controlador.php
new file mode 100644 (file)
index 0000000..670ddd0
--- /dev/null
@@ -0,0 +1,129 @@
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-------------------------------------------------------------------------------
+                             Ministerio de Economía
+                                    YATTA!
+-------------------------------------------------------------------------------
+This file is part of YATTA!.
+
+YATTA! is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+YATTA! is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA  02111-1307  USA
+-------------------------------------------------------------------------------
+Creado: vie ene  9 16:28:04 ART 2004
+Autor:  Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
+
+require_once 'YATTA/Proceso.php';
+require_once 'YATTA/Servidor.php';
+
+/**
+ * Clase para el manejo centralizado de toda la informacion de YATTA.
+ *
+ * @access public
+ */
+class YATTA_Controlador {
+
+    /**
+     * Agrega un proceso a la base de datos
+     * Los datos obligatorios a pasar son: script, id_sistema, descripcion,
+     * owner, destinos, prioridad, scheduling y notificar.
+     *
+     * @param  DB $db Conexion a la base de datos.
+     * @param  mixed $datos Datos necesarios del proceso.
+     *
+     * @return mixed
+     * @access public
+     */
+    function agregarProceso($db, $datos) {
+        //XXX Dentro de los datos puede estar el tiempo estimado de ejecucion
+        //del proceso. Esta informacion podria ser utilizada en futuras
+        //versiones para asignar servidores.
+        if (!is_array($datos)) {
+            $datos = $datos->obtenerDatos();
+        }
+        $res = $this->_obtenerServidor($db);
+        if (DB::isError($res)) {
+            return $res;
+        }
+        $datos['server'] = $res;
+        $datos['fecha'] = date('Y-m-d');
+        $res = $db->autoExecute('yatta.procesos', $datos, DB_AUTOQUERY_INSERT);
+        if (DB::isError($res)) {
+            return $res;
+        }
+        $SERVER =& new YATTA_Servidor;
+        $res = $SERVER->agregarProceso($db, $datos['server']);
+        return $res;
+    }
+
+    /**
+     * Obtiene el nombre del servidor al cual asignar un nuevo proceso.
+     *
+     * @param DB $db Conexion a la base de datos.
+     *
+     * @return mixed
+     * @access private
+     */
+    function _obtenerServidor($db) {
+        $res = $db->query('SELECT s.id, s.escala * s.procesos AS ponderacion
+            FROM yatta.servidores AS s 
+            ORDER BY ponderacion DESC, s.escala DESC');
+        // Si hay error lo devuelve.
+        if (DB::isError($res)) {
+            return $res;
+        }
+        $res = $res->fetchRow(DB_FETCHMODE_ASSOC);
+        return  $res['id'];
+    }
+    /**
+     * Obtiene los procesos de un usuario.
+     *
+     * @param DB $db Conexion a la base de datos.
+     * @param string $owner Usuario duenio de los procesos.
+     * @param int $id Identificador del proceso a buscar
+     *
+     * @return mixed
+     * @access public
+     */
+    function obtenerProcesosUsuario($db, $owner, $id = null) {
+        $proceso =& new YATTA_Proceso;
+        $proceso->owner = $owner;
+        if (@$id) {
+            $proceso->id = $id;
+        }
+        return $proceso->buscar($db, MECON_DBO_AND, ' id ASC');
+    }
+
+    /**
+     * Obtiene un proceso de un usuario.
+     *
+     * @param DB $db Conexion a la base de datos.
+     * @param string $owner Usuario duenio de los procesos.
+     * @param int $id Identificador del proceso a buscar
+     *
+     * @return mixed
+     * @access public
+     */
+    function obtenerProcesoUsuario($db, $owner, $id) {
+        $proceso =& new YATTA_Proceso;
+        $proceso->owner = $owner;
+        $proceso->id = $id;
+        $res = $proceso->buscar($db, MECON_DBO_AND, ' id ASC');
+        $proceso->cargar($res);
+        return $proceso;
+    }
+   
+}
+?>
\ No newline at end of file
index 2c1e2fe3747c15f86d03d44342ea849da07711bc..2838fd3e8c15a8fe38071b5f8191fd3a4bf6601b 100644 (file)
@@ -209,10 +209,8 @@ 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->fecha            = $res['fecha']; 
             $this->script           = $res['script'];
             $this->id_sistema       = $res['id_sistema'];
             $this->nombre_sistema   = $res['nombre_sistema'];
@@ -386,6 +384,8 @@ class YATTA_Proceso extends MECON_DBO {
      */
     function guardar($db = null, $nuevo = true)
     {
+
+        //@TODO PASAR ESTO A UNA CLASE SERVIDOR
         //Busco el servidor
         $res = $db->query('SELECT id, escala * procesos AS ponderacion
                 FROM yatta.servidores 
@@ -484,5 +484,24 @@ class YATTA_Proceso extends MECON_DBO {
         $this->nota = null;
         $this->icono = null;
     }
+    
+    /**
+     * Devuelve un array asociativo con los valores del proceso.
+     *
+     * @return array
+     * @access public
+     */
+    function obtenerDatos() {
+        return array (
+                        'script'        => $this->script,
+                        'id_sistema'    => $this->id_sistema,
+                        'descripcion'   => $this->descripcion,
+                        'owner'         => $this->owner,
+                        'destinos'      => $this->destinos,
+                        'prioridad'     => $this->prioridad,
+                        'scheduling'    => $this->scheduling,
+                        'notificar'     => $this->notificar,
+                );
+    }
 }
 ?>
\ No newline at end of file
diff --git a/lib/YATTA/Servidor.php b/lib/YATTA/Servidor.php
new file mode 100644 (file)
index 0000000..d91ddd1
--- /dev/null
@@ -0,0 +1,51 @@
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-------------------------------------------------------------------------------
+                             Ministerio de Economía
+                                    YATTA!
+-------------------------------------------------------------------------------
+This file is part of YATTA!.
+
+YATTA! is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+YATTA! is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA  02111-1307  USA
+-------------------------------------------------------------------------------
+Creado: vie ene  9 17:34:23 ART 2004
+Autor:  Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
+
+/**
+ * Clase para el manejo de los servidores de YATTA.
+ *
+ * @access public
+ */
+class YATTA_Servidor {
+
+    /**
+     * Agrega un proceso a la cola de procesos del servidor
+     *
+     * @param  DB $db Conexion a la base de datos.
+     * @param  int $id Identificador del servidor.
+     *
+     * @return mixed
+     * @access public
+     */
+    function agregarProceso($db, $id) {
+        $res = $db->query('
+                UPDATE yatta.servidores
+                SET procesos = procesos + 1
+                WHERE id = '. $id);
+        return $res;
+    }
+}
+?>
\ No newline at end of file
diff --git a/script/servidores/YATTA_Server.php b/script/servidores/YATTA_Server.php
new file mode 100755 (executable)
index 0000000..06ca1f1
--- /dev/null
@@ -0,0 +1,54 @@
+#!/usr/bin/php4 -qC
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80 foldmethod=marker:
+-------------------------------------------------------------------------------
+                             Ministerio de Economía
+                                    YATTA!
+-------------------------------------------------------------------------------
+This file is part of YATTA!.
+
+YATTA! is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+YATTA! is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA  02111-1307  USA
+-------------------------------------------------------------------------------
+Creado: jue ene  8 16:53:47 ART 2004
+Autor:  Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
+
+//Sacar el \n al final
+$SERVIDOR = substr(file_get_contents('/etc/hostname'), 0, strpos
+        (file_get_contents('/etc/hostname'), "\n"));
+
+var_dump($SERVIDOR);
+exit;
+
+//REQUIRE ONCE {{{
+require_once 'YATTA/Proceso.php';
+require_once 'DB.php';
+//}}}
+
+//CREO UNA CONEXION MYSQL{{{
+$DB =& DB::connect('mysql://intranet:intranet@bal747f/yatta', true);
+if (DB::isError($DB)) {
+    die ($DB->getMessage());
+}
+//}}}
+
+//BUSCO EL ESTADO DEL SERVIDOR EN LA BASE {{{
+$sql = 'SELECT count(procesos.id) AS cuenta 
+        FROM procesos, servidores 
+        WHERE servidores.nombre = ? and procesos.server = servidores.id and
+        procesos.status = 1;'; //Status 1 -> Procesando
+//}}}
+
+?>
\ No newline at end of file
index d103030f221b3431a7af33609a6a6e73dc649187..b51a426e9929980f6c2c22dd1f153a65c5be5bf6 100644 (file)
@@ -25,11 +25,15 @@ $Id$
 -----------------------------------------------------------------------------*/
 
 //Require Once {{{
+//HTML {{{
 require_once 'MECON/HTML/TablaDB.php';
 require_once 'MECON/HTML/Tabla.php';
 require_once 'MECON/HTML/Image.php';
 require_once 'MECON/HTML/Link.php';
-require_once 'YATTA/Proceso.php';
+//}}}
+//YATTA {{{
+require_once 'YATTA/Controlador.php';
+//}}}
 //}}}
 
 //Obtengo la informacion de la base y la agrego a la tabla {{{ 
@@ -41,9 +45,8 @@ $TABLADB->addRow(array(
             'Id', 'Fecha', 'Sistema', 'Descripcion', 'Estado'
             ),'titulo');
 
-$PROCESO =& new YATTA_Proceso;
-$PROCESO->owner = $_SESSION['usuario'];
-$res = $PROCESO->buscar($DB, MECON_DBO_AND, ' id ASC');
+$PROCESO =& new YATTA_Controlador;
+$res = $PROCESO->obtenerProcesosUsuario($DB, $_SESSION['usuario']);
 if (PEAR::isError($res)) {
     die('Error: ' . $res->getMessage() . "\n");
 }
index bc03c134b0aacd123459e391cdecc9ae08f007d7..401843ea749e3820f0440d79c65c35c066d0ff82 100644 (file)
@@ -25,11 +25,15 @@ $Id$
 -----------------------------------------------------------------------------*/
 
 //Require Once {{{
+//HTML {{{
 require_once 'HTML/Page.php';
 require_once 'HTML/Table.php';
 require_once 'MECON/HTML/Link.php';
 require_once 'MECON/HTML/Image.php';
-require_once 'YATTA/Proceso.php';
+//}}}
+//YATTA {{{
+require_once 'YATTA/Controlador.php';
+//}}}
 //}}}
 
 //Creo los objetos necesarios {{{
@@ -42,7 +46,7 @@ $PAGE =& new HTML_Page(array ('doctype'  => 'HTML 4.01 Transitional',
 $PAGE->addStyleSheet('/sistemas/yatta/css/yatta.css');
 $PAGE->addStyleSheet('/MECON/css/marco.css');
 $TABLA=& new HTML_Table('width="370"');
-$PROCESO =& new YATTA_Proceso;
+$PROCESO =& new YATTA_Controlador;
 //}}}
 
 //Obtengo la info que se pasa por get {{{
@@ -50,13 +54,7 @@ $id = (@$_REQUEST['id']) ? $_REQUEST['id'] : null;
 //}}}
 
 //Obtengo la informacion del proceso {{{
-$PROCESO->owner = $_SESSION['usuario'];
-$PROCESO->id = $id;
-$res = $PROCESO->buscar($DB, MECON_DBO_AND, ' id ASC');
-if (PEAR::isError($res)) {
-    die('Error: ' . $res->getMessage() . "\n");
-}
-$res = $PROCESO->cargar($res);
+$PROCESO = $PROCESO->obtenerProcesoUsuario($DB, $_SESSION['usuario'], $id);
 //}}}
 
 //Creo las imagenes {{{
@@ -74,7 +72,7 @@ $PAGE->addBodyContent('<b>'. $imagen->toHtml().' '. $PROCESO->icono
 
 $TABLA->addRow(array(
                 '<b>Id: '. $id .'</b><br>'.
-                '<b>Fecha: '. $PROCESO->fecha->format("%d/%m/%Y") .'</b><br>'.
+                '<b>Fecha: '. $PROCESO->fecha .'</b><br>'.
                 '<b>Sistema: '. $PROCESO->nombre_sistema .'</b><br>'.
                 '<b>Descripcion: '. $PROCESO->descripcion .'</b><br>'.
                 '<b>Owner: '. $PROCESO->owner .'</b><br>'.
index 09b88b07a3df0fa614cc3ac613eb913829d05b7a..33dc68945a0a9f8233e65e93a9e4411f3504fac2 100755 (executable)
@@ -4,29 +4,25 @@
 //Ejemplo para agregar un proceso a yatta.
 
 
-//require_once 'YATTA/Proceso.php';
-//require_once 'DB.php';
-
-//while (1) {
-echo date ("Y-m-d");
-//}
-exit;
+require_once 'YATTA/Controlador.php';
+require_once 'DB.php';
 
 //CREO UNA CONEXION MYSQL AL SERVIDOR
-$DB =& DB::connect('mysql://intranet:intranet@bal747f/yatta', true);
-if (DB::isError($DB)) {
-    die ($DB->getMessage());
+$db =& DB::connect('mysql://intranet:intranet@bal747f/yatta', true);
+if (DB::isError($db)) {
+    die ($db->getMessage());
 }
 
-//CREO EL OBJETO YATTA_Proceso
-$PROCESO =& new YATTA_Proceso;
-//ASIGNO LOS DATOS CORRESPONDIENTES.
-$PROCESO->script = 'PRUEBA NUEVO PROCESO';
-$PROCESO->id_sistema = '74';
-$PROCESO->descripcion = 'Prueba agregar proceso por libreria';
-$PROCESO->owner = 'msklar@mecon';
-$PROCESO->destinos = 'mmarre@mecon';
-$PROCESO->notificar = '1';
-//GUARDO LOS DATOS EN BASE.
-$PROCESO->guardar($DB);
+//Cargo los datos
+$datos = array (
+            'script' => 'Prueba con Controlador',
+            'id_sistema' => 74,
+            'descripcion' => 'Prueba para probar los controladores',
+            'owner' => 'MARTIN'
+        );
+
+//Agrego el proceso a traves del controlador.
+$CONTROLADOR =& new YATTA_Controlador;
+$res = $CONTROLADOR->agregarProceso($db, $datos);
+var_dump($res);
 ?>