private async Task <WitsmlLog> GetLog(LogReference logReference) { var logQuery = LogQueries.QueryById(logReference.WellUid, logReference.WellboreUid, logReference.LogUid); var logs = await client.GetFromStoreAsync(logQuery, OptionsIn.All); return(!logs.Logs.Any() ? null : logs.Logs.First()); }
private async Task <WitsmlLog> GetLogHeader(string wellUid, string wellboreUid, string logUid) { var query = LogQueries.QueryById(wellUid, wellboreUid, logUid); var result = await WitsmlClient.GetFromStoreAsync(query, OptionsIn.HeaderOnly); return(result.Logs.FirstOrDefault()); }
private async Task <Index> GetEndIndex(LogReference logReference) { var logQuery = LogQueries.QueryById(logReference.WellUid, logReference.WellboreUid, logReference.LogUid); var logs = await client.GetFromStoreAsync(logQuery, OptionsIn.HeaderOnly); return(Index.End(logs.Logs.First())); }
private static async Task <WitsmlLog> GetLog(IWitsmlClient client, LogReference logReference) { var logQuery = LogQueries.QueryById(logReference.WellUid, logReference.WellboreUid, logReference.LogUid); var result = await client.GetFromStoreAsync(logQuery, OptionsIn.All); return(!result.Logs.Any() ? null : result.Logs.First()); }
public async Task CreateLogObject_BasedOnExisting() { var wellUid = "W-5232880"; var wellboreUid = "B-5232880"; var logUid = "GM_Measured_Depth_GMDepth"; var queryExisting = LogQueries.QueryById(wellUid, wellboreUid, logUid); var existingLogs = await client.GetFromStoreAsync(queryExisting, OptionsIn.All); var existing = existingLogs.Logs.First(); var createLogQuery = CreateLogQuery( existing.UidWell, existing.NameWell, existing.UidWellbore, existing.NameWellbore, existing.Name + " (interval)", existing.IndexType, existing.IndexCurve, existing.LogCurveInfo.Single(logCurveInfo => logCurveInfo.Mnemonic == existing.IndexCurve.Value)); var result = await client.AddToStoreAsync(createLogQuery); Assert.True(result.IsSuccessful); output.WriteLine("Created log object with uid: " + createLogQuery.Logs.First().Uid); }
public async Task <(WorkerResult, RefreshAction)> Execute(ModifyLogObjectJob job) { Verify(job.LogObject); var wellUid = job.LogObject.WellUid; var wellboreUid = job.LogObject.WellboreUid; var logUid = job.LogObject.Uid; var query = CreateRequest(wellUid, wellboreUid, logUid, new WitsmlLog { Uid = logUid, UidWell = wellUid, UidWellbore = wellboreUid, Name = job.LogObject.Name }); var result = await witsmlClient.UpdateInStoreAsync(query); if (result.IsSuccessful) { Log.Information("{JobType} - Job successful", GetType().Name); var refreshAction = new RefreshWellbore(witsmlClient.GetServerHostname(), wellUid, wellboreUid, RefreshType.Update); return(new WorkerResult(witsmlClient.GetServerHostname(), true, $"Log updated ({job.LogObject.Name} [{logUid}])"), refreshAction); } Log.Error($"Job failed. An error occurred when modifying logobject: {job.LogObject.PrintProperties()}"); var logQuery = LogQueries.QueryById(wellUid, wellboreUid, logUid); var logs = await witsmlClient.GetFromStoreAsync(logQuery, OptionsIn.IdOnly); var log = logs.Logs.FirstOrDefault(); EntityDescription description = null; if (log != null) { description = new EntityDescription { WellName = log.NameWell, WellboreName = log.NameWellbore, ObjectName = log.Name }; } return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to update log", result.Reason, description), null); }
public async Task <(WorkerResult workerResult, RefreshLogObject refreshAction)> Execute(DeleteMnemonicsJob job) { var wellUid = job.LogObject.WellUid; var wellboreUid = job.LogObject.WellboreUid; var logUid = job.LogObject.LogUid; var mnemonics = job.Mnemonics; var mnemonicsString = string.Join(", ", mnemonics); var query = LogQueries.DeleteMnemonicsQuery(wellUid, wellboreUid, logUid, mnemonics); var result = await witsmlClient.DeleteFromStoreAsync(query); if (result.IsSuccessful) { Log.Information("{JobType} - Job successful.", GetType().Name); var refreshAction = new RefreshLogObject(witsmlClient.GetServerHostname(), wellUid, wellboreUid, logUid, RefreshType.Update); var workerResult = new WorkerResult(witsmlClient.GetServerHostname(), true, $"Deleted mnemonics: {mnemonicsString} for log: {logUid}"); return(workerResult, refreshAction); } Log.Error("Failed to delete mnemonics for log object. WellUid: {WellUid}, WellboreUid: {WellboreUid}, Uid: {LogUid}, Mnemonics: {MnemonicsString}", wellUid, wellboreUid, logUid, mnemonics); query = LogQueries.QueryById(wellUid, wellboreUid, logUid); var queryResult = await witsmlClient.GetFromStoreAsync(query, OptionsIn.IdOnly); var log = queryResult.Logs.First(); EntityDescription description = null; if (log != null) { description = new EntityDescription { WellName = log.NameWell, WellboreName = log.NameWellbore, ObjectName = log.Name }; } return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to delete mnemonics", result.Reason, description), null); }
public async Task <LogObject> GetLog(string wellUid, string wellboreUid, string logUid, OptionsIn queryOptions) { var query = LogQueries.QueryById(wellUid, wellboreUid, logUid); var result = await WitsmlClient.GetFromStoreAsync(query, queryOptions); var witsmlLog = result.Logs.FirstOrDefault(); if (witsmlLog == null) { return(null); } var logObject = new LogObject { Uid = witsmlLog.Uid, Name = witsmlLog.Name, IndexType = witsmlLog.IndexType, WellUid = witsmlLog.UidWell, WellName = witsmlLog.NameWell, WellboreUid = witsmlLog.UidWellbore, WellboreName = witsmlLog.NameWellbore, IndexCurve = witsmlLog.IndexCurve.Value, ObjectGrowing = StringHelpers.ToBooleanSafe(witsmlLog.ObjectGrowing), ServiceCompany = witsmlLog.ServiceCompany, RunNumber = witsmlLog.RunNumber }; if (string.IsNullOrEmpty(witsmlLog.IndexType)) { return(logObject); } logObject.StartIndex = GetIndexAsString(witsmlLog.IndexType, witsmlLog.StartIndex, witsmlLog.StartDateTimeIndex); logObject.EndIndex = GetIndexAsString(witsmlLog.IndexType, witsmlLog.EndIndex, witsmlLog.EndDateTimeIndex); return(logObject); }
public async Task <(WorkerResult, RefreshAction)> Execute(TrimLogDataJob job) { var witsmlLogQuery = LogQueries.QueryById(job.LogObject.WellUid, job.LogObject.WellboreUid, job.LogObject.LogUid); var witsmlLogs = await witsmlClient.GetFromStoreAsync(witsmlLogQuery, OptionsIn.HeaderOnly); var witsmlLog = witsmlLogs.Logs.First(); var currentStartIndex = Index.Start(witsmlLog); var newStartIndex = Index.Start(witsmlLog, job.StartIndex); var currentEndIndex = Index.End(witsmlLog); var newEndIndex = Index.End(witsmlLog, job.EndIndex); bool trimmedStartOfLog = false; if (currentStartIndex < newStartIndex && newStartIndex < currentEndIndex) { var trimLogObjectStartQuery = CreateRequest( job.LogObject.WellUid, job.LogObject.WellboreUid, job.LogObject.LogUid, witsmlLog.IndexType, deleteTo: newStartIndex); var result = await witsmlClient.DeleteFromStoreAsync(trimLogObjectStartQuery); if (result.IsSuccessful) { trimmedStartOfLog = true; } else { Log.Error($"Job failed. An error occurred when trimming logobject start: {job.PrintProperties()}"); return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to update start of log", result.Reason, GetDescription(witsmlLog)), null); } } bool trimmedEndOfLog = false; if (currentEndIndex > newEndIndex && newEndIndex > currentStartIndex) { var trimLogObjectEndQuery = CreateRequest( job.LogObject.WellUid, job.LogObject.WellboreUid, job.LogObject.LogUid, witsmlLog.IndexType, deleteFrom: newEndIndex); var result = await witsmlClient.DeleteFromStoreAsync(trimLogObjectEndQuery); if (result.IsSuccessful) { trimmedEndOfLog = true; } else { Log.Error($"Job failed. An error occurred when trimming logobject end: {job.PrintProperties()}"); return(new WorkerResult(witsmlClient.GetServerHostname(), false, "Failed to update end of log", result.Reason, GetDescription(witsmlLog)), null); } } var refreshAction = new RefreshLogObject(witsmlClient.GetServerHostname(), job.LogObject.WellUid, job.LogObject.WellboreUid, job.LogObject.LogUid, RefreshType.Update); if (trimmedStartOfLog && trimmedEndOfLog) { return(new WorkerResult(witsmlClient.GetServerHostname(), true, $"Updated start/end of log [{job.LogObject.LogUid}]"), refreshAction); } if (trimmedStartOfLog) { return(new WorkerResult(witsmlClient.GetServerHostname(), true, $"Updated start of log [{job.LogObject.LogUid}]"), refreshAction); } if (trimmedEndOfLog) { return(new WorkerResult(witsmlClient.GetServerHostname(), true, $"Updated end of log [{job.LogObject.LogUid}]"), refreshAction); } return(new WorkerResult(witsmlClient.GetServerHostname(), false, $"Failed to update start/end of log [{job.LogObject.LogUid}]", "Invalid index range"), null); }