From be82111e27a9d9b492bdde542a283624c752b3fc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mart=C3=ADn=20Marrese?= Date: Fri, 9 Jan 2004 21:37:26 +0000 Subject: [PATCH 1/1] --- lib/YATTA/Controlador.php | 129 +++++++++++++++++++++++++++++ lib/YATTA/Proceso.php | 25 +++++- lib/YATTA/Servidor.php | 51 ++++++++++++ script/servidores/YATTA_Server.php | 54 ++++++++++++ sistema/www/procesos.php | 11 ++- sistema/www/procesos_popup.php | 18 ++-- test/nuevo_proceso.php | 38 ++++----- 7 files changed, 288 insertions(+), 38 deletions(-) create mode 100644 lib/YATTA/Controlador.php create mode 100644 lib/YATTA/Servidor.php create mode 100755 script/servidores/YATTA_Server.php diff --git a/lib/YATTA/Controlador.php b/lib/YATTA/Controlador.php new file mode 100644 index 0000000..670ddd0 --- /dev/null +++ b/lib/YATTA/Controlador.php @@ -0,0 +1,129 @@ + +------------------------------------------------------------------------------- +$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 diff --git a/lib/YATTA/Proceso.php b/lib/YATTA/Proceso.php index 2c1e2fe..2838fd3 100644 --- a/lib/YATTA/Proceso.php +++ b/lib/YATTA/Proceso.php @@ -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 index 0000000..d91ddd1 --- /dev/null +++ b/lib/YATTA/Servidor.php @@ -0,0 +1,51 @@ + +------------------------------------------------------------------------------- +$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 index 0000000..06ca1f1 --- /dev/null +++ b/script/servidores/YATTA_Server.php @@ -0,0 +1,54 @@ +#!/usr/bin/php4 -qC + +------------------------------------------------------------------------------- +$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 diff --git a/sistema/www/procesos.php b/sistema/www/procesos.php index d103030..b51a426 100644 --- a/sistema/www/procesos.php +++ b/sistema/www/procesos.php @@ -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"); } diff --git a/sistema/www/procesos_popup.php b/sistema/www/procesos_popup.php index bc03c13..401843e 100644 --- a/sistema/www/procesos_popup.php +++ b/sistema/www/procesos_popup.php @@ -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(''. $imagen->toHtml().' '. $PROCESO->icono $TABLA->addRow(array( 'Id: '. $id .'
'. - 'Fecha: '. $PROCESO->fecha->format("%d/%m/%Y") .'
'. + 'Fecha: '. $PROCESO->fecha .'
'. 'Sistema: '. $PROCESO->nombre_sistema .'
'. 'Descripcion: '. $PROCESO->descripcion .'
'. 'Owner: '. $PROCESO->owner .'
'. diff --git a/test/nuevo_proceso.php b/test/nuevo_proceso.php index 09b88b0..33dc689 100755 --- a/test/nuevo_proceso.php +++ b/test/nuevo_proceso.php @@ -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); ?> -- 2.43.0