1111import br .com .brasilapi .api .CPTEC ;
1212import br .com .brasilapi .api .CPTECClimaAeroporto ;
1313import br .com .brasilapi .api .CPTECClimaCapital ;
14- import br .com .brasilapi .api .CPTECLocalidade ;
15- import br .com .brasilapi .api .CPTECPrevisaoMeteorologica ;
14+ import br .com .brasilapi .api .CPTECCidade ;
15+ import br .com .brasilapi .api .CPTECClimaPrevisao ;
16+ import br .com .brasilapi .api .CPTECOnda ;
1617import br .com .brasilapi .api .Corretora ;
1718import br .com .brasilapi .api .DDD ;
1819import br .com .brasilapi .api .Feriados ;
@@ -226,25 +227,105 @@ public static Corretora corretora(String cnpj) {
226227 return obj != null ? (Corretora ) obj .clone () : null ;
227228 }
228229
229- public static CPTECLocalidade [] cptecLocalidade () {
230+ /**
231+ * Retorna listagem com todas as cidades junto a seus respectivos códigos presentes
232+ * nos serviços da CPTEC. O Código destas cidades será utilizado para os serviços
233+ * de meteorologia e a ondas (previsão oceânica) fornecido pelo centro. Leve em consideração
234+ * que o WebService do CPTEC as vezes é instável, então se não encontrar uma determinada
235+ * cidade na listagem completa, tente buscando por parte de seu nome no endpoint de busca.
236+ *
237+ * @return Lista de {@link CPTECCidade}
238+ */
239+ public static CPTECCidade [] cptecListarLocalidades () {
230240 CPTEC [] obj = (CPTEC []) api (CPTEC [].class , "cptec/v1/cidade" , "" );
231241 return obj != null ? (CPTEC []) obj .clone () : null ;
232242 }
233243
234- public static CPTECLocalidade [] cptecLocalidade (String nomeCidade ) {
244+ /**
245+ * Retorna listagem com todas as cidades correspondentes ao termo pesquisado
246+ * junto a seus respectivos códigos presentes nos serviços da CPTEC.
247+ * O Código destas cidades será utilizado para os serviços de
248+ * meteorologia e a ondas (previsão oceânica) fornecido pelo centro.
249+ *
250+ * @param nomeCidade
251+ * @return Lista de {@link CPTECCidade}
252+ */
253+ public static CPTECCidade [] cptecBuscarLocalidades (String nomeCidade ) {
235254 CPTEC [] obj = (CPTEC []) api (CPTEC [].class , "cptec/v1/cidade" , nomeCidade );
236- return obj != null ? (CPTECLocalidade []) obj .clone () : null ;
255+ return obj != null ? (CPTECCidade []) obj .clone () : null ;
237256 }
238257
258+ /**
259+ * Retorna condições meteorológicas atuais nas capitais do país,
260+ * com base nas estações de solo de seu aeroporto.
261+ *
262+ * @return Lista de {@link CPTECClimaCapital}
263+ */
239264 public static CPTECClimaCapital [] cptecCondicoesAtuaisCapitais () {
240265 CPTEC [] obj = (CPTEC []) api (CPTEC [].class , "cptec/v1/clima/capital" , "" );
241266 return obj != null ? (CPTECClimaCapital []) obj .clone () : null ;
242267 }
243268
244- public static CPTECClimaAeroporto [] cptecCondicoesAtuaisAeroporto (String icaoCode ) {
245- CPTEC [] obj = (CPTEC []) api (CPTEC [].class , "cptec/v1/clima/aeroporto" , icaoCode );
246- return obj != null ? (CPTECClimaAeroporto []) obj .clone () : null ;
269+ /**
270+ * Retorna condições meteorológicas atuais no aeroporto solicitado.
271+ * Este endpoint utiliza o código ICAO (4 dígitos) do aeroporto.
272+ *
273+ * @param icaoCode Código ICAO do aeroporto
274+ * @return {@link CPTECClimaAeroporto}
275+ */
276+ public static CPTECClimaAeroporto cptecCondicoesAtuaisAeroporto (String icaoCode ) {
277+ CPTEC obj = (CPTEC ) api (CPTEC .class , "cptec/v1/clima/aeroporto/" , icaoCode );
278+ return obj != null ? (CPTECClimaAeroporto ) obj .clone () : null ;
279+ }
280+
281+ /**
282+ * Retorna Pervisão meteorológica para 1 dia na cidade informada.
283+ *
284+ * @param codigoCidade
285+ * @return {@link CPTECClimaPrevisao}
286+ */
287+ public static CPTECClimaPrevisao cptecPrevisaoMeteorologicaCidade (Integer codigoCidade ) {
288+ CPTEC obj = (CPTEC ) api (CPTEC .class , "cptec/v1/clima/previsao/" , String .valueOf (codigoCidade ));
289+ return obj != null ? (CPTECClimaPrevisao ) obj .clone () : null ;
247290 }
291+
292+ /**
293+ * Retorna a previsão meteorológica para a cidade informada para um período de 1 até 6 dias.
294+ * Devido a inconsistências encontradas nos retornos da CPTEC nossa API só consegue
295+ * retornar com precisão o período máximo de 6 dias.
296+ *
297+ * @param codigoCidade
298+ * @param dias Número de dias, máximo 6.
299+ * @return {@link CPTECClimaPrevisao}
300+ */
301+ public static CPTECClimaPrevisao cptecPrevisaoMeteorologicaCidade (Integer codigoCidade , Integer dias ) {
302+ CPTEC obj = (CPTEC ) api (CPTEC .class , "cptec/v1/clima/previsao/" + codigoCidade + "/" , String .valueOf (dias ));
303+ return obj != null ? (CPTECClimaPrevisao ) obj .clone () : null ;
304+ }
305+
306+ /**
307+ * Retorna a previsão oceânica para a cidade informada para 1 dia.
308+ *
309+ * @param codigoCidade
310+ * @return {@link CPTECOnda}
311+ */
312+ public static CPTECOnda cptecPrevisaoOceanica (Integer codigoCidade ) {
313+ CPTEC obj = (CPTEC ) api (CPTEC .class , "cptec/v1/ondas/" , String .valueOf (codigoCidade ));
314+ return obj != null ? (CPTECOnda ) obj .clone () : null ;
315+ }
316+
317+ /**
318+ * Retorna a previsão oceânica para a cidade informada para um período de, até, 6 dias.
319+ *
320+ * @param codigoCidade
321+ * @param dias Número de dias, máximo 6.
322+ * @return {@link CPTECOnda}
323+ */
324+ public static CPTECOnda cptecPrevisaoOceanica (Integer codigoCidade , Integer dias ) {
325+ CPTEC obj = (CPTEC ) api (CPTEC .class , "cptec/v1/ondas/" + codigoCidade + "/" , String .valueOf (dias ));
326+ return obj != null ? (CPTECOnda ) obj .clone () : null ;
327+ }
328+
248329 /**
249330 * DDD significa Discagem Direta à Distância. é um sistema de ligação telefônica
250331 * automática entre diferentes áreas urbanas nacionais. O DDD é um código
@@ -482,22 +563,27 @@ public static Taxa taxa(String sigla) {
482563 * @return {@link Object}
483564 */
484565 private static Object api (Class <?> classAPIModel , String parameter , String code ) {
485- code = code .replaceAll ("/" , "" );
486- if (Cache .getEnableCache ()) {
487- Object obj = Cache .getCache (classAPIModel , code );
488-
489- if (obj == null ) {
490- String json = Service .connection (parameter + code );
491- if (json != null ) {
492- obj = gson .fromJson (json , classAPIModel );
493- Cache .setCache (classAPIModel , code , obj );
566+ try {
567+ code = code .replaceAll ("/" , "" );
568+ if (Cache .getEnableCache ()) {
569+ Object obj = Cache .getCache (classAPIModel , code );
570+
571+ if (obj == null ) {
572+ String json = Service .connection (parameter + code );
573+ if (json != null ) {
574+ obj = gson .fromJson (json , classAPIModel );
575+ Cache .setCache (classAPIModel , code , obj );
576+ }
494577 }
578+
579+ return obj ;
580+ } else {
581+ String json = Service .connection (parameter + code );
582+ return gson .fromJson (json , classAPIModel );
495583 }
496-
497- return obj ;
498- } else {
499- String json = Service .connection (parameter + code );
500- return gson .fromJson (json , classAPIModel );
584+ } catch (Exception e ) {
585+ Log .setConsoleError (e .getMessage ());
586+ return null ;
501587 }
502588 }
503589
@@ -512,7 +598,8 @@ public static void main(String[] args) {
512598 + " |____/|_| \\ __,_|___/_|_/_/ \\ _\\ _| |___| \\ ___/ \\ __,_| \\ _/ \\ __,_|\r \n "
513599 + "\r \n BrasilAPI-Java. Version \u001B [42m" + VERSION + "\u001B [0m"
514600 + "\r \n https://github.com/SavioAndres/BrasilAPI-Java" );
515- System .out .println (cptecLocalidade ());
601+ Log .setEnable (true );
602+ System .out .println (cptecPrevisaoMeteorologicaCidade (241 , 2 ));
516603 }
517604
518605}
0 commit comments