package org.ovirt.engine.core.builder; import javax.inject.Inject; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.businessentities.Cluster; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.VdsDao; import org.ovirt.engine.core.dao.VdsDynamicDao; import org.ovirt.engine.core.dao.VdsStaticDao; import org.ovirt.engine.core.dao.VdsStatisticsDao; import org.ovirt.engine.core.utils.RandomUtils; import org.springframework.stereotype.Repository; @Repository public class VdsBuilder extends AbstractBuilder<VDS, VdsBuilder> { @Inject private VdsStaticDao vdsStaticDao; @Inject private VdsDynamicDao vdsDynamicDao; @Inject private VdsStatisticsDao vdsStatisticsDao; @Inject private VdsDao vdsDao; public VdsBuilder id(final Guid hostId) { object.setId(hostId); return this; } public VdsBuilder cluster(final Cluster cluster) { object.setClusterId(cluster.getId()); return this; } public VdsBuilder status(final VDSStatus status) { object.setStatus(status); return this; } public VdsBuilder name(final String name) { object.setVdsName(name); return this; } public VdsBuilder hostName(final String hostName) { object.setHostName(hostName); return this; } public VdsBuilder physicalMemory(final int memoryInMb) { object.setPhysicalMemMb(memoryInMb); object.setMemAvailable((long)memoryInMb); object.setMemFree((long)memoryInMb); object.setMemCommited(0); return this; } @Override protected void prePersist() { if (Guid.isNullOrEmpty(object.getId())) { object.setId(Guid.newGuid()); } if (StringUtils.isEmpty(object.getHostName())) { object.setHostName(RandomUtils.instance().nextString(10)); } } @Override protected void preBuild() { if (Guid.isNullOrEmpty(object.getId())) { object.setId(Guid.newGuid()); } } @Override public VdsBuilder reset() { object = new VDS(); return this; } @Override public VdsBuilder reset(VDS object) { this.object = object; return this; } @Override protected VDS doPersist() { vdsStaticDao.save(object.getStaticData()); vdsDynamicDao.save(object.getDynamicData()); vdsStatisticsDao.save(object.getStatisticsData()); return vdsDao.get(object.getId()); } }