Пример #1
0
        // MODIFY RETRACTSTART XXXX BY [PERCENTAGE [+|-]YYYY|ADD [+|-]YYYY|REPLACE YYYY]
        private static bool DoModifyRetractStart(string[] lineArray, int lineNumber)
        {
            bool valid           = true;
            int  oldRetractIndex = 2;
            int  byIndex         = 3;
            int  modTypeIndex    = 4;
            int  modValueIndex   = 5;

            // check parameter count and validate line
            if (lineArray.Length != 6 || lineArray.Length != 8)
            {
                System.Console.WriteLine("Invalid MODIFY RETRACTSTART at line " + lineNumber);
                valid = false;
            }

            if (!lineArray[byIndex].ToUpper().Equals("REPLACE") && ValidRetractLine(lineArray, oldRetractIndex, byIndex, modTypeIndex, modValueIndex))
            {
                System.Console.WriteLine("Invalid MODIFY RETRACTSTART at line " + lineNumber);
                valid = false;
            }
            else
            {
                return(DoModifyRetractStartReplace(lineArray, lineNumber));
            }

            if (valid)
            {
                RetractModifier retractMod = new RetractModifier();

                // process OldTemperature
                int.TryParse(lineArray[oldRetractIndex], out retractMod.oldRetractValue);
                int.TryParse(lineArray[modValueIndex], out int modValue);

                string modType = lineArray[modTypeIndex].ToUpper();
                if (modType.Equals("PERCENTAGE"))
                {
                    double percentage = modValue;
                    retractMod.newPValue = Convert.ToInt32(retractMod.oldRetractValue + (percentage / 100) * retractMod.oldRetractValue);
                }
                else if (modType.Equals("ADD"))
                {
                    retractMod.newPValue = retractMod.oldRetractValue + modValue;
                }
                else if (modType.Equals("REPLACE"))
                {
                    retractMod.newPValue = modValue;
                }
                retractMod.newSValue = retractMod.newPValue;
                retractMod.newGValue = -1;
                retractMod.newFValue = -1;

                retractMod.retractCmd = BFBConstants.RETRACT_START;

                retractStartModifers.Add(retractMod);
            }

            return(valid);
        }
Пример #2
0
        private static bool DoModifyRetractStartReplace(string[] lineArray, int lineNumber)
        {
            bool valid = true;

            int oldRetractIndex = 2;
            int replaceIndex    = 3;
            int pIndex          = 4;
            int sIndex          = 5;
            int gIndex          = 6;
            int fIndex          = 7;

            String oldRetract = lineArray[oldRetractIndex].ToUpper();
            String replaceStr = lineArray[replaceIndex].ToUpper();
            String pValueStr  = lineArray[pIndex].ToUpper();
            String sValueStr  = lineArray[sIndex].ToUpper();
            String gValueStr  = lineArray[gIndex].ToUpper();
            String fValueStr  = lineArray[fIndex].ToUpper();

            int pValue = -1;
            int sValue = -1;
            int gValue = -1;
            int fValue = -1;

            // process OldTemperature
            if (!int.TryParse(oldRetract, out int oldValue))
            {
                System.Console.WriteLine($"Nonnumeric MODIFY RETRACT old value at line {lineNumber}");
                valid = false;
            }

            // process REPLACE string
            if (valid && !replaceStr.Equals("REPLACE"))
            {
                System.Console.WriteLine($"Invalid MODIFY RETRACT at line {lineNumber}");
                valid = false;
            }

            // P-Value
            if (valid &&
                (!int.TryParse(pValueStr, out pValue) ||
                 !int.TryParse(sValueStr, out sValue) ||
                 !int.TryParse(gValueStr, out gValue) ||
                 !int.TryParse(fValueStr, out fValue)))
            {
                System.Console.WriteLine($"Invalid MODIFY RETRACT modification value at line {lineNumber}");
                valid = false;
            }

            if (valid)
            {
                RetractModifier retractMod = new RetractModifier();

                // process OldTemperature
                retractMod.oldRetractValue = oldValue;

                retractMod.newPValue = pValue;
                retractMod.newSValue = sValue;
                retractMod.newGValue = gValue;
                retractMod.newFValue = fValue;

                retractMod.retractCmd = BFBConstants.RETRACT_START;

                retractStartModifers.Add(retractMod);
            }

            return(valid);
        }