Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 13.30 KB | None | 0 0
  1.  private void MaskButton_OnClick(object sender, RoutedEventArgs e)
  2.         {
  3.             bool noWorkload = false;
  4.             string functionName = dVM.FunctionName;
  5.             StringBuilder loggingString = new StringBuilder();
  6.             int ctable = dVM.CurrentTable.TableId;
  7.             string ctablename = dVM.CurrentTable.Name;
  8.             string ccolumn = dVM.CurrentColumn.Name;
  9.             int ccolumnid = dVM.CurrentColumn.ColumnId;
  10.             string type = dVM.db.Tables[ctable].Columns[ccolumnid].Type;
  11.             Trace.TraceInformation("a"+type);
  12.             Random rand = new Random();
  13.             // string x =(dVM.db.Tables[ctable].Data.Tables[0].Columns[ccolumn].ToString());
  14.             //Trace.TraceInformation("god"+x.ToString());
  15.             if (dVM.WorkloadLoaded)
  16.             {
  17.                 if (conditions.Count == 0)
  18.                 {
  19.                     noWorkload = true;
  20.                 }
  21.             }
  22.             if (dVM.MaskTechnique)
  23.             {
  24.                 if (!dVM.IsKey(ctable, ccolumn))
  25.                 {
  26.                     loggingString.Append("Table name: " + ctablename);
  27.                     loggingString.Append(Environment.NewLine);
  28.                     loggingString.Append("Column name: " + ccolumn);
  29.                     loggingString.Append(Environment.NewLine);
  30.                     loggingString.Append("Original\t\tMasked");
  31.                     loggingString.Append(Environment.NewLine);
  32.                     DataTable origVals = dVM.db.Tables[ctable].Data.Tables[0].Copy();
  33.                     for (int i = 0; i < dVM.db.Tables[ctable].Data.Tables[0].Rows.Count; i++)
  34.                     {
  35.                         bool shouldMask = false;
  36.                         bool shouldMask1 = true;
  37.                         if (type.Equals("int"))
  38.                         {
  39.                             int firstParam = 0;
  40.                             int secParam = 0;
  41.                             if (!FirstParameter.Text.Equals(""))
  42.                             {
  43.                                 firstParam = Int32.Parse(FirstParameter.Text);
  44.                             }
  45.                             if (!SecondParameter.Text.Equals(""))
  46.                             {
  47.                                 secParam = Int32.Parse(SecondParameter.Text);
  48.                             }
  49.                             var o = origVals.Rows[i][ccolumn].ToString();
  50.                             int m = 0;
  51.                             var x = Int32.Parse(dVM.db.Tables[ctable].Data.Tables[0].Rows[i][ccolumn].ToString());
  52.                             Trace.TraceInformation("Original: " + x.ToString());
  53.                             loggingString.Append(o + "\t\t");
  54.                             if (dVM.WorkloadLoaded)
  55.                             {
  56.                                 foreach (var c in conditions)
  57.                                 {
  58.                                     if (ctablename == c.TableName && ccolumn == c.ColumnName)
  59.                                     {
  60.                                         if (!mask.Operator(c.Operator, x, Int32.Parse(c.Value)))
  61.                                         {
  62.                                             if (functionName.Equals("Shuffle"))
  63.                                             {
  64.                                                 int len = dVM.db.Tables[ctable].Data.Tables[0].Rows.Count;
  65.                                                 int y = i + (int)(rand.NextDouble() * (len - i));                
  66.                                                 int tmp =Int32.Parse(dVM.db.Tables[ctable].Data.Tables[0].Rows[i][ccolumn].ToString());
  67.                                                 m = Int32.Parse(dVM.db.Tables[ctable].Data.Tables[0].Rows[y][ccolumn].ToString());
  68.                                                 dVM.db.Tables[ctable].Data.Tables[0].Rows[y][ccolumn] = tmp;
  69.                                             }
  70.                                             else
  71.                                             {
  72.                                                 m = MaskInt(x, firstParam, secParam, functionName);
  73.                                             }
  74.  
  75.                                         }
  76.                                         else
  77.                                         {
  78.                                             m = x;
  79.                                             shouldMask1 = false;
  80.                                         }
  81.                                     }
  82.                                     else
  83.                                     {
  84.                                         shouldMask = true;
  85.                                     }
  86.                                 }
  87.                             }
  88.                             else
  89.                             {
  90.                                 noWorkload = true;
  91.                             }
  92.                             if (noWorkload)
  93.                             {
  94.                                 if (functionName.Equals("Shuffle"))
  95.                                 {
  96.                                     int len = dVM.db.Tables[ctable].Data.Tables[0].Rows.Count;
  97.                                     int y = i + (int)(rand.NextDouble() * (len - i));
  98.                                     int tmp = Int32.Parse(dVM.db.Tables[ctable].Data.Tables[0].Rows[i][ccolumn].ToString());
  99.                                     m = Int32.Parse(dVM.db.Tables[ctable].Data.Tables[0].Rows[y][ccolumn].ToString());
  100.                                     dVM.db.Tables[ctable].Data.Tables[0].Rows[y][ccolumn] = tmp;
  101.                                 }
  102.                                 else
  103.                                 {
  104.                                     m = MaskInt(x, firstParam, secParam, functionName);
  105.                                 }
  106.                             }
  107.                             if (shouldMask1 && shouldMask)
  108.                             {
  109.                                 if (functionName.Equals("Shuffle"))
  110.                                 {
  111.                                     int len = dVM.db.Tables[ctable].Data.Tables[0].Rows.Count;
  112.                                     int y = i + (int)(rand.NextDouble() * (len - i));
  113.                                     int tmp = Int32.Parse(dVM.db.Tables[ctable].Data.Tables[0].Rows[i][ccolumn].ToString());
  114.                                     m = Int32.Parse(dVM.db.Tables[ctable].Data.Tables[0].Rows[y][ccolumn].ToString());
  115.                                     dVM.db.Tables[ctable].Data.Tables[0].Rows[y][ccolumn] = tmp;
  116.                                 }
  117.                                 else
  118.                                 {
  119.                                     m = MaskInt(x, firstParam, secParam, functionName);
  120.                                 }
  121.                             }
  122.                             Trace.TraceInformation("Masked: " +
  123.                                                    (dVM.db.Tables[ctable].Data.Tables[0].Rows[i][ccolumn] = m).ToString());
  124.                             loggingString.Append(m);
  125.                             loggingString.Append(Environment.NewLine);
  126.  
  127.                             //Table.BuildInsertCommand(dVM.db.Tables[ctable].Data,dVM.db.Tables[ctable].Name);
  128.                             //Table.DisableConstrains();
  129.                             //Table.DeleteData(dVM.db.Tables[ctable].Name);
  130.                             //Table.InsertData(dVM.db.Tables[ctable].Data,dVM.db.Tables[ctable].Name);
  131.                             //Table.EnableConstrains();
  132.  
  133.                             //Trace.TraceInformation(m.ToString());
  134.                             Trace.Flush();
  135.                         }
  136.                         //todo: dodělat pro dalši datove typy a upravit varchar
  137.                         else if (type.Equals("varchar") || type.Equals("nvarchar") || type.Equals("varchar2") || type.Equals("text"))
  138.                         {
  139.                             int firstParam = Int32.Parse(FirstParameter.Text);
  140.                             int secParam = Int32.Parse(SecondParameter.Text);
  141.                             string x = dVM.db.Tables[ctable].Data.Tables[0].Rows[i][ccolumn].ToString();
  142.                             Trace.TraceInformation("Orig: " + x);
  143.                             loggingString.Append(x + "\t\t");
  144.                             string m = "";
  145.                             if (dVM.WorkloadLoaded)
  146.                             {
  147.                                 foreach (var c in conditions)
  148.                                 {
  149.                                     if (ctablename == c.TableName && ccolumn == c.ColumnName)
  150.                                     {
  151.                                         if (!mask.StrOperator(c.Operator, x, c.Value))
  152.                                         {
  153.  
  154.                                             m = MaskString(x, firstParam, secParam, functionName);
  155.                                         }
  156.                                         else
  157.                                         {
  158.                                             m = x;
  159.                                             shouldMask1 = false;
  160.                                         }
  161.                                     }
  162.                                     else
  163.                                     {
  164.                                         shouldMask = true;
  165.                                     }
  166.  
  167.                                 }
  168.                             }
  169.                             else
  170.                             {
  171.                                 noWorkload = true;
  172.                             }
  173.                             if (noWorkload)
  174.                                 m = MaskString(x, firstParam, secParam, functionName);
  175.                             if (shouldMask1 && shouldMask)
  176.                             {
  177.                                 m = MaskString(x, firstParam, secParam, functionName);
  178.                             }
  179.                             dVM.db.Tables[ctable].Data.Tables[0].Rows[i][ccolumn] = m;
  180.                             Trace.TraceInformation("Masked: " + m);
  181.                             loggingString.Append(m);
  182.                             loggingString.Append(Environment.NewLine);
  183.                         }
  184.                         else if (type.Equals("date"))
  185.                         {
  186.                             //int firstParam = Int32.Parse(FirstParameter.Text);
  187.                             //int secParam = Int32.Parse(SecondParameter.Text);
  188.                             DateTime x = (DateTime) dVM.db.Tables[ctable].Data.Tables[0].Rows[i][ccolumn];
  189.                             Trace.TraceInformation("Orig: " + x);
  190.                             DateTime m = new DateTime();
  191.                             if (dVM.WorkloadLoaded)
  192.                             {
  193.                                 foreach (var c in conditions)
  194.                                 {
  195.                                     if (ctablename == c.TableName && ccolumn == c.ColumnName)
  196.                                     {
  197.                                         string tmp = Query.DateConvert(c.Value);
  198.                                         DateTime myDate = DateTime.Parse(tmp);
  199.                                         if (!mask.DateOperator(c.Operator, x, myDate))
  200.                                         {
  201.                                             m = MaskDate(x, functionName);
  202.                                         }
  203.                                         else
  204.                                         {
  205.                                             m = x;
  206.                                             shouldMask1 = false;
  207.                                         }
  208.                                     }
  209.                                     else
  210.                                     {
  211.                                         shouldMask = true;
  212.                                     }
  213.  
  214.                                 }
  215.                             }
  216.                             else
  217.                             {
  218.                                 noWorkload = true;
  219.                             }
  220.                             if (noWorkload)
  221.                                 m = MaskDate(x, functionName);
  222.                             if (shouldMask1 && shouldMask)
  223.                             {
  224.                                 m = MaskDate(x, functionName);
  225.                             }
  226.                             dVM.db.Tables[ctable].Data.Tables[0].Rows[i][ccolumn] = m;
  227.                             Trace.TraceInformation("Masked: " + m);
  228.                         }
  229.                     }
  230.                     VievValues.Visibility = Visibility.Visible;
  231.                     loggingString.Append(Environment.NewLine);
  232.                     loggingString.Append("--------------------------");
  233.                     loggingString.Append(Environment.NewLine);
  234.                     LogValues(loggingString.ToString());
  235.                     dVM.MaskTechnique = false;
  236.                     InfoLabel.Content = "Data in column " + ccolumn + " in table "+ ctablename + " was masked";
  237.                     MasksComboBox.SelectedItem = null;
  238.                 }
  239.                 else
  240.                     InfoLabel.Content = "Primary keys, Foreign keys and Unique columns cannot be masked!";
  241.             }
  242.             else
  243.                 InfoLabel.Content = "Mask technique was not selected";
  244.  
  245.             Trace.Flush();
  246.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement