quinta-feira, 29 de outubro de 2015

Upload de arquivos através da API Rest usando import-export.bat e .sh – Pentaho 5

Para importar ou exportar um arquivo para um diretório no Pentaho 5 podemos usar o import-export no Windows o .bat e no Linux .sh.

Um exemplo de importação:
import-export.bat --import --url=http://localhost:8080/pentaho --username=admin --password=password --charset=UTF-8 --path=/public --file-path=d:\teste.html --overwrite=true --permission=true --retainOwnership=true

Obs. O comando acima pode ser executado como teste no prompt do Windows ou no terminal do Windows, posteriormente podemos criar uma rotina agendada de execução no sistema operacional.

Detalhes importantes:
 --file-path: diretório do arquivo a ser enviado;
--path: diretório de destino do arquivo;
--username: usuário
--password: senha
--charset: codificação

Para maiores informações podemos consultar a documentação da Pentaho no link:


quinta-feira, 15 de outubro de 2015

Kettle Enviando SMS através da API LocaSMS R$ 0,02 cada SMS (30 mensagens gratuitas para testes)

O objetivo desse post é demonstrar o processo de envio de SMS através do Kettle(Data Integration Pentaho).

Para esta tarefa vamos utilizar a API da LocaSMS onde o custo é R$ 0,02 cada SMS, mas para testarmos as funcionalidades a empresa disponibiliza 30 SMS grátis ao criar uma conta.

Criar uma conta no LocaSMS através do Link:
Após criar a conta você recebera via sms a senha para utilização e o usuário é o numero do seu telefone DD99999999

2º Criar uma Transformação no Kettle adicionando os steps:
- Generate Rows;
- Modified Java Script Value;
- HTTP Client;
Logo após devemos ligar todos os steps.
3º No Step Generate Rows vamos criar e definir os valores para os campos:
- usuario: que é o código de área(2 dígitos)+ o número do seu celular: DD99999999;
- senha: é enviada por sms após criar a conta;
- mensagem: mensagem a ser enviada, lembrando que os espaços devem ser preenchidos com %20, e alguns caracteres especiais podem dar problema.
- numerodestino: DDD(com 2 dígitos) + número de destino;
Ficando assim:

4º No Step Modified Java Script Value montamos a url para enviar o SMS através de uma função javascript:

var url_final = 'http://209.133.196.250/painel/api.ashx?action=sendsms&lgn='+usuario+'&pwd='+senha+'&msg='+mensagem+'&numbers='+numerodestino;

5º No Step HTTP Client enviamos a URL que é o parâmetro url_final onde efetuará o envio do SMS.

Segue link para download da transformação apresentada"EnviaLocaSMS.ktr":

Link da locaSMS onde apresenta o manual da API utilizada:



sexta-feira, 9 de outubro de 2015

sexta-feira, 2 de outubro de 2015

Pentaho Usando Google Maps - uma Rota com vários Markers em volta

Continuando o exemplo Google maps: 

Podemos criar diversos markers, informando ícones distintos para cada marker.

Para isso precisamos alterar o JavaScript do Mapa passando arrays de latitude e longitude, informamos os ícone para serem utilizados(se não informar irá utilizar o padrão), e também informamos o que será listado no clique do marker:


var map;
var directionsDisplay;

var directionsService = new google.maps.DirectionsService();

function initialize() {
debugger;
directionsDisplay = new google.maps.DirectionsRenderer();
var latlng = new google.maps.LatLng(-18.8800397, -47.05878999999999);

    var options = {
        zoom: 5,
center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    map = new google.maps.Map(document.getElementById("mapa"), options);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById("trajeto-texto"));



if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {

pontoPadrao = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
map.setCenter(pontoPadrao);

var geocoder = new google.maps.Geocoder();

geocoder.geocode({
"location": new google.maps.LatLng(position.coords.latitude, position.coords.longitude)
            },
            function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
$("#txtEnderecoPartida").val(results[0].formatted_address);
}
            });
});
}
}

function attachSecretMessage(marker, secretMessage) {
  var infowindow = new google.maps.InfoWindow({
    content: secretMessage
  });

  marker.addListener('click', function() {
    infowindow.open(marker.get('map'), marker);
  });
}

initialize();

$("form").submit(function(event) {

event.preventDefault();

var enderecoPartida = $("#txtEnderecoPartida").val();
var enderecoChegada = $("#txtEnderecoChegada").val();

var request = {
origin: enderecoPartida,
destination: enderecoChegada,
//waypoints: [{location: 'Rodoviária, Curitiba'}, {location: 'Mercado, Festival'}],
travelMode: google.maps.TravelMode.DRIVING
};

directionsService.route(request, function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(result);
}
});

});

$("");

