package org.ovirt.engine.api.restapi.types.externalhostproviders;
import static org.ovirt.engine.api.restapi.utils.HexUtils.hex2string;
import static org.ovirt.engine.api.restapi.utils.HexUtils.string2hex;
import java.util.ArrayList;
import org.ovirt.engine.api.model.KatelloErratum;
import org.ovirt.engine.api.model.Package;
import org.ovirt.engine.api.model.Packages;
import org.ovirt.engine.api.restapi.types.DateMapper;
import org.ovirt.engine.api.restapi.types.Mapping;
import org.ovirt.engine.core.common.businessentities.Erratum;
import org.ovirt.engine.core.common.businessentities.Erratum.ErrataSeverity;
import org.ovirt.engine.core.common.businessentities.Erratum.ErrataType;
public class ErratumMapper {
@Mapping(from = Erratum.class, to = KatelloErratum.class)
public static KatelloErratum map(Erratum entity, KatelloErratum model) {
model = model == null ? new KatelloErratum() : model;
model.setId(string2hex(entity.getId()));
model.setName(entity.getId());
model.setTitle(entity.getTitle());
model.setSummary(entity.getSummary());
model.setSolution(entity.getSolution());
model.setDescription(entity.getDescription());
if (entity.getIssued() != null) {
model.setIssued(DateMapper.map(entity.getIssued(), null));
}
model.setSeverity(entity.getSeverity() == null ? null : entity.getSeverity().getDescription());
model.setType(entity.getType() == null ? null : entity.getType().getDescription());
if (entity.getPackages() != null && !entity.getPackages().isEmpty()) {
Packages packages = new Packages();
for (String packageName : entity.getPackages()) {
Package p = new Package();
p.setName(packageName);
packages.getPackages().add(p);
}
model.setPackages(packages);
}
return model;
}
@Mapping(from = KatelloErratum.class, to = Erratum.class)
public static Erratum map(KatelloErratum model, Erratum template) {
Erratum entity = template != null ? template : new Erratum();
if (model.isSetId()) {
entity.setId(hex2string(model.getId()));
}
if (model.isSetTitle()) {
entity.setTitle(model.getTitle());
}
if (model.isSetSummary()) {
entity.setSummary(model.getSummary());
}
if (model.isSetSolution()) {
entity.setSolution(model.getSolution());
}
if (model.isSetDescription()) {
entity.setDescription(model.getDescription());
}
if (model.isSetIssued()) {
entity.setIssued(model.getIssued().toGregorianCalendar().getTime());
}
if (model.isSetSeverity()) {
entity.setSeverity(ErrataSeverity.byDescription(model.getSeverity()));
}
if (model.isSetType()) {
entity.setType(ErrataType.byDescription(model.getType()));
}
if (model.isSetPackages() && !model.getPackages().getPackages().isEmpty()) {
entity.setPackages(new ArrayList<>(model.getPackages().getPackages().size()));
for (Package p : model.getPackages().getPackages()) {
entity.getPackages().add(p.getName());
}
}
return entity;
}
}