/*
 * V7_2_To_V7_4.java
 *
 * Created on 26 de Setembro de 2006, 11:48
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package siprp.update.updates;

import com.evolute.utils.*;
import com.evolute.utils.arrays.*;
import com.evolute.utils.db.*;
import com.evolute.utils.sql.*;


/**
 *
 * @author fpalma
 */
public class V7_2_To_V7_4 
		implements siprp.update.Update
{
	
	/**
	 * Creates a new instance of V7_2_To_V7_4
	 */
	public V7_2_To_V7_4()
	{
	}
	
	public String []listChanges()
	{
		return new String[]{ "Acrescentar campo de motivo ao processo", 
								"Criar tabelas de suporte aos processos"};
	}
	
	public double getStartVersion()
	{
		return 7.2;
	}
	
	public double getEndVersion()
	{
		return 7.4;
	}
	
	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( 
					"ALTER TABLE marcacoes_processo RENAME TO trabalhadores_processo;" );
		executer.executeQuery( update );
		update = 
				new com.evolute.utils.sql.Update( 
					"ALTER TABLE trabalhadores_processo ADD motivo int4;" );
		executer.executeQuery( update );
		update = 
				new com.evolute.utils.sql.Update( 
					"CREATE TABLE trabalhadores_consultas"
					+"("
					+"  id serial,"
					+"  trabalhador_id int4 NOT NULL,"
					+"  data date,"
					+"  estado int4,"
					+"  prestador_id int4,"
					+"  processo_id int4,"
					+"  CONSTRAINT trabalhadores_consultas_pkey PRIMARY KEY (id),"
					+"  CONSTRAINT trabalhadores_consultas_prestador_id_fkey FOREIGN KEY (prestador_id) REFERENCES prestadores (id) ON UPDATE RESTRICT ON DELETE RESTRICT,"
					+"  CONSTRAINT trabalhadores_consultas_processo_id_fkey FOREIGN KEY (processo_id) REFERENCES trabalhadores_processo (id) ON UPDATE RESTRICT ON DELETE RESTRICT,"
					+"  CONSTRAINT trabalhadores_consultas_trabalhador_id_fkey FOREIGN KEY (trabalhador_id) REFERENCES trabalhadores (id) ON UPDATE RESTRICT ON DELETE RESTRICT"
					+") "
					+"WITHOUT OIDS;"
					+"ALTER TABLE trabalhadores_consultas OWNER TO postgres;" );
		executer.executeQuery( update );
		update = 
				new com.evolute.utils.sql.Update( 
					"CREATE TABLE trabalhadores_consultas_datas"
					+"("
					+"  id serial,"
					+"  data date,"
					+"  trabalhadores_consultas_id int4,"
					+"  estado int4,"
					+"  CONSTRAINT trabalhadores_consultas_datas_pkey PRIMARY KEY (id),"
					+"  CONSTRAINT trabalhadores_consultas_datas_trabalhadores_consultas_id_fkey FOREIGN KEY (trabalhadores_consultas_id) REFERENCES trabalhadores_consultas (id) ON UPDATE RESTRICT ON DELETE RESTRICT"
					+") "
					+"WITHOUT OIDS;"
					+"ALTER TABLE trabalhadores_consultas_datas OWNER TO postgres;" );
		executer.executeQuery( update );
		update = 
				new com.evolute.utils.sql.Update( 
					"CREATE TABLE trabalhadores_consultas_datas_emails"
					+"("
					+"  id serial,"
					+"  trabalhadores_consultas_datas_id int4,"
					+"  destination varchar(512),"
					+"  data date,"
					+"  subject varchar(512),"
					+"  body varchar(32768),"
					+"  CONSTRAINT trabalhadores_consultas_datas_emails_pkey PRIMARY KEY (id),"
					+"  CONSTRAINT trabalhadores_consultas_data_trabalhadores_consultas_data_fkey1 FOREIGN KEY (trabalhadores_consultas_datas_id) REFERENCES trabalhadores_consultas_datas (id) ON UPDATE RESTRICT ON DELETE RESTRICT"
					+") "
					+"WITHOUT OIDS;"
					+"ALTER TABLE trabalhadores_consultas_datas_emails OWNER TO postgres;" );
		executer.executeQuery( update );
		update = 
				new com.evolute.utils.sql.Update( 
					"CREATE TABLE trabalhadores_consultas_datas_observacoes"
					+"("
					+"  id serial,"
					+"  trabalhadores_consultas_datas_id int4,"
					+"  observacao varchar(4096),"
					+"  CONSTRAINT trabalhadores_consultas_datas_observacoes_pkey PRIMARY KEY (id),"
					+"  CONSTRAINT trabalhadores_consultas_datas_trabalhadores_consultas_data_fkey FOREIGN KEY (trabalhadores_consultas_datas_id) REFERENCES trabalhadores_consultas_datas (id) ON UPDATE RESTRICT ON DELETE RESTRICT"
					+") "
					+"WITHOUT OIDS;"
					+"ALTER TABLE trabalhadores_consultas_datas_observacoes OWNER TO postgres;" );
		executer.executeQuery( update );
		update = 
				new com.evolute.utils.sql.Update( 
					"CREATE TABLE trabalhadores_ecds"
					+"("
					+"  id serial,"
					+"  trabalhador_id int4,"
					+"  estado int4,"
					+"  data date,"
					+"  processo_id int4,"
					+"  CONSTRAINT trabalhadores_ecgs_pkey PRIMARY KEY (id),"
					+"  CONSTRAINT trabalhadores_ecds_processo_id_fkey FOREIGN KEY (processo_id) REFERENCES trabalhadores_processo (id) ON UPDATE RESTRICT ON DELETE RESTRICT,"
					+"  CONSTRAINT trabalhadores_ecgs_trabalhador_id_fkey FOREIGN KEY (trabalhador_id) REFERENCES trabalhadores (id) ON UPDATE RESTRICT ON DELETE RESTRICT"
					+") "
					+"WITHOUT OIDS;"
					+"ALTER TABLE trabalhadores_ecds OWNER TO postgres;" );
		executer.executeQuery( update );
		update = 
				new com.evolute.utils.sql.Update( 
					"CREATE TABLE trabalhadores_ecds_datas"
					+"("
					+"  id serial,"
					+"  trabalhadores_ecds_id int4,"
					+"  data date,"
					+"  estado int4,"
					+"  CONSTRAINT trabalhadores_ecds_datas_pkey PRIMARY KEY (id),"
					+"  CONSTRAINT trabalhadores_ecds_datas_trabalhadores_ecds_id_fkey FOREIGN KEY (trabalhadores_ecds_id) REFERENCES trabalhadores_ecds (id) ON UPDATE RESTRICT ON DELETE RESTRICT"
					+") "
					+"WITHOUT OIDS;"
					+"ALTER TABLE trabalhadores_ecds_datas OWNER TO postgres;" );
		executer.executeQuery( update );
		update = 
				new com.evolute.utils.sql.Update( 
					"CREATE TABLE trabalhadores_ecd"
					+"("
					+"  id int4 NOT NULL,"
					+"  ecd_id int4,"
					+"  ecd_oficial_id int4,"
					+"  prestador_id int4,"
					+"  estado int4,"
					+"  trabalhadores_ecds_id int4,"
					+"  trabalhadores_ecds_datas_id int4,"
					+"  CONSTRAINT trabalhadores_ecg_pkey PRIMARY KEY (id),"
					+"  CONSTRAINT trabalhadores_ecd_trabalhadores_ecds_datas_id_fkey FOREIGN KEY (trabalhadores_ecds_datas_id) REFERENCES trabalhadores_ecds_datas (id) ON UPDATE RESTRICT ON DELETE RESTRICT,"
					+"  CONSTRAINT trabalhadores_ecd_trabalhadores_ecds_id_fkey FOREIGN KEY (trabalhadores_ecds_id) REFERENCES trabalhadores_ecds (id) ON UPDATE RESTRICT ON DELETE RESTRICT,"
					+"  CONSTRAINT trabalhadores_ecg_ecd_id_fkey FOREIGN KEY (ecd_id) REFERENCES prt_tipos_elementos_protocolo (id) ON UPDATE RESTRICT ON DELETE RESTRICT,"
					+"  CONSTRAINT trabalhadores_ecg_ecd_oficial_id_fkey FOREIGN KEY (ecd_oficial_id) REFERENCES ecd_oficial (id) ON UPDATE RESTRICT ON DELETE RESTRICT,"
					+"  CONSTRAINT trabalhadores_ecg_prestador_id_fkey FOREIGN KEY (prestador_id) REFERENCES prestadores (id) ON UPDATE RESTRICT ON DELETE RESTRICT"
					+") "
					+"WITHOUT OIDS;"
					+"ALTER TABLE trabalhadores_ecd OWNER TO postgres;" );
		executer.executeQuery( update );
		update = 
				new com.evolute.utils.sql.Update( 
					"CREATE TABLE trabalhadores_ecds_datas_emails"
					+"("
					+"  id serial,"
					+"  trabalhadores_ecds_datas_id int4,"
					+"  destination varchar(512),"
					+"  data date,"
					+"  subject varchar(512),"
					+"  body varchar(32768),"
					+"  CONSTRAINT trabalhadores_ecds_datas_emails_pkey PRIMARY KEY (id),"
					+"  CONSTRAINT trabalhadores_ecds_datas_email_trabalhadores_ecds_datas_id_fkey FOREIGN KEY (trabalhadores_ecds_datas_id) REFERENCES trabalhadores_ecds_datas (id) ON UPDATE RESTRICT ON DELETE RESTRICT"
					+") "
					+"WITHOUT OIDS;"
					+"ALTER TABLE trabalhadores_ecds_datas_emails OWNER TO postgres;" );
		executer.executeQuery( update );
		update = 
				new com.evolute.utils.sql.Update( 
					"CREATE TABLE trabalhadores_ecds_datas_observacoes"
					+"("
					+"  id serial,"
					+"  trabalhadores_ecds_datas_id int4,"
					+"  observacao varchar(4096),"
					+"  CONSTRAINT trabalhadores_ecds_datas_observacoes_pkey PRIMARY KEY (id),"
					+"  CONSTRAINT trabalhadores_ecds_datas_obser_trabalhadores_ecds_datas_id_fkey FOREIGN KEY (trabalhadores_ecds_datas_id) REFERENCES trabalhadores_ecds_datas (id) ON UPDATE RESTRICT ON DELETE RESTRICT"
					+") "
					+"WITHOUT OIDS;"
					+"ALTER TABLE trabalhadores_ecds_datas_observacoes OWNER TO postgres;" );
		executer.executeQuery( update );

	}
	
	public String toString()
	{
		return "v7.2 para v7.4";
	}
}
