Commit 3783c4399357a3f0437d0810002bbed5a786fb0f

Authored by Edmar Moretti
1 parent 13a92cb5

--no commit message

Showing 1 changed file with 113 additions and 4 deletions   Show diff stats
admin/php/classe_metaestat.php
... ... @@ -23,7 +23,7 @@ Este programa é distribuído na expectativa de que seja útil
23 23 porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
24 24 de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
25 25 Consulte a Licença Pública Geral do GNU para mais detalhes.
26   -Você deve ter recebido uma c�pia da Licença Pública Geral do
  26 +Você deve ter recebido uma copia da Licença Pública Geral do
27 27 GNU junto com este programa; se não, escreva para a
28 28 Free Software Foundation, Inc., no endereço
29 29 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
... ... @@ -897,7 +897,7 @@ class Metaestat{
897 897 * @param id da medida
898 898 * @param filtro a ser concatenado ao sql
899 899 * @param coluna de agrupamento
900   - * @return array("colunavalor"=>,"soma"=>,"media"=>,"menor"=>,"maior"=>,"quantidade"=>,"histograma"=>,"grupos"=>,"unidademedida"=>,"quartis"=>)
  900 + * @return array("colunavalor"=>,"soma"=>,"media"=>,"menor"=>,"maior"=>,"quantidade"=>,"histograma"=>,"grupos"=>,"unidademedida"=>,"quartis"=>)
901 901 */
902 902 function sumarioMedidaVariavel($id_medida_variavel,$filtro="",$agruparpor=""){
903 903 if(!empty($agruparpor)){
... ... @@ -1852,12 +1852,30 @@ class Metaestat{
1852 1852 $sql .= "AND codigo_tipo_regiao = $codigo_tipo_regiao";
1853 1853 return $this->execSQL($sql,$codigo_tipo_regiao_pai);
1854 1854 }
  1855 + /**
  1856 + * Lista os esquemas em um banco de dados
  1857 + * @param codigo da conexao
  1858 + * @return execSQLDB
  1859 + */
1855 1860 function esquemasConexao($codigo_estat_conexao){
1856 1861 return $this->execSQLDB($codigo_estat_conexao,"SELECT oid,nspname as esquema FROM pg_namespace group by nspname,oid order by nspname");
1857 1862 }
  1863 + /**
  1864 + * Cria um novo esquema no banco de dados
  1865 + * @param codigo da conexao
  1866 + * @param nome do esquema
  1867 + * @return execSQLDB
  1868 + */
1858 1869 function criaEsquemaDB($codigo_estat_conexao,$nome_esquema){
1859 1870 return $this->execSQLDB($codigo_estat_conexao,"create schema $nome_esquema");
1860 1871 }
  1872 + /**
  1873 + * Lista as tabelas de um esquema
  1874 + * @param codigo da conexao
  1875 + * @param nome do esquema
  1876 + * @param sim|nao exclui da lista as tabelas que contem geometria
  1877 + * @return execSQLDB
  1878 + */
1861 1879 function tabelasEsquema($codigo_estat_conexao,$nome_esquema,$excluigeom=""){
1862 1880 $sql = "SELECT table_name as tabela FROM information_schema.tables where table_schema = '$nome_esquema'";
1863 1881 if(strtolower($excluigeom) == "sim"){
... ... @@ -1865,9 +1883,26 @@ class Metaestat{
1865 1883 }
1866 1884 return $this->execSQLDB($codigo_estat_conexao,$sql);
1867 1885 }
  1886 + /**
  1887 + * Cria uma nova tabela no banco de dados
  1888 + * A nova tabela tera apenas uma coluna chamada gid (PK)
  1889 + * @param codigo da conexao
  1890 + * @param nome do esquema
  1891 + * @param nome da tabela
  1892 + * @return execSQLDB
  1893 + */
1868 1894 function criaTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela){
1869 1895 return $this->execSQLDB($codigo_estat_conexao,"create table ".$nome_esquema.".".$nome_tabela." (gid serial, CONSTRAINT ".$nome_tabela."_pkey PRIMARY KEY (gid ))");
1870 1896 }
  1897 + /**
  1898 + * ALtera o nome de uma tabela
  1899 + * Atualiza as tabelas i3geoestat_medida_variavel e i3geoestat_tipo_regiao
  1900 + * @param codigo da conexao
  1901 + * @param nome do esquema
  1902 + * @param nome da tabela atual
  1903 + * @param novo nome da tabela
  1904 + * @return execSQLDB
  1905 + */
1871 1906 function alteraNomeTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$novonome_tabela){
1872 1907 $res = $this->execSQLDB($codigo_estat_conexao,"ALTER TABLE ".$nome_esquema.".".$nome_tabela." RENAME TO ".$novonome_tabela );
1873 1908 $tabela = $this->execSQLDB($codigo_estat_conexao,"SELECT table_name FROM information_schema.tables where table_name = '$novonome_tabela' and table_schema = '$nome_esquema'");
... ... @@ -1879,9 +1914,25 @@ class Metaestat{
1879 1914 }
1880 1915 return $res;
1881 1916 }
  1917 + /**
  1918 + * Faz uma copia de uma tabela
  1919 + * @param codigo da conexao
  1920 + * @param esquema
  1921 + * @param nome da tabela existente
  1922 + * @param nome da nova tabela
  1923 + * @return execSQLDB
  1924 + */
1882 1925 function copiaTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$novonome_tabela){
1883 1926 return $this->execSQLDB($codigo_estat_conexao,"CREATE TABLE ".$nome_esquema.".".$novonome_tabela." AS select * from ".$nome_esquema.".".$nome_tabela );
1884 1927 }
  1928 + /**
  1929 + * Lista as colunas de uma tabela e seus metadados
  1930 + * @param codigo da conexao
  1931 + * @param nome do esquema
  1932 + * @param nome da tabela
  1933 + * @param tipo de coluna (opcional)
  1934 + * @return execSQLDB
  1935 + */
1885 1936 function colunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela,$tipo=""){
1886 1937 $colunas = array();
1887 1938 $res = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name as coluna,udt_name FROM information_schema.columns where table_schema = '$nome_esquema' and table_name = '$nome_tabela'");
... ... @@ -1893,9 +1944,28 @@ class Metaestat{
1893 1944 }
1894 1945 return $colunas;
1895 1946 }
  1947 + /**
  1948 + * Cria uma coluna em uma tabela do banco
  1949 + * @param codigo da conexao
  1950 + * @param nome do esquema
  1951 + * @param nome da tabela
  1952 + * @param nome da nova coluna
  1953 + * @param tipo da coluna
  1954 + * @return execSQLDB
  1955 + */
