001package io.ebeaninternal.xmlmapping; 002 003import io.ebeaninternal.xmapping.api.XmapDto; 004import io.ebeaninternal.xmapping.api.XmapEbean; 005import io.ebeaninternal.xmapping.api.XmapEntity; 006import io.ebeaninternal.xmapping.api.XmapNamedQuery; 007import io.ebeaninternal.xmapping.api.XmapRawSql; 008import io.ebeaninternal.xmlmapping.model.XmAliasMapping; 009import io.ebeaninternal.xmlmapping.model.XmColumnMapping; 010import io.ebeaninternal.xmlmapping.model.XmDto; 011import io.ebeaninternal.xmlmapping.model.XmEbean; 012import io.ebeaninternal.xmlmapping.model.XmEntity; 013import io.ebeaninternal.xmlmapping.model.XmNamedQuery; 014import io.ebeaninternal.xmlmapping.model.XmRawSql; 015 016import java.util.List; 017 018import static java.util.stream.Collectors.toList; 019 020public class ToXmapEbean { 021 022 public List<XmapEbean> toBeans(List<XmEbean> xmBeans) { 023 return xmBeans.stream() 024 .map(this::toBean) 025 .collect(toList()); 026 } 027 028 private XmapEbean toBean(XmEbean bean) { 029 XmapEbean xmap = new XmapEbean(); 030 xmap.getDto().addAll(toDto(bean.getDto())); 031 xmap.getEntity().addAll(toEntity(bean.getEntity())); 032 return xmap; 033 } 034 035 private List<XmapEntity> toEntity(List<XmEntity> xmEntity) { 036 return xmEntity.stream() 037 .map(this::toEntity) 038 .collect(toList()); 039 } 040 041 private XmapEntity toEntity(XmEntity xmEntity) { 042 XmapEntity entity = new XmapEntity(xmEntity.getClazz()); 043 for (XmNamedQuery named : xmEntity.getNamedQuery()) { 044 entity.getNamedQuery().add(toNamed(named)); 045 } 046 for (XmRawSql xmRawSql : xmEntity.getRawSql()) { 047 entity.getRawSql().add(toRaw(xmRawSql)); 048 } 049 return entity; 050 } 051 052 private XmapNamedQuery toNamed(XmNamedQuery named) { 053 return new XmapNamedQuery(named.getName(), named.getQuery().getValue()); 054 } 055 056 private List<XmapDto> toDto(List<XmDto> dto) { 057 return dto.stream() 058 .map(this::toDto) 059 .collect(toList()); 060 } 061 062 private XmapDto toDto(XmDto xmapDto) { 063 XmapDto dto = new XmapDto(xmapDto.getClazz()); 064 dto.getRawSql().addAll(toRaw(xmapDto.getRawSql())); 065 return dto; 066 } 067 068 private List<XmapRawSql> toRaw(List<XmRawSql> rawSql) { 069 return rawSql.stream() 070 .map(this::toRaw) 071 .collect(toList()); 072 } 073 074 private XmapRawSql toRaw(XmRawSql xmRawSql) { 075 XmapRawSql rawSql = new XmapRawSql(xmRawSql.getName(), xmRawSql.getQuery().getValue()); 076 for (XmColumnMapping xmCol : xmRawSql.getColumnMapping()) { 077 rawSql.addColumnMapping(xmCol.getColumn(), xmCol.getProperty()); 078 } 079 for (XmAliasMapping xmAlias : xmRawSql.getAliasMapping()) { 080 rawSql.addAliasMapping(xmAlias.getAlias(), xmAlias.getProperty()); 081 } 082 return rawSql; 083 } 084 085}