示例#1
0
        public string GetVersion2Display(int?InputVersion, string BuildNumber)
        {
            if (InputVersion == null)
            {
                return("");
            }

            MinorVersionAssociation l_MinoVersionAssociation = null;
            var major  = ComparableFields.GetMajorFromNumericVersion((int)InputVersion);
            int?middle = 0;
            int?least  = 0;

            if (!string.IsNullOrEmpty(BuildNumber))
            {
                l_MinoVersionAssociation = DBRegister.MinorVersionAssociations.SingleOrDefault(m => m.Major == major && m.BuildVersion == BuildNumber);
            }

            if (l_MinoVersionAssociation == null)
            {
                l_MinoVersionAssociation = DBRegister.MinorVersionAssociations.SingleOrDefault(m => m.Major == major);
            }

            if (l_MinoVersionAssociation != null)
            {
                middle = l_MinoVersionAssociation.Minor;
                least  = l_MinoVersionAssociation.Patch;                    // Gibiino [RTC 10963] patch should be inserted with an input file
            }

            return(ComparableFields.BuildStringVersion(major, middle, least));
        }
示例#2
0
        public static Boolean isContainedSlim(ComparableFields contained, ComparableFields container, Func <int?, int?, bool> IsValueContainedFunc)
        {
            if (!IsValueContainedFunc(contained.OptionId, container.OptionId))
            {
                return(false);
            }
            if (!IsValueContainedFunc(contained.ApplicationId, container.ApplicationId))
            {
                return(false);
            }
            if (!IsValueContainedFunc(contained.ProbeId, container.ProbeId))
            {
                return(false);
            }
            if (!IsValueContainedFunc((Int32?)contained.TransducerType, (Int32?)container.TransducerType))
            {
                return(false);
            }
            if (!IsValueContainedFunc(contained.KitId, container.KitId))
            {
                return(false);
            }

            return(true);
        }
示例#3
0
        internal static List <NormalRule> SqueezeModel(LogicalModel Model, List <NormalRule> nrules)
        {
            var result = new List <NormalRule>();
            var input  = new InputParams
            {
                LogicalModelId = Model.Id
            };

            result.AddRange(nrules.Where(nr => ComparableFields.isModelContained(input, nr)).ToList());
            return(result);
        }
示例#4
0
 /// <summary>
 /// checks if two rules have a generic override: if all parameters specified for both inputs are equal the rules override.
 ///
 /// *THIS CODE SHOULD BE AUTOMATICALLY GENERATED BY THE TEXT TEMPLATE*
 ///
 /// </summary>
 public Boolean genericOverride(ComparableFields r2)
 {
     return(
         (((this.LogicalModelId == r2.LogicalModelId) && (r2.LogicalModelId != null)) || (this.LogicalModelId == null) || (r2.LogicalModelId == null)) &&
         (((this.ProbeId == r2.ProbeId) && (r2.ProbeId != null)) || (this.ProbeId == null) || (r2.ProbeId == null)) &&
         (((this.TransducerType == r2.TransducerType) && (r2.TransducerType != null)) || (this.TransducerType == null) || (r2.TransducerType == null)) &&
         (((this.ApplicationId == r2.ApplicationId) && (r2.ApplicationId != null)) || (this.ApplicationId == null) || (r2.ApplicationId == null)) &&
         (((this.OptionId == r2.OptionId) && (r2.OptionId != null)) || (this.OptionId == null) || (r2.OptionId == null)) &&
         (((this.UserLevel == r2.UserLevel) && (r2.UserLevel != null)) || (this.UserLevel == null) || (r2.UserLevel == null)) &&
         (((this.KitId == r2.KitId) && (r2.KitId != null)) || (this.KitId == null) || (r2.KitId == null)) &&
         (((this.CountryId == r2.CountryId) && (r2.CountryId != null)) || (this.CountryId == null) || (r2.CountryId == null)) &&
         (((this.DistributorId == r2.DistributorId) && (r2.DistributorId != null)) || (this.DistributorId == null) || (r2.DistributorId == null)) &&
         (((this.Version == r2.Version) && (r2.Version != null)) || (this.Version == null) || (r2.Version == null)));
 }