$(function(){

var array_marker1 = [
  [' João da Silva - Brigadeiro frango 892 Curitiba PR', -25.429818707550634, -49.28400590000001],
  [' Carlos Almeida - Visconde de Guarapuava 150 Curitiba PR', -25.42701120754971, -49.243870000000015],
  ['Jean Francisco da Silva - Cruz Machado 32 Curitiba PR', -25.42956425755057, -49.27301109999996],
  ['Mauricio da Silva - Sete de Setembro 43 Curitiba PR',-25.43604810755275, -49.26236740000002],
  ['Joana Braga - Chile 3343 Curitiba PR', -25.452987707558535, -49.27117620000001],
  ['Julio Silveira - Iguacu 87 Curitiba PR', -25.43969965755398, -49.26268485000003],
  ['Marlene Mattos - Francisco Rocha 832 Curitiba PR', -25.438911307553735, -49.29122834999998],
  ['Joaquim Padilha - Silva Jardim 2232 Curitiba PR', -25.44501495755579, -49.281739000000016],
  ['Junior Fonseca - José Loureiro 678 Curitiba PR', -25.43124715755116, -49.26620034999996],
  ['Patricia da Paz - Praça Ozorio 23 Curitiba PR', -25.432811457551686, -49.27505959999996],
  ['Fernando Pedrosa - Visconde de Nacar 54 Curitiba PR', -25.444558307555685, -49.28864414999998],
  ['Kelvin Jeison - visconde de guarapuava 750 Curitiba PR', -25.44636735755626, -49.27561355],
  ['Sem Nome - R. Des. Motta, 750 - Água Verde, Fazendinha/Portão, Curitiba - PR', -25.43742330755322, -49.26142370000002],
  ['Paulo Coelho - Av. Silva Jardim, 13-29 - Rebouças, Matriz, Curitiba - PR, Brasil', -25.43742330755322, -49.26142370000002],
  
  ];
  
  

for (i = 0; i < array_marker1.length; i++) {  
//alert (array_marker1[i]);
  marker = new google.maps.Marker({
position: new google.maps.LatLng(array_marker1[i][1], array_marker1[i][2]),
    title: array_marker1[i].toString(),
icon: 'img/marker1.png', //define o ícone
    map: map
  });
  attachSecretMessage(marker, array_marker1[i].toString()); 
}


var array_marker2 = [
  [' 001 - Pablo da Costa - André de Barros 87 Curitiba PR', -25.436006957552745, -49.27170760000001],
  [' 002 - Vicente Machado Curitiba PR', -25.433630157551953, -49.27784125000005],
  [' 003 - Alfredo Bufren 98 Curitiba PR',-25.428608807550226, -49.26821755000003],
  ['  004 - Av. Vicente Machado, 2293-2327 - Centro, Santa Felicidade, Curitiba - PR, 80440-020, Brasil',-25.4417465075547, -49.29811749999999],
  [' 005 - Rua do Herval Curitiba PR', -25.432087407551446, -49.25545505000002],
  ];

for (i = 0; i < array_marker2.length; i++) {  
  marker = new google.maps.Marker({
position: new google.maps.LatLng(array_marker2[i][1], array_marker2[i][2]),
    title: array_marker2[i].toString(),
icon: 'img/marker2.png', //define o icone
    map: map
  });
  attachSecretMessage(marker, array_marker2[i].toString()); 
}

var array_marker3 = [
  [' CT 1 - Brigadeiro Franco 1050 Curitiba PR', -25.434307407552133, -49.28192419999999],
  [' CT 2 - Engenheiro Rebouças 430 Curitiba PR', -25.443225357555207, -49.26313204999997],
  [' CT 3 - Senador Souza Neves 874 Curitiba PR', -25.43131000755113, -49.248787400000026],
  
  ];

for (i = 0; i < array_marker3.length; i++) {  
  marker = new google.maps.Marker({
position: new google.maps.LatLng(array_marker3[i][1], array_marker3[i][2]),
    title: array_marker3[i].toString(),
icon: 'img/marker3.png', // define o icone
    map: map
  });
  attachSecretMessage(marker, array_marker3[i].toString()); 
}

var enderecoPartida = "Engenheiro rebouças 650 Curitiba PR";
        var enderecoChegada = "Brigadeiro Franco 654 Curitiba PR";
   
var request = {
origin: enderecoPartida,
destination: enderecoChegada,
   //waypoints: [{location: 'Brigadeiro Franco 354 Curitiba PR'}, {location: 'Getulio Vargas 354 Curitiba PR'}],
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(result);

}
});
});


Explicações:
 icon: 'img/marker3.png' = se não informar (comentar a linha) é usado o padrão do google maps, no pentaho pode criar uma pasta chamada Google dentro do diretorio: 
c:\opt\biserver-ce\pentaho-solutions\system\common-ui\resources\js\google\img\, dentro dessa pasta 'img' podemos adicionar todos os ícones e depois efetuar o apontamento no Js da seguinte forma:
 icon: '/pentaho/content/common-ui/resources/js/google/marker3.png',

function attachSecretMessage= é usada para apresentar os dados ao clicar sobre o marker.

Para conseguir ícones conforme a necessidade e de forma gratuita pode-se utilizar alguns sites, este link apresenta alguns: