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_4_To_V9_5
		implements siprp.update.Update
{
	
	public V9_4_To_V9_5()
	{
	}
	
	public String []listChanges()
	{
		return new String[]{
		                    "Refactorizacao do relatorio"
		                    };
	}
	
	public double getStartVersion()
	{
		return 9.4;
	}
	
	public double getEndVersion()
	{
		return 9.5;
	}
	
	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 hs_relatorio_medida_posto;" +
					"drop table hs_relatorio_medida_area;" +
					"alter table hs_relatorio_risco drop column probabilidade;" +
					"alter table hs_relatorio_risco drop column severidade;" +
					"alter table hs_relatorio_risco drop column valor_qualitativo_id;" +
					"create table hs_posto_risco(" +
					"	posto_id int4 REFERENCES hs_posto(id)," +
					"	risco_id int4 REFERENCES hs_risco(id)," +
					"	CONSTRAINT hs_posto_risco_pkey PRIMARY KEY (posto_id,risco_id)" +
					");" +
					"create table hs_relatorio_area(" +
					"	id serial PRIMARY KEY," +
					"	description varchar(256) NOT NULL," +
					"	deleted_date timestamp" +
					");" +
					"create table hs_relatorio_posto(" +
					"	id serial PRIMARY KEY," +
					"	description varchar(256) NOT NULL," +
					"	area_id int4 REFERENCES hs_relatorio_area(id)," +
					"	deleted_date timestamp" +
					");" +
					"create table hs_relatorio_posto_risco(" +
					"	posto_id int4 REFERENCES hs_relatorio_posto(id)," +
					"	risco_id int4 REFERENCES hs_relatorio_risco(id)," +
					"	probabilidade int4," +
					"	severidade int4," +
					"	valor_qualitativo_id int4 REFERENCES hs_relatorio_risco_valor_qualitativo(id)," +
					"	CONSTRAINT hs_relatorio_posto_risco_pkey PRIMARY KEY (posto_id,risco_id)" +
					");"
		);
		executer.executeQuery( update );
	}
	
	public String toString()
	{
		return "v" + getStartVersion() + " para v" + getEndVersion();
	}
}
