1Respostas

Versão: 12.4
Ambiente: local

Estou fazendo um serviço de importação de Noticias.

A importação de todas informações estão prontas, faltando só a parte das imagens.

As importações são feitas chamando uma api e a partir dessa chamada, são gravadas as informações dentro do Portal Lumis junto com as imagens, que vem de links.

Preciso importar as imagens no Lumis Portal e fazer a associação dessa imagens aos Posts de forma dinâmica.

Alguém sabe como posso fazer isso?

Em 08/12/2020 09:51
Resolvido

1 Respostas

 

- Você tem que ter uma instância de Notícias e uma de Repositório de Mídias.
- A migração vai criar uma mídia na instância de mídias para cada imagem que receber (seja no corpo, seja nesses campos separados).
---- Para isso, usar a entidade lumis.service.media.Media.

Source<?> mediaSource = SourceFactory.createSource("default", serviceInstanceIdRepositorioMedia);

String media = mediaSource.addData(
						Maps.builder().put("mediaFile", fileAdd.getId()).put("title", fileAdd.getName()).put("type", 0)
								.put(ContentTableSource.TRANSITION_PARAMETER_NAME, "authoring.approve").build())
						.getItemId();

                        
---- Repare que para criar a mídia, precisa antes adicionar um File no portal (campo Media.mediaFile). Para isso, usar lumis.portal.file.IFileManager.add(SessionConfig sessionConfig, String name, File file, String contentType, String serviceInstanceId, ITransaction transaction) (passando a instância de Mídia no parâmetro serviceInstanceId).

FileConfig fileAdd = ManagerFactory.getFileManager().add(sessionConfig,
						Utils.nomeArquivoImagem(urlFile), file, "image/jpeg", serviceInstanceIdRepositorioMedia,
						transaction);

 

- Criar a notícia na instância de notícias usando o Source dela (criar o Source com lumis.doui.source.SourceFactory.createSource(String, String)), chamando lumis.doui.source.Source.addData(Object) passando os valores adequados para cada campo.

 

Source<?> newsSource = SourceFactory.createSource("default", serviceInstanceIdNewsGlobal);

String newsId = newsSource
						.addData(Maps.builder().put("title", record.get("name"))
								.put("introduction", record.get("stretch")).put("introductionImage", small_image_id)
								.put("content", StringEscapeUtils.unescapeHtml((String) record.get("description")))
								.put("publishStartDate", Utils.formataDataCompleta((String) record.get("date")))
								.put("highlight", ((String) record.get("highlighted")) == "no" ? 0 : 1)
								.put("contentImage", big_image_id)
								.put(ContentTableSource.TRANSITION_PARAMETER_NAME,
										Utils.fromTo(Integer.toString((Integer) record.get("published"))))
								.build())
						.getItemId();

 

 

 

Em 08/12/2020 09:53
Responder

Acompanhar pergunta

Receba atualizações e novas respostas por e-mail, e ajude a resolver as dúvidas da comunidade.

Realize Login para poder seguir!