sexta-feira, 24 de janeiro de 2014

String de conexão diferente para cada desenvolvedor

Estou trabalhando em um projeto com outra empresa. Eu e um colega ficamos algumas horas tentando fazer com quem pudéssemos ter uma string de conexão diferente desta outra empresa sem ficar alterando isso toda hora que formos dar commit do código para eles.

Eles já usavam uma configuração no appSettings para determinar qual string de conexão seria usada. Meu colega descobriu que é possível mudar o valores do appSettings referenciando um arquivo (usando o atributo file que o appSettings possue). Seu web.config fica dessa forma:

(...)
    <connectionStrings>
        <add name="conn1" connectionString="[banco deles]" />
        <add name="conn2" connectionString="[nosso banco]" />
    </connectionStrings>
    <appSettings file="appsettings_desenv.config">
        <add key="DefaultConnectionString" value="conn1" />
    </appSettings>
(...)


Então você cria o arquivo appsettings_desenv.config com este conteúdo (na mesma pasta do web.config):

<?xml version="1.0"?>
<appSettings>
    <add key="DefaultConnectionString" value="conn2" />
</appSettings>


Na sua máquina, este arquivo existindo, DefaultConnectionString passa a valer conn2. Então você pega, no código, a string de conexão a partir da configuração:

var key = ConfigurationManager.AppSettings["DefaultConnectionString"];
var connectionString = ConfigurationManager.ConnectionStrings[key].ConnectionString;


E virá o que existe em conn2. Se a pessoa não possui o arquivo, virá o conn1.

segunda-feira, 6 de janeiro de 2014

Datepicker sem o campo Dia

Faz pouco tempo, comecei a mexer com android. Já existe em outros lugares essa solução, mas, como os casos que vi apontavam o nome de campo errado e faziam loops através de todos os campos, resolvi criar um post sobre isso.

Eu queria colocar um DatePicket no meu app que não tivesse o campo de Dia. Aparentemente isso não pode ser configurado: tem que ser na base da gambiarra. Então, aqui está:

DatePicker picker = (DatePicker)findViewById(R.id.[seu campo]);
Field field = picker.getClass().getDeclaredField("mDaySpinner");

field.setAccessible(true);
Object yearPicker = field.get(picker);
((View) yearPicker).setVisibility(View.GONE);

Colocando isso na Activity, no onCreate, você consegue deixa apenas o mês e o ano no picker.