]> git.llucax.com Git - mecon/yatta.git/blob - lib/YATTA/Controlador.php
63ac16773e5097967e8c4b1848f7cacd36c6ca44
[mecon/yatta.git] / lib / YATTA / Controlador.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     YATTA!
5 -------------------------------------------------------------------------------
6 This file is part of YATTA!.
7
8 YATTA! is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
11 any later version.
12
13 YATTA! is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA  02111-1307  USA
20 -------------------------------------------------------------------------------
21 Creado: vie ene  9 16:28:04 ART 2004
22 Autor:  Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 require_once 'YATTA/Proceso.php';
28 require_once 'YATTA/ProcesoWeb.php';
29 require_once 'YATTA/Servidor.php';
30
31 /**
32  * Clase para el manejo centralizado de toda la informacion de YATTA.
33  *
34  * @access public
35  */
36 class YATTA_Controlador {
37
38     /**
39      * Obtiene el nombre del servidor al cual asignar un nuevo proceso.
40      *
41      * @param DB $db Conexion a la base de datos.
42      *
43      * @return mixed
44      * @access private
45      */
46     function _obtenerServidor($db) {
47         $res = $db->query('SELECT s.id, s.escala * s.procesos AS ponderacion
48             FROM yatta.servidores AS s 
49             ORDER BY ponderacion ASC, s.escala DESC');
50         // Si hay error lo devuelve.
51         if (DB::isError($res)) {
52             return $res;
53         }
54         $res = $res->fetchRow(DB_FETCHMODE_ASSOC);
55         return  $res['id'];
56     }
57  
58     /**
59      * Agrega un proceso a la base de datos
60      * Los datos obligatorios a pasar son: script, id_sistema, descripcion,
61      * owner, destinos, prioridad, scheduling y notificar.
62      *
63      * @param  DB $db Conexion a la base de datos.
64      * @param  mixed $datos Datos necesarios del proceso.
65      *
66      * @return mixed
67      * @access public
68      */
69     function agregarProceso($db, $datos) {
70         //XXX Dentro de los datos puede estar el tiempo estimado de ejecucion
71         //del proceso. Esta informacion podria ser utilizada en futuras
72         //versiones para asignar servidores.
73
74         //Si no es un array
75         if (is_object($datos) && is_a ($datos, 'YATTA_ProcesoDB')) {
76             $datos = $datos->obtenerDatos();
77         }
78         elseif (!is_array($datos)) {
79             return new PEAR_Error ("Error con los datos pasados. El segundo".
80                     " parametro debe ser un array asociativo o una instancia".
81                     " del objeto YATTA_Proceso.");
82         }
83         $res = $this->_obtenerServidor($db);
84
85         if (DB::isError($res)) {
86             return $res;
87         }
88         $datos['server'] = $res;
89         $datos['fecha'] = date('Y-m-d');
90         $res = $db->autoExecute('yatta.procesos', $datos, DB_AUTOQUERY_INSERT);
91         if (DB::isError($res)) {
92             return $res;
93         }
94         $SERVER =& new YATTA_Servidor;
95         return $SERVER->agregarProceso($db, $datos['server']);
96     }
97
98     /**
99      * Obtiene los procesos de un usuario.
100      *
101      * @param DB $db Conexion a la base de datos.
102      * @param string $owner Usuario duenio de los procesos.
103      * @param int $id Identificador del proceso a buscar
104      *
105      * @return mixed
106      * @access public
107      */
108     function obtenerProcesosUsuario($db, $owner, $id = null) {
109         $proceso =& new YATTA_ProcesoDB;
110         $proceso->owner = $owner;
111         if (@$id) {
112             $proceso->id = $id;
113         }
114         return $proceso->buscar($db, MECON_DBO_AND, ' id ASC');
115     }
116
117     /**
118      * Obtiene un proceso de un usuario.
119      *
120      * @param DB $db Conexion a la base de datos.
121      * @param string $owner Usuario duenio de los procesos.
122      * @param int $id Identificador del proceso a buscar
123      *
124      * @return mixed
125      * @access public
126      */
127     function obtenerProcesoUsuario($db, $owner, $id) {
128         $proceso =& new YATTA_ProcesoDB;
129         $proceso->owner = $owner;
130         $proceso->id = $id;
131         $res = $proceso->buscar($db, MECON_DBO_AND, ' id ASC');
132         $res = $proceso->cargar($res);
133         return $proceso;
134     }
135 }
136 ?>