package org.ovirt.engine.core.bll;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.core.common.businessentities.*;
/**
* Base class for comparing between vdss
*/
public abstract class VdsComparer {
/**
* Factory method, creates necessary comparer
*
* @return
*/
public static VdsComparer CreateComparer(VdsSelectionAlgorithm selectionAlgorithm) {
switch (selectionAlgorithm) {
case EvenlyDistribute:
return new EvenlyDistributeComparer();
case PowerSave:
return new PowerSaveComparer();
case None:
return new NoneComparer();
default:
throw new NotImplementedException("Uknown type of selection algorithm: " + selectionAlgorithm);
}
// try
// {
// //return AppDomain.CurrentDomain.CreateInstanceAndUnwrap("VdcBLL",
// GetComparerTypeName(selectionAlgorithm)) as VdsComparer;
// java.lang.Class type =
// java.lang.Class.forName(GetComparerTypeName(selectionAlgorithm));
// //type.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic,
// null,
// // CallingConventions.HasThis, null, null);
// java.lang.reflect.Constructor info = type.getConstructors()[0];
// Object TempAsCast = info.newInstance(null);
// return (VdsComparer)((TempAsCast instanceof VdsComparer) ? TempAsCast
// : null);
// //return new BestDistributionComparer();
// }
// catch (Exception ex)
// {
// throw new ApplicationException("JTODO unhandled exception", ex);
// }
}
// private static String GetComparerTypeName(VdsSelectionAlgorithm
// selectionAlgorithm)
// {
// return String.format("%1$s.%2$s%3$s",
// "VdcBLL",selectionAlgorithm.toString(), "Comparer");
// }
/**
* Base abstract function for finish best Vds treatment
*
* @param x
*/
public abstract void BestVdsProcedure(VDS x);
/**
* Base abstract function to compare between two VDSs
*
* @param x
* @param y
* @param vm
* @return
*/
public abstract boolean IsBetter(VDS x, VDS y, VM vm);
}