package br.gov.servicos.editor.conteudo.cartas;
import br.gov.servicos.editor.conteudo.ConteudoMetadadosProvider;
import br.gov.servicos.editor.frontend.Siorg;
import br.gov.servicos.editor.git.ConteudoMetadados;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldDefaults;
import lombok.experimental.Wither;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import java.util.Optional;
import static javax.xml.bind.annotation.XmlAccessType.NONE;
import static lombok.AccessLevel.PRIVATE;
@Data
@Wither
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = PRIVATE)
@XmlAccessorType(NONE)
@XmlType(name = "Servico", propOrder = {"nome", "orgao"})
public class ServicoXML implements ConteudoMetadadosProvider {
String tipo = "servico";
@XmlElement(required = true)
String nome;
@XmlElement(required = true)
TagOrgao orgao;
@Override
public ConteudoMetadados toConteudoMetadados(Siorg siorg) {
String id = Optional.ofNullable(getOrgao())
.map(TagOrgao::getId)
.orElse("");
return new ConteudoMetadados()
.withTipo(tipo)
.withNome(getNome())
.withNomeOrgao(nomeOrgao(siorg, id))
.withOrgaoId(id);
}
private String nomeOrgao(Siorg siorg, String idOrgao) {
return siorg.nomeDoOrgao(idOrgao)
.orElse(" - - ");
}
@Data
@Wither
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = PRIVATE)
@XmlAccessorType(NONE)
@XmlType(name = "Orgao", propOrder = {"id"})
public static class TagOrgao {
@XmlAttribute(required = true)
String id;
}
}