示例#5
0
        // fore each input checks if there is any specific forbidding rule
        //public bool IsAlwaysTrue(InputParams input)
        //{
        //  var interestedRules = this.NormalRules.Where(nr => ComparableFields.isAlwaysContained(input, nr)).ToList();
        //  return !interestedRules.Any(r => r.Allow == Allower.AllowModes.No);
        //}

        public List <NormalRule> getInterestedRulesFast(InputParams input, List <NormalRule> NRlist)
        {
            var overallFilter = RuleIndexes;

            if (input.LogicalModelId != null)
            {
                var ModelFilter = GetRuleIndexList(RuleIndexes, input.LogicalModelId, LogicalModelIndexes);
                overallFilter = overallFilter.IntersectSorted(ModelFilter);
            }
            if (input.ApplicationId != null)
            {
                var ApplicationFilter = GetRuleIndexList(RuleIndexes, input.ApplicationId, ApplicationIndexes);
                overallFilter = overallFilter.IntersectSorted(ApplicationFilter);
            }
            if (input.OptionId != null)
            {
                var OptionFilter = GetRuleIndexList(RuleIndexes, input.OptionId, OptionIndexes);
                overallFilter = overallFilter.IntersectSorted(OptionFilter);
            }
            if (input.ProbeId != null)
            {
                var ProbeFilter = GetRuleIndexList(RuleIndexes, input.ProbeId, ProbeIndexes);
                overallFilter = overallFilter.IntersectSorted(ProbeFilter);
            }
            if (input.KitId != null)
            {
                var KitFilter = GetRuleIndexList(RuleIndexes, input.KitId, KitIndexes);
                overallFilter = overallFilter.IntersectSorted(KitFilter);
            }
            if (input.TransducerType != null)
            {
                var TransducerFilter = GetRuleIndexList(RuleIndexes, (int)input.TransducerType, TransducerIndexes);
                overallFilter = overallFilter.IntersectSorted(TransducerFilter);
            }

            var InterestedRules = new List <NormalRule>();

            for (int i = 0; i < overallFilter.Count; i++)
            {
                if (ComparableFields.isContainedFull(input, NRlist[overallFilter[i]]))
                {
                    InterestedRules.Add(NRlist[overallFilter[i]]);
                }
            }
            return(InterestedRules);
        }
示例#6
0
        //      // base conteined with inverted inputs
        //public static Boolean isAlwaysContained(ComparableFields contained, ComparableFields container)
        //{
        //  var c1 = contained;
        //  var c2 = container;
        //  return isContainedSlim(contained, container, isValueAlwaysContained) && isModelContained(contained, container, isValueAlwaysContained)
        //         && isBaseContained(c2, c1, isValueAlwaysContained, isRangeAlwaysContained);
        //}

        // compares only Model, option, probe and application
        public static Boolean IsContainedReduced(ComparableFields contained, ComparableFields container)
        {
            if (!isValueContained(contained.LogicalModelId, container.LogicalModelId))
            {
                return(false);
            }
            if (!isValueContained(contained.OptionId, container.OptionId))
            {
                return(false);
            }
            if (!isValueContained(contained.ApplicationId, container.ApplicationId))
            {
                return(false);
            }
            if (!isValueContained(contained.ProbeId, container.ProbeId))
            {
                return(false);
            }
            if (!isValueContained((Int32?)contained.UserLevel, (Int32?)container.UserLevel))
            {
                return(false);
            }
            if (container.KitId != null)
            {
                return(false);
            }
            if (container.TransducerType != null)
            {
                return(false);
            }
            if (container.CountryId != null)
            {
                return(false);
            }
            if (container.DistributorId != null)
            {
                return(false);
            }
            if (container.Version != null)
            {
                return(false);
            }
            return(true);
        }
示例#7
0
        public static int?GetVersion(IVersionAssociationInput VersionAssociation, FeatureRegister DBRegister)
        {
            bool isnull;
            // filter country/certifier
            var ValidCountryVersions = VersionAssociation.GetVersionList(DBRegister).Where(x => x.GeographyId == VersionAssociation.GeographyId).ToList();

            // filter logical model
            var CountryModelVersionList = MatchValuesOrNull(ValidCountryVersions, VersionAssociation, (y) => y.LogicalModelId, out isnull);

            // filter distributor
            var CountryDistrModelVersionList = MatchValuesOrNull(CountryModelVersionList, VersionAssociation, (y) => y.DistributorId, out isnull);

            var ValidCV = CountryDistrModelVersionList.FirstOrDefault();

            if (ValidCV != null)
            {
                return(ComparableFields.GetNumericVersionFromMajor(ValidCV.MajorVersion));
            }
            return(null);
        }
示例#8
0
 public static Boolean isBaseContained(ComparableFields contained, ComparableFields container, Func <int?, int?, bool> IsValueContainedFunc, Func <int?, int?,
                                                                                                                                                   bool> IsRangeContainedFunc)
 {
     if (!IsValueContainedFunc(contained.CountryId, container.CountryId))
     {
         return(false);
     }
     if (!IsValueContainedFunc(contained.DistributorId, container.DistributorId))
     {
         return(false);
     }
     if (!IsValueContainedFunc((Int32?)contained.UserLevel, (Int32?)container.UserLevel))
     {
         return(false);
     }
     if (!IsRangeContainedFunc(contained.Version, container.Version))
     {
         return(false);
     }
     return(true);
 }
示例#9
0
 // filter rules for model
 private void PreFilterModel(InputParams input)
 {
     this.NormalRules = this.NormalRules.Where(nr => ComparableFields.isModelContained(input, nr)).ToList();
 }
