private void PlaceToGroup(ChronologicalData data,
                                  IChronologicalParameter parameter)
        {
            ChronologicalParameterGroupType groupType =
                parameterToGroupMapping[parameter.Type];

            if (!data.Groups.Any(g => g.Type == groupType))
            {
                ChronoParamGroupFactory groupFactory =
                    new ChronoParamGroupFactory();
                IChronologicalParametersGroup group =
                    groupFactory.Create(groupType);
                data.Groups.Add(group);
            }
            data.Groups.FirstOrDefault(g =>
                                       g.Type == groupType).Parameters.Add(parameter);
        }
        public ChronologicalData Create()
        {
            ChronologicalData result = new PsaChronologicalData();

            foreach (IChronologicalParameterFactory factory in factories)
            {
                foreach (PsaDataset dataset in datasets)
                {
                    if (factory.CanGenerateFrom(dataset))
                    {
                        factory.PickUpFrom(dataset);
                    }
                }
                IChronologicalParameter resultParameter = factory.GetResult();
                if (resultParameter != null)
                {
                    PlaceToGroup(result, resultParameter);
                }
            }
            return(result);
        }