public JobInstance ScheduleAsJob(Federation federation, TableOrView[] sources, string path, FileFormatDescription format, string queueName, string comments) { var job = GetInitializedJobInstance(queueName, comments); var settings = new ExportTablesJobSettings(job.JobDefinition.Settings); path = path ?? settings.OutputDirectory; path = Path.Combine(path, String.Format("{0}_{1}{2}", Context.UserName, job.JobID, Jhu.Graywulf.IO.Constants.FileExtensionZip)); var destinations = new DataFileBase[sources.Length]; for (int i = 0; i < sources.Length; i++) { var ff = FileFormatFactory.Create(federation.FileFormatFactory); var destination = ff.CreateFile(format); destination.Uri = Util.UriConverter.FromFilePath(String.Format("{0}{1}", sources[i].ObjectName, format.DefaultExtension)); // special initialization in case of a text file // TODO: move this somewhere else, maybe web? if (destination is TextDataFileBase) { var tf = (TextDataFileBase)destination; tf.Encoding = Encoding.ASCII; tf.Culture = System.Globalization.CultureInfo.InvariantCulture; tf.GenerateIdentityColumn = false; tf.ColumnNamesInFirstLine = true; } destinations[i] = destination; } var et = new ExportTables() { Sources = sources, Destinations = destinations, Archival = DataFileArchival.Zip, Uri = Util.UriConverter.FromFilePath(path), FileFormatFactoryType = federation.FileFormatFactory, StreamFactoryType = federation.StreamFactory, }; job.Parameters["Parameters"].Value = et; return(job); }
protected Guid ScheduleExportTableJob(string schemaName, string tableName, string path, QueueType queueType) { var queue = String.Format("QueueInstance:Graywulf.Controller.Controller.{0}", queueType.ToString()); using (var context = ContextManager.Instance.CreateContext(ConnectionMode.AutoOpen, TransactionMode.AutoCommit)) { var user = SignInTestUser(context); var ef = new EntityFactory(context); var federation = ef.LoadEntity <Federation>(Registry.AppSettings.FederationName); var format = FileFormatFactory.Create(federation.FileFormatFactory).GetFileFormatDescription(typeof(Jhu.Graywulf.Format.DelimitedTextDataFile).FullName); var mydbds = federation.MyDBDatabaseVersion.GetUserDatabaseInstance(user).GetDataset(); var source = new Jhu.Graywulf.Schema.Table() { Dataset = mydbds, // TODO: fix this DatabaseName = mydbds.DatabaseName, SchemaName = schemaName, TableName = tableName }; var etf = new ExportTablesFactory(context); var ji = etf.ScheduleAsJob( federation, new TableOrView[] { source }, path, format, queue, ""); ji.Save(); return(ji.Guid); } }
protected FileFormatFactory GetFileFormatFactory() { return(FileFormatFactory.Create(fileFormatFactoryType)); }