using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Perforce.P4
{
///
/// Specifies a fix relationship between one or more jobs and one
/// or more changelists.
///
public class Fix
{
public string JobId { get; set; }
public int ChangeId { get; set; }
public DateTime Date { get; set; }
public string ClientName { get; set; }
public string UserName { get; set; }
public string Status { get; set; }
StringEnum _action;
public FixAction Action
{
get { return _action; }
set { _action = value; }
}
public Fix() { }
public Fix( string jobid,
int changeid,
DateTime date,
string clientname,
string username,
string status,
FixAction action
)
{
JobId = jobid;
ChangeId = changeid;
Date = date;
ClientName = clientname;
UserName = username;
Status = status;
Action = action;
}
public void ParseFixesCmdTaggedData(TaggedObject obj, string offset, bool dst_mismatch)
{
if (obj.ContainsKey("Job"))
{
JobId = obj["Job"];
}
if (obj.ContainsKey("Change"))
{
int c = -1;
int.TryParse(obj["Change"], out c);
ChangeId = c;
}
if (obj.ContainsKey("Date"))
{
DateTime UTC = FormBase.ConvertUnixTime(obj["Date"]);
DateTime GMT = new DateTime(UTC.Year, UTC.Month, UTC.Day, UTC.Hour, UTC.Minute, UTC.Second,
DateTimeKind.Unspecified);
Date = FormBase.ConvertFromUTC(GMT, offset, dst_mismatch);
}
if (obj.ContainsKey("User"))
{
UserName = obj["User"];
}
if (obj.ContainsKey("Client"))
{
ClientName = obj["Client"];
}
if (obj.ContainsKey("Status"))
{
Status = obj["Status"];
}
if (obj.ContainsKey("Action"))
{
_action = obj["Action"];
}
else { Action = FixAction.Fixed; }
}
public static Fix FromFixesCmdTaggedOutput(TaggedObject obj, string offset, bool dst_mismatch)
{
Fix val = new Fix();
val.ParseFixesCmdTaggedData(obj, offset,dst_mismatch);
return val;
}
public static Fix FromFixCmdTaggedOutput(TaggedObject obj)
{
Fix val = new Fix();
if (obj.ContainsKey("job"))
{
val.JobId = obj["job"];
}
if (obj.ContainsKey("change"))
{
int v = -1;
int.TryParse(obj["change"], out v);
val.ChangeId = v;
}
if (obj.ContainsKey("status"))
{
val.Status = obj["status"];
}
if (obj.ContainsKey("action"))
{
val._action = obj["action"];
}
return val;
}
}
///
/// The fix action (Fixed or Unfixed).
///
[Flags]
public enum FixAction
{
///
/// Fixed
///
Fixed = 0x000,
///
/// Fix removed
///
Unfixed = 0x001
}
}