private IMiramarTask LoadTaskInstance(IMiramarClientInfo info, TaskConfigurationModel model) { var factory = ObjectFactory.GetAllInstances <IMiramarTaskFactory>() .FirstOrDefault(x => x.IsSatisfiedBy(model.TaskName)); if (factory == null) { var message = string.Format("No corresponding Task Factory could be found for task \"{0}\". Task will not be executed.", model.TaskName); throw new InvalidOperationException(message); } IMiramarTask instance; if (allowMetaData && model.HasMetaData) { instance = LoadTaskInstanceWithMetaData(factory, info, model); if (instance != null) { return(instance); } } instance = factory.GetTask(info, model.TaskName); if (instance == null) { var message = string.Format("Unable to create instance for task \"{0}\" for Client \"{1}\". Task will not be executed.", model.TaskName, info.ClientId); throw new InvalidOperationException(message); } return(instance); }
private IMiramarTask LoadTaskInstanceWithMetaData(IMiramarTaskFactory factory, IMiramarClientInfo info, TaskConfigurationModel model) { var metaDataFactory = factory as IMiramarMetaDataTaskFactory; if (metaDataFactory == null) { logger.WarnFormat( "The corresponding Task Factory for task \"{0}\" does not support instantiation with meta data. Task will be created without meta data.", model.TaskName); return(null); } if (!metaDataFactory.AllowsMetaDataConfiguration(model.TaskName)) { logger.WarnFormat( "Task \"{0}\" has been configured with meta data but is not supported. Task will be created without meta data.", model.TaskName); return(null); } var metaDataInstance = metaDataFactory.GetTask(info, model.TaskName, model.MetaData); if (metaDataInstance != null) { return(metaDataInstance); } var message = string.Format( "Unable to create instance for task \"{0}\" for Client \"{1}\" with meta data. Task will not be executed.", model.TaskName, info.ClientId); throw new InvalidOperationException(message); }
public IMiramarTask GetTask(IMiramarClientInfo clientInfo, string taskId) { var adminDataAccess = new AdminDataAccess(clientInfo.AdminConnection); var clientId = clientInfo.ClientId; var logName = string.Format("Client-{0}", clientId); var logTaskId = string.Format("client.{0}.{1}", clientId, taskId); var logger = InfrastructureFactory.CreateLogger(clientId, logName, logTaskId); if (taskId.StartsWith("market.file", StringComparison.OrdinalIgnoreCase)) { var clientDataAccess = new ClientDataAccess(clientInfo.ClientConnection); if (taskId.Equals("market.file.decrypt", StringComparison.OrdinalIgnoreCase)) { return(new DecryptFileTask(adminDataAccess, clientDataAccess, logger, clientId)); } var marketDataAccess = new MarketDataAccess(clientInfo.MarketConnection); if (taskId.Equals("market.file.import", StringComparison.OrdinalIgnoreCase)) { return(new ImportMarketFileTask(adminDataAccess, marketDataAccess, logger, clientId)); } if (taskId.Equals("market.file.export", StringComparison.OrdinalIgnoreCase)) { return(new ExportMarketFileTask(adminDataAccess, marketDataAccess, logger, clientId)); } if (taskId.Equals("market.file.encrypt", StringComparison.OrdinalIgnoreCase)) { return(new EncryptFileTask(adminDataAccess, clientDataAccess, marketDataAccess, logger, clientId)); } if (taskId.Equals("market.file.transmit", StringComparison.OrdinalIgnoreCase)) { return(new TransmitFileTask(adminDataAccess, clientDataAccess, marketDataAccess, logger, clientId)); } } if (taskId.StartsWith("ercot.cbf", StringComparison.OrdinalIgnoreCase)) { var clientDataAccess = new ClientDataAccess(clientInfo.ClientConnection); var marketDataAccess = new MarketDataAccess(clientInfo.MarketConnection); if (taskId.Equals("ercot.cbf.encrypt", StringComparison.OrdinalIgnoreCase)) { return(new ErcotEncryptFileTask(adminDataAccess, clientDataAccess, marketDataAccess, logger, clientId)); } if (taskId.Equals("ercot.cbf.transmit", StringComparison.OrdinalIgnoreCase)) { return(new ErcotTransmitFileTask(adminDataAccess, clientDataAccess, marketDataAccess, logger, clientId)); } } var message = string.Format("No Miramar Task could be identified for task \"{0}\".", taskId); throw new ArgumentOutOfRangeException("taskId", message); }