1896 1956 function criaColunaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$nova_coluna,$tipo){
1897 1957 return $this->execSQLDB($codigo_estat_conexao,"ALTER TABLE ".$nome_esquema.".".$nome_tabela." ADD COLUMN $nova_coluna $tipo ");
1898 1958 }
  1959 + /**
  1960 + * Altera o nome de uma coluna de uma tabela
  1961 + * Atualiza as tabelas i3geoestat_medida_variavel, i3geoestat_tipo_regiao, i3geoestat_parametro_medida e i3geoestat_agregaregiao
  1962 + * @param codigo da conexao
  1963 + * @param nome do esquema
  1964 + * @param nome da tabela
  1965 + * @param nome da coluna
  1966 + * @param novo nome
  1967 + * @return execSQLDB
  1968 + */
1899 1969 function alteraNomeColunaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$nome_coluna,$novonome_coluna){
1900 1970 $res = $this->execSQLDB($codigo_estat_conexao,"ALTER TABLE ".$nome_esquema.".".$nome_tabela." RENAME COLUMN $nome_coluna TO ".$novonome_coluna );
1901 1971 $coluna = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name FROM information_schema.columns where table_name = '$novonome_tabela' and table_schema = '$nome_esquema' and column_name = '$novonome_coluna'");
... ... @@ -1920,9 +1990,26 @@ class Metaestat{
1920 1990 }
1921 1991 return $res;
1922 1992 }
  1993 + /**
  1994 + * Lista os metadados de uma coluna
  1995 + * Os metadados são obtidos do próprio PostgreSQL
  1996 + * @param codigo da conexao
  1997 + * @param nome do esquema
  1998 + * @param nome da tabela
  1999 + * @return execSQLDB
  2000 + */
