package io.fathom.cloud.lbaas.services;
import io.fathom.cloud.openstack.client.loadbalance.model.LbaasMapping;
import io.fathom.cloud.protobuf.LbaasModel.LbaasMappingData;
import io.fathom.cloud.server.model.Project;
public class LbaasMappingMapper extends Mapper<LbaasMappingData, LbaasMapping> {
public static final LbaasMappingMapper INSTANCE = new LbaasMappingMapper();
@Override
public LbaasMappingData toComparable(LbaasMappingData d) {
LbaasMappingData.Builder b = LbaasMappingData.newBuilder(d);
b.clearId();
b.clearState();
return b.build();
}
@Override
public LbaasMapping toModel(LbaasMappingData data) {
LbaasMapping model = new LbaasMapping();
if (data.hasForwardUrl()) {
model.forwardUrl = data.getForwardUrl();
}
if (data.hasIp()) {
model.ip = data.getIp();
}
if (data.hasHost()) {
model.host = data.getHost();
}
if (data.hasPort()) {
model.port = data.getPort();
}
model.key = "id_" + data.getId();
// model.systemKey = data.getSystemKey();
return model;
}
@Override
public LbaasMappingData toData(Project project, String systemKey, LbaasMapping mapping) {
LbaasMappingData.Builder b = LbaasMappingData.newBuilder();
if (mapping.forwardUrl != null) {
b.setForwardUrl(mapping.forwardUrl);
}
if (mapping.host != null) {
b.setHost(mapping.host);
}
if (mapping.ip != null) {
b.setIp(mapping.ip);
}
if (mapping.key != null) {
throw new UnsupportedOperationException();
}
if (mapping.port != null) {
b.setPort(mapping.port);
}
b.setSystemKey(systemKey);
b.setProjectId(project.getId());
LbaasMappingData record = b.build();
return record;
}
}