]> git.llucax.com Git - mecon/yatta.git/blob - lib/YATTA/Controlador.php
670ddd0271e48c7245330dbd5e45f83cf63c7a16
[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/Servidor.php';
29
30 /**
31  * Clase para el manejo centralizado de toda la informacion de YATTA.
32  *
33  * @access public
34  */
35 class YATTA_Controlador {
36
37     /**
38      * Agrega un proceso a la base de datos
39      * Los datos obligatorios a pasar son: script, id_sistema, descripcion,
40      * owner, destinos, prioridad, scheduling y notificar.
41      *
42      * @param  DB $db Conexion a la base de datos.
43      * @param  mixed $datos Datos necesarios del proceso.
44      *
45      * @return mixed
46      * @access public
47      */
48     function agregarProceso($db, $datos) {
49         //XXX Dentro de los datos puede estar el tiempo estimado de ejecucion
50         //del proceso. Esta informacion podria ser utilizada en futuras
51         //versiones para asignar servidores.
52         if (!is_array($datos)) {
53             $datos = $datos->obtenerDatos();
54         }
55         $res = $this->_obtenerServidor($db);
56         if (DB::isError($res)) {
57             return $res;
58         }
59         $datos['server'] = $res;
60         $datos['fecha'] = date('Y-m-d');
61         $res = $db->autoExecute('yatta.procesos', $datos, DB_AUTOQUERY_INSERT);
62         if (DB::isError($res)) {
63             return $res;
64         }
65         $SERVER =& new YATTA_Servidor;
66         $res = $SERVER->agregarProceso($db, $datos['server']);
67         return $res;
68     }
69
70     /**
71      * Obtiene el nombre del servidor al cual asignar un nuevo proceso.
72      *
73      * @param DB $db Conexion a la base de datos.
74      *
75      * @return mixed
76      * @access private
77      */
78     function _obtenerServidor($db) {
79         $res = $db->query('SELECT s.id, s.escala * s.procesos AS ponderacion
80             FROM yatta.servidores AS s 
81             ORDER BY ponderacion DESC, s.escala DESC');
82         // Si hay error lo devuelve.
83         if (DB::isError($res)) {
84             return $res;
85         }
86         $res = $res->fetchRow(DB_FETCHMODE_ASSOC);
87         return  $res['id'];
88     }
89  
90     /**
91      * Obtiene los procesos de un usuario.
92      *
93      * @param DB $db Conexion a la base de datos.
94      * @param string $owner Usuario duenio de los procesos.
95      * @param int $id Identificador del proceso a buscar
96      *
97      * @return mixed
98      * @access public
99      */
100     function obtenerProcesosUsuario($db, $owner, $id = null) {
101         $proceso =& new YATTA_Proceso;
102         $proceso->owner = $owner;
103         if (@$id) {
104             $proceso->id = $id;
105         }
106         return $proceso->buscar($db, MECON_DBO_AND, ' id ASC');
107     }
108
109     /**
110      * Obtiene un proceso de un usuario.
111      *
112      * @param DB $db Conexion a la base de datos.
113      * @param string $owner Usuario duenio de los procesos.
114      * @param int $id Identificador del proceso a buscar
115      *
116      * @return mixed
117      * @access public
118      */
119     function obtenerProcesoUsuario($db, $owner, $id) {
120         $proceso =& new YATTA_Proceso;
121         $proceso->owner = $owner;
122         $proceso->id = $id;
123         $res = $proceso->buscar($db, MECON_DBO_AND, ' id ASC');
124         $proceso->cargar($res);
125         return $proceso;
126     }
127    
128 }
129 ?>