1923 2001 function descreveColunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){
1924 2002 return $this->execSQLDB($codigo_estat_conexao,"SELECT a.attnum,a.attname AS field,t.typname AS type,a.attlen AS length,a.atttypmod AS lengthvar,a.attnotnull AS notnull,p.nspname as esquema FROM pg_class c,pg_attribute a,pg_type t,pg_namespace p WHERE c.relname = '$nome_tabela' and p.nspname = '$nome_esquema' and a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid and c.relnamespace = p.oid ORDER BY a.attname");
1925 2003 }
  2004 + /**
  2005 + * Lista os dados de uma tabela
  2006 + * @param codigo da conexao
  2007 + * @param nome do esquema
  2008 + * @param nome da tabela
  2009 + * @param sim|nao inclui o WKT da geometria de colunas geo
  2010 + * @param (opcional) numero de registros que serao listados
  2011 + * @return execSQLDB
  2012 + */
1926 2013 function obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$geo="nao",$nreg=""){
1927 2014 $desccolunas = $this->descreveColunasTabela($codigo_estat_conexao, $nome_esquema, $nome_tabela);
1928 2015 $colunas = array();
... ... @@ -1952,6 +2039,12 @@ class Metaestat{
1952 2039 }
1953 2040 return array("nomescolunas"=>$colunas,"colunas"=>$desccolunas,"linhas"=>$linhas);
1954 2041 }
  2042 + /**
  2043 + * Relatorio completo com a lista de variaveis e medidas
  2044 + * @param codigo da variavel
  2045 + * @param sim|nao inclui dados detalhados
  2046 + * @return Array
  2047 + */
1955 2048 function relatorioCompleto($codigo_variavel="",$dadosGerenciais="nao"){
1956 2049 $dados = array();
1957 2050 if($codigo_variavel != "" || !empty($codigo_variavel)){
... ... @@ -1988,7 +2081,12 @@ class Metaestat{
1988 2081 }
1989 2082 return $dados;
1990 2083 }
1991   - //$dados vem de relatorioCompleto
  2084 + /**
  2085 + * Cria um raltorio formatado em HTML
  2086 + * @param dados obtidos com relatorioCompleto
  2087 + * @param sim|nao inclui os dados detalhados
  2088 + * @return string
  2089 + */
1992 2090 function formataRelatorioHtml($dados,$detalhes="sim"){
1993 2091 $html[] = "<div class='var_div_relatorio'>";
1994 2092 $var_cor = "var_cor1";
... ... @@ -2034,6 +2132,11 @@ class Metaestat{
2034 2132 $html[] = "</div><br><br>";
2035 2133 return implode("",$html);
2036 2134 }
  2135 + /**
  2136 + * Cria um relatorio no formato XML
  2137 + * @param dados obtidos com relatorioCompleto
  2138 + * @return string
  2139 + */
2037 2140 function formataXML($dados){
2038 2141 $chaves = array_keys($dados[0]);
2039 2142 if(count($chaves) == 0){
... ... @@ -2094,7 +2197,13 @@ class Metaestat{
2094 2197 $xml .= '</result-set>' . PHP_EOL;
2095 2198 return $xml;
2096 2199 }
2097   - //busca o valor de uma chave em um array multiplo
  2200 + /**
  2201 + * Verifica se em um array existe uma chave com determinado valor
  2202 + * @param Array
  2203 + * @param nome da chave
  2204 + * @param valor a ser buscado
  2205 + * @return boolean
  2206 + */
2098 2207 function buscaNoArray($lista,$chave,$valor){
2099 2208 foreach($lista as $l){
2100 2209 if($l[$chave] == $valor){
... ...