package br.com.centralit.bpm.config;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import br.com.centralit.bpm.dto.ElementoFluxoDTO;
import br.com.centralit.bpm.dto.PropriedadeElementoDTO;
import br.com.citframework.util.Reflexao;
public class Design {
private List<PropriedadeElementoDTO> propriedades;
private List<ElementoFluxoDTO> elementos;
public List<PropriedadeElementoDTO> getPropriedades() {
return propriedades;
}
public void setPropriedades(final List<PropriedadeElementoDTO> propriedades) {
this.propriedades = propriedades;
}
public PropriedadeElementoDTO getPropriedade(final String id) {
if (propriedades == null) {
return null;
}
PropriedadeElementoDTO result = null;
for (final PropriedadeElementoDTO propriedadeDto : propriedades) {
if (propriedadeDto.getId().equalsIgnoreCase(id)) {
result = propriedadeDto;
break;
}
}
return result;
}
public ElementoFluxoDTO getElemento(final String tipo) {
if (elementos == null) {
return null;
}
ElementoFluxoDTO result = null;
for (final ElementoFluxoDTO elementoDto : elementos) {
if (elementoDto.getTipoElemento().equalsIgnoreCase(tipo)) {
result = elementoDto;
break;
}
}
return result;
}
public List<ElementoFluxoDTO> getElementos() {
return elementos;
}
public void setElementos(final List<ElementoFluxoDTO> elementos) {
this.elementos = elementos;
}
public void configuraElementos() {
if (propriedades == null || elementos == null) {
return;
}
final HashMap<String, PropriedadeElementoDTO> mapProp = new HashMap<>();
for (final PropriedadeElementoDTO propriedade : propriedades) {
if (propriedade != null) {
if (propriedade.getValorDefault() == null) {
propriedade.setValorDefault("");
}
mapProp.put(propriedade.getId(), propriedade);
}
}
for (final ElementoFluxoDTO elemento : elementos) {
if (elemento != null && elemento.getLstPropriedades() != null) {
final List<PropriedadeElementoDTO> lst = new ArrayList<>();
for (int i = 0; i < elemento.getLstPropriedades().length; i++) {
if (mapProp.get(elemento.getLstPropriedades()[i]) != null) {
final PropriedadeElementoDTO propriedade = mapProp.get(elemento.getLstPropriedades()[i]);
lst.add(propriedade);
try {
Reflexao.setPropertyValue(elemento, elemento.getLstPropriedades()[i], propriedade.getValorDefault());
} catch (final Exception e) {}
}
}
elemento.setPropriedades(lst);
}
}
}
}