package com.sequenceiq.cloudbreak.converter; import java.text.SimpleDateFormat; import java.util.Date; import javax.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import com.sequenceiq.cloudbreak.api.model.CloudbreakFlexUsageJson; import com.sequenceiq.cloudbreak.domain.CloudbreakUsage; import com.sequenceiq.cloudbreak.service.user.UserDetailsService; import com.sequenceiq.cloudbreak.service.user.UserFilterField; @Component public class CloudbreakUsageToCloudbreakFlexJsonConverter extends AbstractConversionServiceAwareConverter<CloudbreakUsage, CloudbreakFlexUsageJson> { private static final Logger LOGGER = LoggerFactory.getLogger(CloudbreakUsageToCloudbreakFlexJsonConverter.class); private static final String DATE_FORMAT_PATTERN = "yyyy-MM-dd"; @Inject private UserDetailsService userDetailsService; @Override public CloudbreakFlexUsageJson convert(CloudbreakUsage source) { CloudbreakFlexUsageJson json = new CloudbreakFlexUsageJson(); json.setOwner(source.getOwner()); json.setAccount(source.getAccount()); json.setBlueprintName(source.getBlueprintName()); json.setStackName(source.getStackName()); json.setParentUuid(source.getParentUuid()); json.setStackUuid(source.getStackUuid()); json.setRegion(source.getRegion()); json.setInstanceNum(source.getInstanceNum()); json.setPeak(source.getPeak()); json.setFlexId(source.getFlexId()); json.setSmartSenseId(source.getSmartSenseId()); json.setDay(getDayAsString(source.getDay())); json.setUsername(getUserEmail(source)); return json; } private String getUserEmail(CloudbreakUsage source) { String cbUser; try { cbUser = userDetailsService.getDetails(source.getOwner(), UserFilterField.USERID).getUsername(); } catch (Exception ex) { LOGGER.warn(String.format("Expected user was not found with '%s' id. Maybe it was deleted by the admin user.", source.getOwner())); cbUser = source.getOwner(); } return cbUser; } private String getDayAsString(Date day) { SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_PATTERN); return sdf.format(day); } }