--- /dev/null
+<?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
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'];
*/
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
$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
--- /dev/null
+<?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
--- /dev/null
+#!/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
-----------------------------------------------------------------------------*/
//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 {{{
'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");
}
-----------------------------------------------------------------------------*/
//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 {{{
$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 {{{
//}}}
//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 {{{
$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>'.
//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);
?>