package siprp.update.updates;

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

public class V10_1_To_V10_2
		implements siprp.update.Update
{
	
	public V10_1_To_V10_2()
	{
	}
	
	public String []listChanges()
	{
		return new String[]{
		                    "adicionadas normalizacoes para estabelecimentos e empresas"
		                    };
	}
	
	public double getStartVersion()
	{
		return 10.1;
	}
	
	public double getEndVersion()
	{
		return 10.2;
	}
	
	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(
				"CREATE TABLE hs_equipamento( " +
					"id SERIAL PRIMARY KEY, " +
					"tipo VARCHAR(512) NOT NULL, " +
					"marca VARCHAR(255), " +
					"modelo VARCHAR(255), " +
					"deleted_date TIMESTAMP " +
					"); " +
				"CREATE TABLE hs_relatorio_equipamento( " +
					"hs_relatorio_id INT4 REFERENCES hs_relatorio(id), " +
					"hs_equipamento INT4 REFERENCES hs_equipamento(id), " +
					"CONSTRAINT hs_relatorio_equipamento_pkey PRIMARY KEY (hs_relatorio_id,hs_equipamento) " +
				"); " +
				"INSERT INTO hs_equipamento(id, tipo)  " +
					"SELECT id, nome FROM hs_equipamento_medico ; " +
				"INSERT INTO hs_relatorio_equipamento(hs_relatorio_id, hs_equipamento) " +
					"SELECT hs_relatorio_id, hs_equipamento_medico_id FROM hs_relatorio_equipamento_medico; " +
				"DROP TABLE hs_relatorio_equipamento_medico; " +
				"DROP TABLE hs_equipamento_medico; "
		);
		executer.executeQuery( update );
	}
	
	public String toString()
	{
		return "v" + getStartVersion() + " para v" + getEndVersion();
	}
}
