예제 #1
0
        protected override ImportedQuantityDTO MapQuantityFromRow(DataTable table, DataRow row, int rowIndex)
        {
            if (row.ItemArray.Count() < DataTableRowIndexes.COLUMNS)
            {
                throw new ImportQuantityDTOsFromDataTablesMapperException(row, rowIndex, AppConstants.Exceptions.TableShouldBeNColumns(DataTableRowIndexes.COLUMNS));
            }

            var dimension     = GetDimension(table, rowIndex, DataTableRowIndexes.UNIT, DataTableRowIndexes.DIMENSION);
            var containerPath = GetPath(row, DataTableRowIndexes.CONTAINER_PATH);
            var quantity      = GetQuantity(table, rowIndex, DataTableRowIndexes.VALUE);
            var parameterName = GetQuantityName(row, DataTableRowIndexes.NAME);

            var dto = new ImportedQuantityDTO
            {
                Dimension               = dimension,
                ContainerPath           = new ObjectPath(containerPath),
                Name                    = parameterName,
                DisplayUnit             = dimension.Unit(row[DataTableRowIndexes.UNIT].ToString()),
                IsQuantitySpecified     = true,
                IsScaleDivisorSpecified = false
            };

            dto.QuantityInBaseUnit = dto.ConvertToBaseUnit(quantity);

            return(dto);
        }
예제 #2
0
        private static void updateImportedQuantityWithQuantityDimension(IWithDimension originalWithDimension, ImportedQuantityDTO dto)
        {
            var valueInDisplayUnit = dto.ConvertToDisplayUnit(dto.QuantityInBaseUnit);

            dto.Dimension          = originalWithDimension.Dimension;
            dto.DisplayUnit        = originalWithDimension.Dimension.Unit(dto.DisplayUnit.Name);
            dto.QuantityInBaseUnit = dto.ConvertToBaseUnit(valueInDisplayUnit);
        }
        protected override ImportedQuantityDTO MapQuantityFromRow(DataTable table, DataRow row, int rowIndex)
        {
            if (row.ItemArray.Count() < DataTableRowIndexes.COLUMNS)
            {
                throw new ImportQuantityDTOsFromDataTablesMapperException(row, rowIndex, AppConstants.Exceptions.TableShouldBeNColumns(DataTableRowIndexes.COLUMNS));
            }

            var path = GetPath(row, DataTableRowIndexes.PATH);

            var moleculeName = GetQuantityName(row, DataTableRowIndexes.MOLECULE);

            var msv = new ImportedQuantityDTO
            {
                ContainerPath           = new ObjectPath(path),
                Name                    = moleculeName,
                IsPresent               = getIsPresent(row),
                IsScaleDivisorSpecified = getIsValueSpecified(row, DataTableRowIndexes.SCALE_DIVISOR),
                IsQuantitySpecified     = getIsValueSpecified(row, DataTableRowIndexes.VALUE),
                NegativeValuesAllowed   = getNegativeValuesAllowed(row)
            };

            msv.ScaleDivisor = msv.IsScaleDivisorSpecified ? getScaleFactor(table, rowIndex) : double.NaN;

            if (!msv.IsQuantitySpecified)
            {
                return(msv);
            }

            var dimension = GetDimension(table, rowIndex, DataTableRowIndexes.UNIT);

            msv.Dimension   = dimension;
            msv.DisplayUnit = dimension.Unit(row[DataTableRowIndexes.UNIT].ToString());

            msv.QuantityInBaseUnit = msv.IsQuantitySpecified ? msv.ConvertToBaseUnit(GetQuantity(table, rowIndex, DataTableRowIndexes.VALUE)) : double.NaN;

            return(msv);
        }