using
System.Collections.Generic;
namespace
Builders
{
internal
abstract
class
ProcessBuilder
protected
List<ManageProcess> Data {
get
;
private
set
; }
List<ManageProcess> Construct(List<
string
> selectedItems)
Data = InitProcessCollection(selectedItems);
var service =
new
ListDataService();
var docs = service.GetAllManageProcessDocs();
var iterations = service.GetAllIterations();
ApplyVisitors(docs, iterations);
return
Data;
}
List<ManageProcess> InitProcessCollection(List<
> selectedItems);
void
ApplyVisitors(IList<ManageProcessDoc> documents, IList<Iteration> iterations);
System.Linq;
ManageProcessReleaseBuilder : ProcessBuilder
static
ProcessBuilder Instance
ManageProcessReleaseBuilder();
override
> items)
var manageProcessList =
List<ManageProcess>();
ProductService.Instance.GetProductsByReleasesList(items).ToList()
.ForEach(p =>
manageProcessList.AddRange(CollectionMapper<ManageProcess, Product, ManageProcessMapper>
.From(
List<Product>() { p })
.ToList());
});
manageProcessList;
ApplyVisitors(IList<ManageProcessDoc> docs,IList<Iteration> iterations )
VisitorFactory<ManageProcess, ManageProcessDocumentVisitorAttribute>.Current.All(docs)
.ToList()
.ForEach(Visit);
public
Visit(IVisitor<ManageProcess> visitor)
Data.ForEach(p => p.Accept(visitor));
ManageProcessBuilder : ProcessBuilder
ManageProcessBuilder();
foreach
(var selectedProduct
in
ProductService.Instance.GetProducts(selectedItems)
.Where(p => p.Releases.Any()))
List<Product>() { selectedProduct })
Builder call
ManageProcessBuilder.Instance.Construct(selectedItems);
ManageProcessReleaseBuilder.Instance.Construct(selectedItems);