package org.ovirt.engine.ui.uicommonweb.validation;
import org.ovirt.engine.ui.uicompat.ConstantsManager;
/**
* It validates pair of existing pool name (org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel#getName()) and
* number of VMs added to the pool (org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel#getNumOfDesktop())
*/
public class ExistingPoolNameLengthValidation extends PoolNameLengthValidation {
public ExistingPoolNameLengthValidation(String poolName, int numOfVmsInPool, int osType) {
super(poolName, numOfVmsInPool, osType);
}
@Override
protected String getReason() {
return getQuestionMarksCount() == 0
? ConstantsManager.getInstance()
.getMessages()
.numOfVmsInPoolInvalid(generateMaxNumOfVms(), getPoolName().length())
: ConstantsManager.getInstance()
.getMessages()
.numOfVmsInPoolInvalidWithQuestionMarks(generateMaxNumOfVmsWithQuestionMark(),
getPoolName().length(), getQuestionMarksCount());
}
private int generateMaxNumOfVmsWithQuestionMark() {
return doGenerateMaxNumOfVmsWithQuestionMark(
getMaxNameLength(), getPoolName().length(), getQuestionMarksCount());
}
int doGenerateMaxNumOfVmsWithQuestionMark(int maxNameLength, int poolNameLength, int questionMarkCount) {
final int numberOfDigits = maxNameLength - (poolNameLength - questionMarkCount);
return getMaxNumberInNDigits(numberOfDigits);
}
private int generateMaxNumOfVms() {
return doGenerateMaxNumOfVms(getMaxNameLength(), getPoolName().length());
}
int doGenerateMaxNumOfVms(int maxNameLength, int poolNameLength) {
int numberOfDigits = maxNameLength - poolNameLength - 1;
if (numberOfDigits == 0) {
return 0;
}
return getMaxNumberInNDigits(numberOfDigits);
}
private int getMaxNumberInNDigits(int numberOfDigits) {
return (int) (Math.pow(10, numberOfDigits) - 1);
}
}