/// <summary> /// It converts IService instance to database service request instance /// </summary> /// <param name="iService">IService instance</param> /// <returns>ServiceRequest Instance</returns> public Connect.Model.ServiceRequest Convert(IService iService) { Connect.Model.ServiceRequest serviceRequest = new Connect.Model.ServiceRequest(); serviceRequest.SetRequestId(iService.GetRequestId()); serviceRequest.SetService(iService.GetService()); serviceRequest.SetRequest(iService.GetRequest()); serviceRequest.SetInstanceOf(iService.GetType().Name); IEnumerator <String> resources = iService.GetResources(); while (resources.MoveNext()) { String resourceName = resources.Current; Object resourceValue = iService.GetResource(resourceName); if (!(resourceValue is String)) { continue; } ServiceRequestResource serviceRequestResource = new ServiceRequestResource(); serviceRequestResource.SetServiceRequest(serviceRequest); serviceRequestResource.SetName(resourceName); serviceRequestResource.SetValue((String)resourceValue); serviceRequest.AddServiceRequestResource(serviceRequestResource); } return(serviceRequest); }
/// <summary> /// Converts the service request database instance to IService instance /// </summary> /// <param name="service">ServiceRequest instance</param> /// <returns>IService instance</returns> /// <exception cref="Siminov.Connect.Exception.ServiceException">ServiceException If any exception occur while converting the instance</exception> public IService Convert(Connect.Model.ServiceRequest service) { IService iService = (IService)ClassUtils.CreateClassInstance(service.GetInstanceOf()); iService.SetRequestId(service.GetRequestId()); iService.SetService(service.GetService()); iService.SetRequest(service.GetRequest()); IEnumerator <ServiceRequestResource> serviceRequestResources = service.GetServiceRequestResources(); while (serviceRequestResources.MoveNext()) { ServiceRequestResource serviceResource = serviceRequestResources.Current; iService.AddResource(serviceResource.GetName(), serviceResource.GetValue()); } ServiceDescriptor serviceDescriptor = resourceManager.RequiredServiceDescriptorBasedOnName(service.GetService()); iService.SetServiceDescriptor(serviceDescriptor); ResourceUtils.Resolve(iService); return(iService); }
/** * Check whether it contains the requested service or not * @param service Service * @return (true/false) TRUE: If service request already exists | FALSE: If service does not exists * @throws ServiceException If there is any exception while checking for request */ public bool ContainService(Connect.Model.ServiceRequest service) { Connect.Model.ServiceRequest[] services = null; try { services = (Connect.Model.ServiceRequest[]) new Connect.Model.ServiceRequest().Select().Execute(); } catch (DatabaseException de) { Log.Error(typeof(AsyncServiceWorker).Name, "ContainService", "DatabaseException caught while getting services from database, " + de.GetMessage()); throw new ServiceException(typeof(AsyncServiceWorker).Name, "ContainService", de.GetMessage()); } if (services == null || services.Length <= 0) { return(false); } for (int i = 0; i < services.Length; i++) { Connect.Model.ServiceRequest savedService = services[i]; if (service.GetService().Equals(savedService.GetService(), StringComparison.OrdinalIgnoreCase)) { if (service.GetRequest().Equals(savedService.GetRequest(), StringComparison.OrdinalIgnoreCase)) { bool contain = true; IEnumerator <ServiceRequestResource> serviceRequestResources = service.GetServiceRequestResources(); while (serviceRequestResources.MoveNext()) { ServiceRequestResource serviceResource = serviceRequestResources.Current; ServiceRequestResource savedRequestResource = savedService.GetServiceRequestResource(serviceResource.GetName()); if (savedRequestResource == null) { contain = false; break; } if (!serviceResource.GetName().Equals(savedRequestResource.GetName(), StringComparison.OrdinalIgnoreCase)) { contain = false; break; } else if (!serviceResource.GetValue().Equals(savedRequestResource.GetValue(), StringComparison.OrdinalIgnoreCase)) { contain = false; break; } } if (contain) { return(true); } } } } return(false); }