package net.techreadiness.service.object.mapping;
import java.util.Map;
import ma.glasnost.orika.CustomMapper;
import ma.glasnost.orika.MappingContext;
import net.techreadiness.persistence.domain.OrgDO;
import net.techreadiness.persistence.domain.OrgExtDO;
import net.techreadiness.service.object.Org;
import com.google.common.collect.Maps;
public class OrgDOandOrgMapper extends CustomMapper<OrgDO, Org> {
@Override
public void mapAtoB(OrgDO orgDO, Org org, MappingContext context) {
Map<String, String> map = Maps.newHashMap();
if (orgDO.getOrgExts() != null) {
for (OrgExtDO orgExtDO : orgDO.getOrgExts()) {
map.put(orgExtDO.getEntityField().getCode(), orgExtDO.getValue());
}
}
org.setExtendedAttributes(map);
// it's quite possible there is no parent org, the only
// way to know (since it is lazily loaded) is to try, though.
try {
org.setParentOrgId(orgDO.getParentOrg().getOrgId());
org.setParentOrgCode(orgDO.getParentOrg().getCode());
org.setParentOrgName(orgDO.getParentOrg().getName());
org.setParentOrgLocalCode(orgDO.getParentOrg().getLocalCode());
} catch (NullPointerException npe) {
org.setParentOrgId(null);
org.setParentOrgCode("");
org.setParentOrgName("");
}
org.setOrgTypeId(orgDO.getOrgType().getOrgTypeId());
org.setOrgTypeCode(orgDO.getOrgType().getCode());
org.setOrgTypeName(orgDO.getOrgType().getName());
org.setOrgTypeAllowDevice(orgDO.getOrgType().isAllowDevice());
}
@Override
public void mapBtoA(Org org, OrgDO orgDO, MappingContext context) {
orgDO.setExtAttributes(org.getExtendedAttributes());
}
}