Advertisement
airton-junior

ClasseSOSL

Mar 24th, 2023 (edited)
676
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.42 KB | None | 0 0
  1. public with sharing class ClasseSOSL {
  2.  
  3.     public static Map<String, String> buscaPalavraEmName(String palavra){
  4.         List<List<Object>> listona = [FIND :palavra IN All Fields RETURNING Account(Name),
  5.         Contact(firstName), Opportunity(Name)];
  6.         Map<String, String> mapa = new Map<String, String>();
  7.         if(listona[0].size() != 0){
  8.             Integer nChave = 0;
  9.             for(Object la:listona[0]){
  10.                 mapa.put('A'+nChave, ((Account)la).name);
  11.                 nChave++;
  12.             }
  13.         }
  14.         if(listona[1].size() != 0){
  15.             Integer nChave = 0;
  16.             for(Object la:listona[1]){
  17.                 mapa.put('C'+nChave, ((Contact)la).firstname);
  18.                 nChave++;
  19.             }
  20.         }
  21.         if(listona[2].size() != 0){
  22.             Integer nChave = 0;
  23.             for(Object la:listona[2]){
  24.                 mapa.put('O'+nChave, ((Opportunity)la).name);
  25.                 nChave++;
  26.             }
  27.         }
  28.         return mapa;
  29.     }
  30. }
  31.  
  32. /*
  33. Construa uma classe com um método estático em que se informe como parâmetro uma palavra que
  34. deverá ser buscada nos objetos Account, Contact e Opportunity, buscada em todos os campos
  35. e que retorne de Account, o Name, de Contact, o firstname e de Opportunity, o nome da oportunidade.
  36. Deve ser utilizado o método apresentado no início desses códigos para se determinar o tipo da lista
  37. 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.
  38. */
  39.  
  40. //Conteúdo Anonymous (2 exemplos de Map)
  41.  
  42. Map<String, String> mapa = ClasseSOSL.buscaPalavraEmName('united');
  43. // Map<String, String> mapa = new Map<String, String>();
  44. // mapa.put('A0', 'Burlington');
  45. // mapa.put('A1', 'Dickenson');
  46. // mapa.put('C0', 'João');
  47. // mapa.put('A0', 'Valeo do Brasil');
  48. // mapa.put('A2', 'Petrobrás');
  49. // mapa.put('O0', 'Coca Cola Opportunity');
  50. // mapa.put('C1', 'José');
  51. // mapa.put('O1', 'Pepsi Opportunity');
  52. // mapa.put('O2', 'Guaraná Opportunity');
  53. // mapa.put('A3', 'Tesla Motors');
  54. // mapa.put('A4', 'Toyota');
  55. Integer cont1 = 0;
  56. Integer cont2 = 0;
  57. Integer cont3 = 0;
  58.  
  59. for(String chave:mapa.keySet()){
  60.     if(chave.startsWith('A')){
  61.         if(cont1==0){
  62.         System.debug('Contas:');
  63.         }
  64.         System.debug(mapa.get(chave));
  65.         cont1++;
  66.         cont2 = 0;
  67.         cont3 = 0;
  68.    }else if(chave.startsWith('C')){
  69.         if(cont2==0){
  70.         System.debug('Contatos:');
  71.         }
  72.         System.debug(mapa.get(chave));
  73.         cont2++;
  74.         cont1 = 0;
  75.         cont3 = 0;
  76.    }else{
  77.         if(cont3==0){
  78.         System.debug('Oportunidades:');
  79.         }
  80.         System.debug(mapa.get(chave));
  81.         cont3++;
  82.         cont1 = 0;
  83.         cont2 = 0;
  84.    }
  85. }
  86.  
  87.  
  88.  
  89. Double tempoInicial = DateTime.now().getTime();
  90. Map<String, String> mapa = ClasseSOSL.buscaPalavraEmName('united');
  91. // Map<String, String> mapa = new Map<String, String>();
  92. // mapa.put('A0', 'Burlington');
  93. // mapa.put('A1', 'Dickenson');
  94. // mapa.put('C0', 'João');
  95. // mapa.put('A0', 'Valeo do Brasil');
  96. // mapa.put('A2', 'Petrobrás');
  97. // mapa.put('O0', 'Coca Cola Opportunity');
  98. // mapa.put('C1', 'José');
  99. // mapa.put('O1', 'Pepsi Opportunity');
  100. // mapa.put('O2', 'Guaraná Opportunity');
  101. // mapa.put('A3', 'Tesla Motors');
  102. // mapa.put('A4', 'Toyota');
  103. Integer cont1 = 0;
  104. Integer cont2 = 0;
  105. Integer cont3 = 0;
  106.  
  107. for(String chave:mapa.keySet()){
  108.     if(chave.startsWith('A')){
  109.         if(cont1==0){
  110.         System.debug('Contas:');
  111.         }
  112.         System.debug(mapa.get(chave));
  113.         cont1++;
  114.         cont2 = 0;
  115.         cont3 = 0;
  116.    }else if(chave.startsWith('C')){
  117.         if(cont2==0){
  118.         System.debug('Contatos:');
  119.         }
  120.         System.debug(mapa.get(chave));
  121.         cont2++;
  122.         cont1 = 0;
  123.         cont3 = 0;
  124.    }else{
  125.         if(cont3==0){
  126.         System.debug('Oportunidades:');
  127.         }
  128.         System.debug(mapa.get(chave));
  129.         cont3++;
  130.         cont1 = 0;
  131.         cont2 = 0;
  132.    }
  133. }
  134. Double tempoFinal = DateTime.now().getTime();
  135. System.debug('Tempo levado: '+ (tempoFinal - tempoInicial)+'ms');
  136.  
  137.  
  138. //Código Airton e código Adriel com comparação de performance
  139. Double tempoInicial = DateTime.now().getTime();
  140.  
  141. Map<String, String> resultados = ClasseSOSL.buscaPalavraEmName('united');
  142.  
  143. // Exibe lista de contas
  144. System.debug('=== Contas ===');
  145. for (String chave : resultados.keySet()) {
  146.     if (chave.startsWith('A')) {
  147.         String nomeConta = resultados.get(chave);
  148.         System.debug(chave+' = '+nomeConta);
  149.     }
  150. }
  151.  
  152. // Exibe lista de oportunidades
  153. System.debug('=== Oportunidades ===');
  154. for (String chave : resultados.keySet()) {
  155.     if (chave.startsWith('O')) {
  156.         String nomeOportunidade = resultados.get(chave);
  157.         System.debug(chave+' = '+nomeOportunidade);
  158.     }
  159. }
  160.  
  161. // Exibe lista de contatos
  162. System.debug('=== Contatos ===');
  163. for (String chave : resultados.keySet()) {
  164.     if (chave.startsWith('C')) {
  165.         String nomeContato = resultados.get(chave);
  166.         System.debug(chave+' = '+nomeContato);
  167.     }
  168. }
  169. Double tempoFinal = DateTime.now().getTime();
  170. System.debug('Tempo levado: '+ (tempoFinal - tempoInicial)+'ms');
  171.  
  172.  
  173.  
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement