/*
 * V8_1_To_V8_2.java
 *
 * Created on December 19, 2007, 3:12 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package siprp.update.updates;

import com.evolute.utils.Singleton;
import com.evolute.utils.db.DBManager;
import com.evolute.utils.db.Executer;

/**
 *
 * @author fpalma
 */
public class V9_0To_V9_1
		implements siprp.update.Update
{
	
	public V9_0To_V9_1()
	{
	}
	
	public String []listChanges()
	{
		return new String[]{
		                    "Refactorizar tabelas de higiene e seguranca",
		                    "Criar novas tabelas de higiene e seguranca"
		                    };
	}
	
	public double getStartVersion()
	{
		return 9.1;
	}
	
	public double getEndVersion()
	{
		return 9.1;
	}
	
	public void doUpdate()
		throws Exception
	{
		DBManager dbm = ( DBManager ) Singleton.getInstance( Singleton.DEFAULT_DBMANAGER );
		Executer executer = dbm.getSharedExecuter();
		com.evolute.utils.sql.Update update = 
			new com.evolute.utils.sql.Update(
				"drop table risco_medida;" +
				"drop table risco;" +
				"drop table medida;" +
				"drop table legislacao_estabelecimento;" +
				"drop table legislacao;" +
				"drop table posto_de_trabalho_estabelecimento;" +
				"drop table posto_de_trabalho;" +
				"CREATE TABLE hs_area(" +
				"	id serial PRIMARY KEY," +
				"	empresa_id int4 REFERENCES empresas(id)," +
				"	description varchar(256) NOT NULL" +
				");" +
				"CREATE TABLE hs_posto(" +
				"	id serial PRIMARY KEY," +
				"	area_id int4 REFERENCES hs_area(id)," +
				"	description varchar(256) NOT NULL" +
				");" +
				"CREATE TABLE hs_medida(" +
				"	id serial PRIMARY KEY," +
				"	description varchar(1024) NOT NULL," +
				"	requesitos_legais varchar(1024)" +
				");" +
				"CREATE TABLE hs_risco_tema(" +
				"	id serial PRIMARY KEY," +
				"	description varchar(256) NOT NULL" +
				");" +
				"CREATE TABLE hs_risco(" +
				"	id serial PRIMARY KEY," +
				"	tema_id int4 REFERENCES hs_risco_tema(id)," +
				"	description varchar(256) NOT NULL" +
				");" +
				"CREATE TABLE hs_risco_medida(" +
				"	risco_id int4 REFERENCES hs_risco(id)," +
				"	medida_id int4 REFERENCES hs_medida(id)," +
				"	CONSTRAINT hs_risco_medida_pkey PRIMARY KEY(risco_id, medida_id)" +
				");" +
				"create table hs_relatorio(" +
				"	id serial PRIMARY KEY," +
				"	data date NOT NULL," +
				"	deleted_date timestamp" +
				");" +
				"create table hs_medida_classificacao(" +
				"	id serial PRIMARY KEY," +
				"	description varchar(255) NOT NULL" +
				");" +
				"create table hs_relatorio_risco(" +
				"	id serial PRIMARY KEY," +
				"	relatorio_id int4 REFERENCES hs_relatorio NOT NULL," +
				"	description varchar(255) NOT NULL" +
				");" +
				"create table hs_relatorio_medida(" +
				"	id serial PRIMARY KEY," +
				"	risco_id int4 REFERENCES hs_relatorio_risco NOT NULL," +
				"	description varchar(1024) NOT NULL," +
				"	requesitos_legais varchar(1024) NOT NULL," +
				"	severidade int4," +
				"	probabilidade int4," +
				"	classificacao_id int4 REFERENCES hs_medida_classificacao" +
				");" +
				"create table hs_normalizacao(" +
				"	id serial PRIMARY KEY," +
				"	codigo varchar(128) NOT NULL," +
				"	descricao varchar(1024) NOT NULL," +
				"	portuguesa boolean NOT NULL" +
				");" +
				"create table hs_equipamento_medicao(" +
				"	id serial PRIMARY KEY," +
				"	nome varchar(255) NOT NULL" +
				");" +
				"create table hs_legislacao_categoria(" +
				"	id serial PRIMARY KEY," +
				"	description varchar(255) NOT NULL" +
				");" +
				"create table hs_legislacao(" +
				"	id serial PRIMARY KEY," +
				"	description varchar(1024) NOT NULL," +
				"	categoria_id int4 REFERENCES hs_legislacao_categoria(id)" +
				");" +
				"create table hs_legislacao_empresa(" +
				"	legislacao_id int4 REFERENCES hs_legislacao(id)," +
				"	empresa_id int4 REFERENCES empresas(id)," +
				"	CONSTRAINT hs_legislacao_empresa_pkey PRIMARY KEY(legislacao_id, empresa_id)" +
				");" +
				"create table hs_legislacao_estabelecimento(" +
				"	legislacao_id int4 REFERENCES hs_legislacao(id)," +
				"	estabelecimento_id int4 REFERENCES estabelecimentos(id)," +
				"	CONSTRAINT hs_legislacao_estabelecimento_pkey PRIMARY KEY(legislacao_id, estabelecimento_id)" +
				");"
		);
		executer.executeQuery( update );
	}
	
	public String toString()
	{
		return "v" + getStartVersion() + " para v" + getEndVersion();
	}
}