示例#10
0
 static List <NormalRule> getInterestedRulesSlim(InputParams input, List <NormalRule> NRlist)
 => NRlist.Where(nr => ComparableFields.isContainedSlim(input, nr)).ToList();
示例#11
0
 internal Boolean IsAllowedSlim(InputParams input, IAllower Allower)
 {
     return(!NormalRules.Where(nr => ComparableFields.isContainedSlim(input, nr)).Any(ir => Allower.getAllowance(ir.Allow) == false));
 }
示例#12
0
        public void FillIndexes()
        {
            LogicalModelIndexes = new Dictionary <int, List <Int32> >();
            ApplicationIndexes  = new Dictionary <int, List <Int32> >();
            OptionIndexes       = new Dictionary <int, List <Int32> >();
            ProbeIndexes        = new Dictionary <int, List <Int32> >();
            KitIndexes          = new Dictionary <int, List <Int32> >();
            TransducerIndexes   = new Dictionary <int, List <Int32> >();

            foreach (var modelLic in DBRegister.ModelLicenses)
            {
                var rulesIndexes = new List <int>();
                for (int i = 0; i < NormalRules.Count; i++)
                {
                    if (ComparableFields.isValueContained(modelLic.Model.Id, NormalRules[i].LogicalModelId))
                    {
                        rulesIndexes.Add(i);
                    }
                }
                LogicalModelIndexes.Add(modelLic.Model.Id, rulesIndexes);
            }

            foreach (var app in DBRegister.Applications)
            {
                var rulesIndexes = new List <int>();
                for (int i = 0; i < NormalRules.Count; i++)
                {
                    if (ComparableFields.isValueContained(app.Id, NormalRules[i].ApplicationId))
                    {
                        rulesIndexes.Add(i);
                    }
                }
                ApplicationIndexes.Add(app.Id, rulesIndexes);
            }

            foreach (var opt in DBRegister.Options)
            {
                var rulesIndexes = new List <int>();
                for (int i = 0; i < NormalRules.Count; i++)
                {
                    if (ComparableFields.isValueContained(opt.Id, NormalRules[i].OptionId))
                    {
                        rulesIndexes.Add(i);
                    }
                }
                OptionIndexes.Add(opt.Id, rulesIndexes);
            }

            foreach (var probe in DBRegister.Probes)
            {
                var rulesIndexes = new List <int>();
                for (int i = 0; i < NormalRules.Count; i++)
                {
                    if (ComparableFields.isValueContained(probe.Id, NormalRules[i].ProbeId))
                    {
                        rulesIndexes.Add(i);
                    }
                }
                ProbeIndexes.Add(probe.Id, rulesIndexes);
            }

            foreach (var kit in DBRegister.Kits)
            {
                var rulesIndexes = new List <int>();
                for (int i = 0; i < NormalRules.Count; i++)
                {
                    if (ComparableFields.isValueContained(kit.Id, NormalRules[i].KitId))
                    {
                        rulesIndexes.Add(i);
                    }
                }
                KitIndexes.Add(kit.Id, rulesIndexes);
            }


            foreach (int transd in Enum.GetValues(typeof(ProbeType)))
            {
                var rulesIndexes = new List <int>();
                for (int i = 0; i < NormalRules.Count; i++)
                {
                    if (ComparableFields.isValueContained(transd, (int? )NormalRules[i].TransducerType))
                    {
                        rulesIndexes.Add(i);
                    }
                }
                TransducerIndexes.Add(transd, rulesIndexes);
            }

            RuleIndexes = Enumerable.Range(0, NormalRules.Count).ToList();
        }
示例#13
0
 public static bool isModelContained(ComparableFields contained, ComparableFields container, Func <int?, int?, bool> IsValueContainedFunc)
 {
     return(IsValueContainedFunc(contained.LogicalModelId, container.LogicalModelId));
 }
示例#14
0
 // checks the Model only in order to filter the rules and group them by model in different files
 public static bool isModelContained(ComparableFields contained, ComparableFields container)
 {
     return(isModelContained(contained, container, isValueContained));
 }
示例#15
0
 // checks only the fields automatically filled by the License Manager (The model is filtered by file loading)
 public static Boolean isBaseContained(ComparableFields contained, ComparableFields container)
 {
     return(isBaseContained(contained, container, isValueContained, isRangeContained));
 }
示例#16
0
 // Checks all the interesting fields alfter being filtered with the base Containance (isBaseContained)
 public static Boolean isContainedSlim(ComparableFields contained, ComparableFields container)
 {
     return(isContainedSlim(contained, container, isValueContained));
 }
示例#17
0
 /// For override checks
 public static Boolean isContainedFull(ComparableFields contained, ComparableFields container)
 {
     return(isContained(contained, container) && isModelContained(contained, container));
 }
示例#18
0
 public static Boolean isContained(ComparableFields contained, ComparableFields container)
 {
     return(isContainedSlim(contained, container) && isBaseContained(contained, container));
 }