예제 #1
0
 public void UpdateEntry(PcdbEntry parent, IPcdbField field)
 {
     database.BeginTransaction();
     switch (field.Id)
     {
     case PcdbFieldId.Comment:
         var info = (PcdbItemContainer<string>)field;
         database.UpdateHash(parent.Hash, info);
         break;
     case PcdbFieldId.Name:
         var name = (PcdbName)field;
         database.UpdateName(parent.Hash, name.Name, name.Timestamp);
         break;
     case PcdbFieldId.Ip:
         var ip = (PcdbIp)field;
         database.UpdateIp(parent.Hash, ip.Ip, ip.Timestamp);
         break;
     case PcdbFieldId.Gsid:
         var gsid = (PcdbGsid)field;
         database.UpdateGsid(parent.Hash, gsid.Gsid, gsid.Timestamp);
         break;
     }
     database.CommitTransaction();
 }
예제 #2
0
 private void FormatField(IPcdbField root, StringBuilder data)
 {
     switch (root.Id)
     {
     case PcdbFieldId.Group | PcdbFieldId.Hash:
     {
         var entry = (PcdbEntry)root;
         data.AppendLine(entry.Hash);
         FormatField(entry.Names, data);
         FormatField(entry.Ips, data);
         if (dbGameVersion == PcdbGameVersion.COP)
             FormatField(entry.Gsids, data);
         FormatField(entry.Info, data);
         break;
     }
     case (PcdbFieldId.Name | PcdbFieldId.Group):
     {
         data.AppendLine("\r\n; names\r\n");
         var groupName = (PcdbListContainer<PcdbName>)root;
         foreach (var fieldName in groupName)
             FormatField(fieldName, data);
         break;
     }
     case PcdbFieldId.Name:
     {
         var fieldName = (PcdbName)root;
         data.AppendLine(String.Format("    {0,-32} | {1}",
             fieldName.Name, fieldName.Timestamp.ToString(Utils.DateTimePatternLong)));
         break;
     }
     case (PcdbFieldId.Ip | PcdbFieldId.Group):
     {
         data.AppendLine("\r\n; ip addresses\r\n");
         var groupIp = (PcdbListContainer<PcdbIp>)root;
         foreach (var fieldIp in groupIp)
             FormatField(fieldIp, data);
         break;
     }
     case PcdbFieldId.Ip:
     {
         var fieldIp = (PcdbIp)root;
         data.AppendLine(String.Format("    {0,-32} | {1}",
             fieldIp.Ip, fieldIp.Timestamp.ToString(Utils.DateTimePatternLong)));
         break;
     }
     case (PcdbFieldId.Gsid | PcdbFieldId.Group):
     {
         data.AppendLine("\r\n; gamespy id's\r\n");
         var groupGsid = (PcdbListContainer<PcdbGsid>)root;
         foreach (var fieldGsid in groupGsid)
             FormatField(fieldGsid, data);
         break;
     }
     case PcdbFieldId.Gsid:
     {
         var fieldGsid = (PcdbGsid)root;
         data.AppendLine(String.Format("    {0,-32} | {1}",
             fieldGsid.Gsid, fieldGsid.Timestamp.ToString(Utils.DateTimePatternLong)));
         break;
     }
     case PcdbFieldId.Comment:
     {
         data.AppendLine("\r\n; comments\r\n");
         data.AppendLine((PcdbItemContainer<string>)root);
         data.AppendLine("\r\n; ----\r\n");
         break;
     }
     }
 }
예제 #3
0
 public void DataToClipboard(IPcdbField root)
 {
     var data = new StringBuilder();
     FormatField(root, data);
     Clipboard.SetText(data.ToString());
 }