Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public with sharing class ClasseSOSL {
- public static Map<String, String> buscaPalavraEmName(String palavra){
- List<List<Object>> listona = [FIND :palavra IN All Fields RETURNING Account(Name),
- Contact(firstName), Opportunity(Name)];
- Map<String, String> mapa = new Map<String, String>();
- if(listona[0].size() != 0){
- Integer nChave = 0;
- for(Object la:listona[0]){
- mapa.put('A'+nChave, ((Account)la).name);
- nChave++;
- }
- }
- if(listona[1].size() != 0){
- Integer nChave = 0;
- for(Object la:listona[1]){
- mapa.put('C'+nChave, ((Contact)la).firstname);
- nChave++;
- }
- }
- if(listona[2].size() != 0){
- Integer nChave = 0;
- for(Object la:listona[2]){
- mapa.put('O'+nChave, ((Opportunity)la).name);
- nChave++;
- }
- }
- return mapa;
- }
- }
- /*
- Construa uma classe com um método estático em que se informe como parâmetro uma palavra que
- deverá ser buscada nos objetos Account, Contact e Opportunity, buscada em todos os campos
- e que retorne de Account, o Name, de Contact, o firstname e de Opportunity, o nome da oportunidade.
- Deve ser utilizado o método apresentado no início desses códigos para se determinar o tipo da lista
- dinamicamente e criar um map, contendo todos os dados, porém, em que a chave do Map de todos os tipos de objetos, deverá ser como se segue: de Account, deverá ser a letra A seguida de um número auto incrementável, para dizer que significa uma conta, a letra C quando for um contato, e a letra O quando for uma Oportunidade, todos da mesma forma, com o número auto incrementável.
- */
- //Conteúdo Anonymous (2 exemplos de Map)
- Map<String, String> mapa = ClasseSOSL.buscaPalavraEmName('united');
- // Map<String, String> mapa = new Map<String, String>();
- // mapa.put('A0', 'Burlington');
- // mapa.put('A1', 'Dickenson');
- // mapa.put('C0', 'João');
- // mapa.put('A0', 'Valeo do Brasil');
- // mapa.put('A2', 'Petrobrás');
- // mapa.put('O0', 'Coca Cola Opportunity');
- // mapa.put('C1', 'José');
- // mapa.put('O1', 'Pepsi Opportunity');
- // mapa.put('O2', 'Guaraná Opportunity');
- // mapa.put('A3', 'Tesla Motors');
- // mapa.put('A4', 'Toyota');
- Integer cont1 = 0;
- Integer cont2 = 0;
- Integer cont3 = 0;
- for(String chave:mapa.keySet()){
- if(chave.startsWith('A')){
- if(cont1==0){
- System.debug('Contas:');
- }
- System.debug(mapa.get(chave));
- cont1++;
- cont2 = 0;
- cont3 = 0;
- }else if(chave.startsWith('C')){
- if(cont2==0){
- System.debug('Contatos:');
- }
- System.debug(mapa.get(chave));
- cont2++;
- cont1 = 0;
- cont3 = 0;
- }else{
- if(cont3==0){
- System.debug('Oportunidades:');
- }
- System.debug(mapa.get(chave));
- cont3++;
- cont1 = 0;
- cont2 = 0;
- }
- }
- Double tempoInicial = DateTime.now().getTime();
- Map<String, String> mapa = ClasseSOSL.buscaPalavraEmName('united');
- // Map<String, String> mapa = new Map<String, String>();
- // mapa.put('A0', 'Burlington');
- // mapa.put('A1', 'Dickenson');
- // mapa.put('C0', 'João');
- // mapa.put('A0', 'Valeo do Brasil');
- // mapa.put('A2', 'Petrobrás');
- // mapa.put('O0', 'Coca Cola Opportunity');
- // mapa.put('C1', 'José');
- // mapa.put('O1', 'Pepsi Opportunity');
- // mapa.put('O2', 'Guaraná Opportunity');
- // mapa.put('A3', 'Tesla Motors');
- // mapa.put('A4', 'Toyota');
- Integer cont1 = 0;
- Integer cont2 = 0;
- Integer cont3 = 0;
- for(String chave:mapa.keySet()){
- if(chave.startsWith('A')){
- if(cont1==0){
- System.debug('Contas:');
- }
- System.debug(mapa.get(chave));
- cont1++;
- cont2 = 0;
- cont3 = 0;
- }else if(chave.startsWith('C')){
- if(cont2==0){
- System.debug('Contatos:');
- }
- System.debug(mapa.get(chave));
- cont2++;
- cont1 = 0;
- cont3 = 0;
- }else{
- if(cont3==0){
- System.debug('Oportunidades:');
- }
- System.debug(mapa.get(chave));
- cont3++;
- cont1 = 0;
- cont2 = 0;
- }
- }
- Double tempoFinal = DateTime.now().getTime();
- System.debug('Tempo levado: '+ (tempoFinal - tempoInicial)+'ms');
- //Código Airton e código Adriel com comparação de performance
- Double tempoInicial = DateTime.now().getTime();
- Map<String, String> resultados = ClasseSOSL.buscaPalavraEmName('united');
- // Exibe lista de contas
- System.debug('=== Contas ===');
- for (String chave : resultados.keySet()) {
- if (chave.startsWith('A')) {
- String nomeConta = resultados.get(chave);
- System.debug(chave+' = '+nomeConta);
- }
- }
- // Exibe lista de oportunidades
- System.debug('=== Oportunidades ===');
- for (String chave : resultados.keySet()) {
- if (chave.startsWith('O')) {
- String nomeOportunidade = resultados.get(chave);
- System.debug(chave+' = '+nomeOportunidade);
- }
- }
- // Exibe lista de contatos
- System.debug('=== Contatos ===');
- for (String chave : resultados.keySet()) {
- if (chave.startsWith('C')) {
- String nomeContato = resultados.get(chave);
- System.debug(chave+' = '+nomeContato);
- }
- }
- Double tempoFinal = DateTime.now().getTime();
- System.debug('Tempo levado: '+ (tempoFinal - tempoInicial)+'ms');
Advertisement
Comments
-
- 101.166.94.231:27030 Cheap gmod server! Join today!
Add Comment
Please, Sign In to add comment
Advertisement