Created
December 2, 2018 19:37
-
-
Save PedroHLC/d61b85d8cac6aed8b868bb1dae531390 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# Gerador de INSERTs para trabalho de BD | |
# Instale dependencias: | |
# gem install --user-install laranja | |
# Como usar: | |
# ruby gera.rb > dummy.sql | |
# ruby gera.rb 10 5 3 5 2 > dummy-menor.sql | |
require 'laranja' | |
Laranja.load('pt-BR') | |
lim_br = (ARGV[0].nil? || ARGV[0].to_i < 1) ? 120 : ARGV[0].to_i | |
lim_gr = (ARGV[1].nil? || ARGV[1].to_i < 1) ? 20 : ARGV[1].to_i | |
lim_e = (ARGV[2].nil? || ARGV[2].to_i < 1) ? 12 : ARGV[2].to_i | |
lim_insc = (ARGV[3].nil? || ARGV[3].to_i < 1) ? 30 : ARGV[3].to_i | |
lim_conv = (ARGV[4].nil? || ARGV[4].to_i < 1) ? 5 : ARGV[4].to_i | |
class Candidato | |
attr_reader :nome, :cpf, :email, :sexo, :cep, :bairro, :rua, :num, :compl, :ddi, :ddd, :fixo, :rg, :passaporte | |
def initialize | |
@nome = Laranja::Nome.nome | |
@cpf = Laranja::Documento.cpf | |
@rg = Laranja::Documento.rg | |
@passaporte = 1+(rand 999999).to_i | |
@email = Laranja::Internet.email(@nome) | |
@sexo = Laranja::Sexo.sexo | |
@cep = Laranja::Endereco.cep | |
@bairro = Laranja::Endereco.bairro | |
@rua = Laranja::Endereco.rua | |
@num = Laranja::Endereco.numero | |
@compl = Laranja::Endereco.complemento | |
@ddi = 50 | |
@ddd = 1+(rand 98).to_i | |
@fixo = 300000+(rand % 499999).to_i | |
end | |
def nome_pr | |
return @nome.split(' ')[0...-1].join(' ') | |
end | |
def nome_ul | |
return @nome.split(' ')[-1] | |
end | |
end | |
def algum_dia | |
return "TO_DATE('#{1990 + (rand 28).to_i}-#{1 + (rand 11).to_i}-#{1 + (rand 27).to_i}', 'yyyy-mm-dd')" | |
end | |
def futuro | |
return "TO_DATE('#{2018 + (rand 3).to_i}-#{1 + (rand 11).to_i}-#{1 + (rand 27).to_i}', 'yyyy-mm-dd')" | |
end | |
$us_firstname = ['Alexander', 'Anthony', 'Jonathan', 'Bill', 'Donald', 'Alex', 'Mary', 'Peter', 'Jennifer', 'Kath'] | |
$us_surname = ['Smith', 'Johnson', 'Williams', 'Jones', 'Brown', 'Davis', 'Miller', 'Wilson', 'Moore'] | |
class Gringo < Candidato | |
def initialize | |
super() | |
@nome = $us_firstname.sample + ' ' + $us_surname.sample | |
@email = Laranja::Internet.email(@nome) | |
@rg = nil | |
@cpf = nil | |
end | |
end | |
negos = {} | |
for i in 0..(lim_br-1) | |
n = Candidato.new | |
negos[i] = n | |
end | |
for i in lim_br..(lim_br+lim_gr) | |
n = Gringo.new | |
negos[i] = n | |
end | |
$paises = ['Afghanistan', 'Albania', 'Algeria', 'American Samoa', 'Andorra', 'Angola', 'Anguilla', 'Antarctica', 'Antigua and Barbuda', 'Argentina', 'Armenia', 'Aruba', 'Australia', 'Austria', 'Azerbaijan', 'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bermuda', 'Bhutan', 'Bolivia', 'Bosnia and Herzegowina', 'Botswana', 'Bouvet Island', 'Brazil', 'British Indian Ocean Territory', 'Brunei Darussalam', 'Bulgaria', 'Burkina Faso', 'Burundi', 'Cambodia', 'Cameroon', 'Canada', 'Cape Verde', 'Cayman Islands', 'Central African Republic', 'Chad', 'Chile', 'China', 'Christmas Island', 'Cocos (Keeling) Islands', 'Colombia', 'Comoros', 'Congo', 'Congo, the Democratic Republic of the', 'Cook Islands', 'Costa Rica', 'Cote d Ivoire', 'Croatia (Hrvatska)', 'Cuba', 'Cyprus', 'Czech Republic', 'Denmark', 'Djibouti', 'Dominica', 'Dominican Republic', 'East Timor', 'Ecuador', 'Egypt', 'El Salvador', 'Equatorial Guinea', 'Eritrea', 'Estonia', 'Ethiopia', 'Falkland Islands (Malvinas)', 'Faroe Islands', 'Fiji', 'Finland', 'France', 'France Metropolitan', 'French Guiana', 'French Polynesia', 'French Southern Territories', 'Gabon', 'Gambia', 'Georgia', 'Germany', 'Ghana', 'Gibraltar', 'Greece', 'Greenland', 'Grenada', 'Guadeloupe', 'Guam', 'Guatemala', 'Guinea', 'Guinea-Bissau', 'Guyana', 'Haiti', 'Heard and Mc Donald Islands', 'Holy See (Vatican City State)', 'Honduras', 'Hong Kong', 'Hungary', 'Iceland', 'India', 'Indonesia', 'Iran (Islamic Republic of)', 'Iraq', 'Ireland', 'Israel', 'Italy', 'Jamaica', 'Japan', 'Jordan', 'Kazakhstan', 'Kenya', 'Kiribati', 'Korea, Democratic People s Republic of', 'Korea, Republic of', 'Kuwait', 'Kyrgyzstan', 'Lao, People s Democratic Republic', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 'Libyan Arab Jamahiriya', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Macau', 'Macedonia, The Former Yugoslav Republic of', 'Madagascar', 'Malawi', 'Malaysia', 'Maldives', 'Mali', 'Malta', 'Marshall Islands', 'Martinique', 'Mauritania', 'Mauritius', 'Mayotte', 'Mexico', 'Micronesia, Federated States of', 'Moldova, Republic of', 'Monaco', 'Mongolia', 'Montserrat', 'Morocco', 'Mozambique', 'Myanmar', 'Namibia', 'Nauru', 'Nepal', 'Netherlands', 'Netherlands Antilles', 'New Caledonia', 'New Zealand', 'Nicaragua', 'Niger', 'Nigeria', 'Niue', 'Norfolk Island', 'Northern Mariana Islands', 'Norway', 'Oman', 'Pakistan', 'Palau', 'Panama', 'Papua New Guinea', 'Paraguay', 'Peru', 'Philippines', 'Pitcairn', 'Poland', 'Portugal', 'Puerto Rico', 'Qatar', 'Reunion', 'Romania', 'Russian Federation', 'Rwanda', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Vincent and the Grenadines', 'Samoa', 'San Marino', 'Sao Tome and Principe', 'Saudi Arabia', 'Senegal', 'Seychelles', 'Sierra Leone', 'Singapore', 'Slovakia (Slovak Republic)', 'Slovenia', 'Solomon Islands', 'Somalia', 'South Africa', 'South Georgia and the South Sandwich Islands', 'Spain', 'Sri Lanka', 'St. Helena', 'St. Pierre and Miquelon', 'Sudan', 'Suriname', 'Svalbard and Jan Mayen Islands', 'Swaziland', 'Sweden', 'Switzerland', 'Syrian Arab Republic', 'Taiwan, Province of China', 'Tajikistan', 'Tanzania, United Republic of', 'Thailand', 'Togo', 'Tokelau', 'Tonga', 'Trinidad and Tobago', 'Tunisia', 'Turkey', 'Turkmenistan', 'Turks and Caicos Islands', 'Tuvalu', 'Uganda', 'Ukraine', 'United Arab Emirates', 'United Kingdom', 'United States', 'United States Minor Outlying Islands', 'Uruguay', 'Uzbekistan', 'Vanuatu', 'Venezuela', 'Vietnam', 'Virgin Islands (British)', 'Virgin Islands (U.S.)', 'Wallis and Futuna Islands', 'Western Sahara', 'Yemen', 'Yugoslavia', 'Zambia', 'Zimbabwe'] | |
puts "-- INSCRITOS" | |
negos.each_pair do |k, n| | |
puts "INSERT INTO Candidato VALUES (#{k}, '#{n.nome_pr}', '#{n.nome_ul}', '#{n.sexo}', #{n.cep}, '#{n.bairro}', '#{n.rua}', #{n.num.to_i}, '#{n.compl}', 55, #{n.ddd}, #{n.fixo}, NULL, NULL, NULL);" | |
puts "INSERT INTO Candidato_Email VALUES (#{k}, '#{n.email}');" | |
if n.rg.nil? | |
puts "INSERT INTO CandidatoEstrangeiro VALUES (#{n.passaporte}, '#{$paises.sample}', #{algum_dia}, #{k});" | |
else | |
puts "INSERT INTO CandidatoBrasileiro VALUES (#{n.cpf}, #{k}, 0, #{algum_dia}, 'EB', #{n.rg}, #{algum_dia}, 'SSP');" | |
end | |
end | |
$discs = ['Construção de Algoritmos e Programação', 'Orientação Profissional em Computação', 'Geometria Analítica', 'Cálculo 1', 'Fundamentos de Física para a Computação', 'Introdução à Lógica', 'Programação de Computadores', 'Circuitos Digitais', 'Laboratório de Circuitos Digitais', 'Cálculo Diferencial e Séries', 'Introdução à Probabilidade 1', 'Álgebra Linear 1', 'Estruturas Discretas', 'Optativa da área de Humanas', 'Estruturas de Dados', 'Introdução aos Sistemas de Informação', 'Arquitetura e Organização de Computadores 1', 'Laboratório de Arquitetura e Organização de Computadores 1', 'Cálculo Numérico', 'Optativa da área de Humanas', 'Optativa Complementar', 'Linguagens Formais e Autômatos', 'Organização e Recuperação da Informação', 'Projeto e Análise de Algoritmos', 'Banco de Dados', 'Engenharia de Software 1', 'Arquitetura e Organização de Computadores 2', 'Laboratório de Arquitetura e Organização de Computadores 2', 'Teoria dos Grafos', 'Laboratório de Banco de Dados', 'Paradigmas de Linguagens de Programação', 'Sistemas Operacionais 1', 'Construção de Compiladores 1', 'Engenharia de Software 2', 'Administração de Empresas 1', 'Projeto Acadêmico em Computação', 'Optativa Complementar', 'Inteligência Artificial', 'Sistemas Operacionais 2', 'Metodologia de Desenvolvimento de Sistemas 1', 'Redes de Computadores', 'Construção de Compiladores 2', 'Computação Gráfica e Multimídia', 'Optativa Profissionalizante', 'Sistemas Distribuídos', 'Desenvolvimento de Software para a Web', 'Optativa Complementar', 'Optativas Profissionalizantes', 'Atividades Complementares', 'Seminários em Computação', 'Estágio em Computação', 'Trabalho de Graduação', 'Inglês Instrumental para Computação 1', 'Inglês Instrumental para Computação 2', 'Comunicação e Expressão', 'Introdução à Sociologia Geral', 'Sociologia Industrial e do Trabalho', 'Tecnologia e Sociedade', 'História das Revoluções Modernas', 'Economia Geral', 'Economia da Empresa', 'Métodos e Técnicas de Pesquisa', 'Filosofia da Ciência', 'Noções Gerais de Direito', 'Teoria das Organizações', 'Microeconomia', 'Tópicos Avançados A', 'Tópicos Avançados B', 'Matemática Computacional', 'Circuitos Reconfiguráveis', 'Projeto de Banco de Dados', 'Tópicos em Informática', 'Tópicos em Informática 2', 'Sistemas de Tempo Real', 'Planejamento e Gerenciamento de Sistemas de Informação', 'Empreendedores em Informática', 'Tópicos em Informática 3', 'Tópicos em Informática 4', 'Projeto e Manufatura Assistidos Por Computador', 'Microcontroladores e Aplicações', 'Laboratório Microcontroladores e Aplicações', 'Tecnologia e Comunicação de Dados', 'Arquiteturas de Sistemas Computacionais de Alto Desempenho', 'Análise de Desempenho de Sistemas Computacionais', 'Introdução à Bioinformática', 'Empreendedorismo e Desenvolvimento de Negócios', 'Metodologia Científica e Gerenciamento de Projetos', 'Teoria dos Jogos'] | |
class Edital | |
attr_reader :ano, :num, :remun, :vgs, :disc, :coord, :curso | |
def initialize(ano, num) | |
@ano = ano | |
@num = num | |
@remun = 'Anual: R$ '+(1 + (rand 3).to_i).to_s+'000,00' | |
@vgs = 1 + (rand 30).to_i | |
@disc = $discs.sample | |
@coord = Laranja::Nome.nome | |
@curso = ['BCC','EnC'].sample | |
end | |
end | |
editais = {} | |
for ano in 2016..2018 | |
for numero_sequencial in 1..(lim_e) | |
s = Edital.new(ano, numero_sequencial) | |
editais[[ano, numero_sequencial]] = s | |
end | |
end | |
puts "-- EDITAIS" | |
editais.each_pair do |k,e| | |
puts "INSERT INTO Edital VALUES (#{e.ano}, #{e.num}, '#{e.remun}', #{e.vgs}, #{futuro}, NULL, NULL);" | |
puts "INSERT INTO EditalTutorVirtual VALUES (#{e.ano}, #{e.num});" | |
puts "INSERT INTO EditalTutorVirtual_Curso VALUES (#{e.ano}, #{e.num}, '#{e.curso}', '#{e.coord}');" | |
puts "INSERT INTO EditalTutorVirtual_Curso_Disciplina VALUES (#{e.ano}, #{e.num}, '#{e.curso}', '#{e.coord}', '#{e.disc}');" | |
end | |
inscricoes = {} | |
editais.each_pair do |k, v| | |
insc = negos.keys.sample(lim_insc) | |
convc = insc.sample(lim_conv) | |
efetivado = convc.sample | |
inscricoes[k] = [insc, convc, efetivado] | |
end | |
def algum_bloco | |
return (0...2).map { (65 + rand(26)).chr }.join | |
end | |
puts "-- INSCRICOES" | |
inscricoes.each_pair do |k, v| | |
v[0].each do |c| | |
puts "INSERT INTO Inscricao VALUES (#{c}, #{k[0]}, #{k[1]}, #{futuro}, NULL, 'Indeferido');" | |
end | |
v[1].each do |c| | |
puts "INSERT INTO Convocacao VALUES (#{c}, #{k[0]}, #{k[1]}, #{algum_dia}, NULL, '#{algum_bloco}');" | |
end | |
c = v[2] | |
puts "INSERT INTO Efetivado VALUES (#{c}, #{k[0]}, #{k[1]}, #{algum_dia}, #{futuro});" | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment