Я, глядя на лучший способ организовать это ниже кодДля понимания вызова метода будущего и возвращения типа Future
это версия 1.0, и что это лучший способ, чтобы вернуть будущее
class ComparePrepMgr(factory:IFactoryBuilder) {
val daoact = factory.actorFactory.getActor[DAOSupervisor] //Returns Option[IActorURI]
def prepare(testplan:TestPlan) : Future[UnitofWorkRequest] =
{
for ( dao <- daoact;
testcase <- testplan.testcases; //Returns testcase instance from list type
sourceenvfut = getFuture[Vector[EnvironmentInfo]](dao, queryDAO[EnvironmentInfo](new DataQueryExp(ObjectIdEqOp("_id",testcase.sourceenv,false),None))) ;
destenvfut = getFuture[Vector[EnvironmentInfo]](dao, queryDAO[EnvironmentInfo](new DataQueryExp(ObjectIdEqOp("_id",testcase.destenv ,false),None))) ;
sourceobjfut = getFuture[Vector[ObjectInfo]](dao, queryDAO[ObjectInfo](new DataQueryExp(ObjectIdEqOp("_id",testcase.source,false),None))) ;
destobjfut = getFuture[Vector[ObjectInfo]](dao, queryDAO[ObjectInfo](new DataQueryExp(ObjectIdEqOp("_id",testcase.destination ,false),None)));
sourceenv <- sourceenvfut;destenv <- destenvfut; sourceobj <- sourceobjfut; destobj <- destobjfut
)
{
UnitofWorkRequest(testplan.copy(testcases = List()) , testcase, sourceenv.last, destenv.last, sourceobj.last,destobj.last)
}
это другой вариант кода, который работает, но заставляет меня разбить мою функцию b/c. Я организую для понимания на основе подобного типа возврата и, следовательно, я заинтересован в коде выше
class ComparePrepMgr(factory:IFactoryBuilder) {
val daoact = factory.actorFactory.getActor[DAOSupervisor]
def prepare(testplan:TestPlan) =
{
for ( testcase <- testplan.testcases;
dao <- daoact
) yield prepareFuture(testplan,dao,testcase)
}
def prepareFuture(testplan:TestPlan,dao:IActorURI,testcase:TestCaseInfo) =
{
for ( sourceenv<- getFuture[Vector[EnvironmentInfo]](dao, queryDAO[EnvironmentInfo](new DataQueryExp(ObjectIdEqOp("_id",testcase.sourceenv,false),None)));
destenv <- getFuture[Vector[EnvironmentInfo]](dao, queryDAO[EnvironmentInfo](new DataQueryExp(ObjectIdEqOp("_id",testcase.destenv ,false),None)));
sourceobj <- getFuture[Vector[ObjectInfo]](dao, queryDAO[ObjectInfo](new DataQueryExp(ObjectIdEqOp("_id",testcase.source,false),None))) ;
destobj <- getFuture[Vector[ObjectInfo]](dao, queryDAO[ObjectInfo](new DataQueryExp(ObjectIdEqOp("_id",testcase.destination ,false),None)))
) yield UnitofWorkRequest(testplan.copy(testcases = List()) , testcase, sourceenv.last, destenv.last, sourceobj.last,destobj.last)
}
}
Любой помощь в создании версии 1.0 работы ценятся.
oh my gosh ..... – dk14