using NLog; using OCPPPacket.Packet.Feature; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OCPPServer.Handler { public class FeatureHandler { private ILogger logger = NLog.LogManager.GetCurrentClassLogger(); List featureList; public FeatureHandler() { this.featureList = new List(); } public void AddFeatureProfile(Feature feature) { featureList.Add(feature); } public Feature FindFeatureByConfirm(Type confirm) { return FindFeature(confirm, featureList); } public Feature FindFeatureByRequest(Type request) { return FindFeature(request, featureList); } public bool FeatureContains(Feature feature, Type seektype) { bool contains = false; if(feature.GetRequestType() == seektype) { contains |= true; } if(feature.GetConfirmationType() == seektype) { contains |= true; } //old coding type ////contains |= feature.getAction().Equals(object1); //contains |= feature.GetRequestType() == object1; //contains |= feature.GetConfirmationType() == object1; return contains; } public Feature FindFeature(Type needle, List featureList) { Feature output = null; foreach (Feature feature in featureList) { if (FeatureContains(feature, needle)) { output = feature; break; } } return output; } public Feature FindFeatureByAction(string v) { try { Feature output = null; foreach (Feature feature in featureList) { if (TestfeatureContains(feature, v)) { output = feature; break; } } return output; } catch (Exception ex) { logger.Error(ex); throw new ApplicationException(ex.ToString()); } } public bool TestfeatureContains(Feature feature, string v) { try { bool contains = false; contains |= feature.GetAction().Equals(v); return contains; } catch (Exception ex) { logger.Error(ex); throw new ApplicationException(ex.ToString()); } } } }