Changeset 2217


Ignore:
Timestamp:
Dec 17, 2010, 7:38:52 PM (11 years ago)
Author:
nolte
Message:

User Statistics Added. The CSV Data will be saved under C\Users\ct2\Local\CrypTool2...

Location:
trunk/CrypPlugins/KeySearcher
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r2214 r2217  
    4949    {
    5050        /// <summary>
     51        /// used for creating the UserStatistics
     52        /// </summary>
     53        private Dictionary<string, Dictionary<long, int>> statistic;
     54        private bool initialized;
     55        /// <summary>
    5156        /// used for creating the TopList
    5257        /// </summary>
     
    733738            valuequeue = Queue.Synchronized(new Queue());
    734739
     740            statistic = new Dictionary<string, Dictionary<long, int>>();
     741            initialized = false;
     742
    735743            stop = false;
    736744            if (!pattern.testWildcardKey(settings.Key))
     
    12021210        }
    12031211
    1204         internal void IntegrateNewResults(LinkedList<ValueKey> updatedCostList)
     1212        public void SetInitialized(bool ini)
     1213        {
     1214            this.initialized = ini;
     1215        }
     1216
     1217        internal void IntegrateNewResults(LinkedList<ValueKey> updatedCostList, Dictionary<string, Dictionary<long, int>> updatedStatistics, string dataIdentifier)
    12051218        {
    12061219            foreach (var valueKey in updatedCostList)
     
    12121225            }
    12131226
     1227            foreach (string avname in updatedStatistics.Keys)
     1228            {
     1229                //taking the dictionary in this avatarname
     1230                Dictionary<long, int> MaschCount = updatedStatistics[avname];
     1231
     1232                //if the avatarname already exists in the statistics
     1233                if (statistic.ContainsKey(avname))
     1234                {
     1235                    foreach (long id in MaschCount.Keys)
     1236                    {
     1237                        //get the statistic maschcount for this avatarname
     1238                        Dictionary<long, int> statMaschCount = statistic[avname];
     1239                       
     1240                        //if the id of the Maschine already exists for this avatarname
     1241                        if (statMaschCount.ContainsKey(id))
     1242                        {
     1243                            if (!initialized || ((MaschCount[id] == 1) && (MaschCount.Keys.Count == 1)))
     1244                            {
     1245                                statMaschCount[id] = statMaschCount[id] + MaschCount[id];
     1246                                statistic[avname] = statMaschCount;
     1247                            }
     1248                        }
     1249                        else
     1250                        {
     1251                            //add a new id,count value for this avatarname
     1252                            statistic[avname].Add(id, MaschCount[id]);
     1253                        }
     1254                    }
     1255                }
     1256                else
     1257                {
     1258                    //add the maschinecount dictionary to this avatarname
     1259                    statistic[avname] = MaschCount;
     1260                }
     1261            }
     1262            WriteStatistics(dataIdentifier);
    12141263            updateToplist();
     1264        }
     1265
     1266        //Write the User Statistics to an external csv-document
     1267        internal void WriteStatistics(String dataIdentifier)
     1268        {
     1269            using (StreamWriter sw = new StreamWriter(string.Format("{0}\\UserRanking{1}.csv", DirectoryHelper.DirectoryLocal, dataIdentifier)))
     1270            {
     1271                sw.WriteLine("Avatarname" + ";" + "MaschinenID" + ";" + "Anzahl Pattern");
     1272                foreach (string avatar in statistic.Keys)
     1273                {
     1274                    foreach(long mID in statistic[avatar].Keys)
     1275                    {
     1276                        sw.WriteLine(avatar + ";" + mID.ToString() + ";" + statistic[avatar][mID].ToString());
     1277                    }
     1278                }
     1279            }
    12151280        }
    12161281
  • trunk/CrypPlugins/KeySearcher/P2P/DistributedBruteForceManager.cs

    r2160 r2217  
    9292
    9393            status.StartDate = keyPoolTree.StartDate();
    94             //----------------------------------------------
    9594            status.JobSubmitterID = keyPoolTree.SubmitterID();
    96             //-----------------------------------------------
    9795
    9896            keyPoolTree.UpdateStatusForNewCalculation();
     
    211209                            systemJoinEvent.WaitOne();
    212210                        }
    213 
     211                        keySearcher.SetInitialized(true);
    214212                        status.CurrentOperation = "Processing results of calculation";
    215213                        KeyPoolTree.ProcessCurrentPatternCalculationResult(currentLeaf, result);
  • trunk/CrypPlugins/KeySearcher/P2P/Storage/StorageHelper.cs

    r2199 r2217  
    1818
    1919        //VERSIONNUMBER: Important. Set it +1 manually everytime the length of the MemoryStream Changes
    20         private const int version = 1;
     20        private const int version = 2;
    2121
    2222        public StorageHelper(KeySearcher keySearcher, StatisticsGenerator statisticsGenerator, StatusContainer statusContainer)
     
    5050            }                       
    5151           
    52             //TODO: Dictionary write;
    53 //----------------------------------------------------------------------------------
    54 /* 
     52 
    5553            //Creating a copy of the activity dictionary
    5654            Dictionary<String, Dictionary<long, int>> copyAct = nodeToUpdate.Activity;
     
    7371                }
    7472            }
    75 */
    76 //----------------------------------------------------------------------------------)
    7773
    7874            return StoreWithStatistic(KeyInDht(nodeToUpdate), memoryStream.ToArray());
     
    134130            }
    135131           
    136             //-------------------------------------------------------------------------------------------
    137             //AFTER CHANGING THE FOLLOWING PART INCREASE THE VERSION-NUMBER AT THE TOP OF THIS CLASS!
    138             //-------------------------------------------------------------------------------------------
    139 //----------------------------------------------------------------------------------------
    140 /*
    141             //TODO: Dictionary read
    142             if (binaryReader.BaseStream.Length != (binaryReader.BaseStream.Position+1))
     132
     133
     134            if (binaryReader.BaseStream.Length != binaryReader.BaseStream.Position)
    143135            { 
    144136                //Reading the number of avatarnames
     
    158150                        readMaschcount.Add(maschID,count);
    159151                    }
    160                     nodeToUpdate.Activity.Add(avatarname,readMaschcount);                   
     152                    if (nodeToUpdate.Activity.ContainsKey(avatarname))
     153                    {
     154                        nodeToUpdate.Activity[avatarname] = readMaschcount;
     155                    }
     156                    else
     157                    {
     158                        nodeToUpdate.Activity.Add(avatarname, readMaschcount);                     
     159                    }
    161160                }               
    162161            }
    163 */
    164 //---------------------------------------------------------------------------------------------                       
     162
     163//-------------------------------------------------------------------------------------------
     164//AFTER CHANGING THE FOLLOWING PART INCREASE THE VERSION-NUMBER AT THE TOP OF THIS CLASS!
     165//-------------------------------------------------------------------------------------------
     166                       
    165167            if (resultCount > 0)
    166168            {
    167                 keySearcher.IntegrateNewResults(nodeToUpdate.Result);
     169                keySearcher.IntegrateNewResults(nodeToUpdate.Result,nodeToUpdate.Activity, nodeToUpdate.DistributedJobIdentifier);
    168170                statisticsGenerator.ProcessPatternResults(nodeToUpdate.Result);
    169171            }
  • trunk/CrypPlugins/KeySearcher/P2P/Tree/Leaf.cs

    r2199 r2217  
    2323        {
    2424            Result = result;
    25 //-------------------------------------------------------------------------------
    26 //          UpdateActivity();
    27 //-------------------------------------------------------------------------------
     25            UpdateActivity();
    2826            UpdateDht();
    2927        }
  • trunk/CrypPlugins/KeySearcher/P2P/Tree/NodeBase.cs

    r2199 r2217  
    2323        public LinkedList<KeySearcher.ValueKey> Result;
    2424
    25 //-----------------------------------------------------------------------------------
    26 /*
    2725        //Dictionary Tests
    28         public String Avatarname = "ct2";
     26        public String Avatarname = "CrypTool2";
    2927        public Dictionary<String, Dictionary<long, int>> Activity;
    30 */
    31 //-----------------------------------------------------------------------------------
     28        protected bool integrated;
    3229
    3330        protected NodeBase(StorageHelper storageHelper, KeyQualityHelper keyQualityHelper, Node parentNode, BigInteger @from, BigInteger to, string distributedJobIdentifier)
     
    4239            LastUpdate = DateTime.MinValue;
    4340            Result = new LinkedList<KeySearcher.ValueKey>();
    44 //            Activity = new Dictionary<string, Dictionary<long, int>>();
     41            Activity = new Dictionary<string, Dictionary<long, int>>();
     42            integrated = false;
    4543
    4644            StorageHelper.UpdateFromDht(this);
     
    116114            }
    117115
    118 //Integration of the Dictionary into the ParentNode
    119 //-------------------------------------------------------------------------------------------------------
    120 /*
    121             //Collection of all avatarnames in activity of this node
    122             Dictionary<String, Dictionary<long, int>>.KeyCollection keyColl = Activity.Keys;
    123116
    124             foreach (string avname in keyColl)
     117            //Integration of the Dictionary into the ParentNode
     118            if(!integrated)
    125119            {
    126                 //taking the dictionary in this avatarname
    127                 Dictionary<long, int> MaschCount = Activity[avname];
     120                //Collection of all avatarnames in activity of this node
     121                Dictionary<String, Dictionary<long, int>>.KeyCollection keyColl = Activity.Keys;
    128122
    129                 //collecting der maschinID's for this avatarname
    130                 Dictionary<long, int>.KeyCollection maschColl = MaschCount.Keys;
     123                foreach (string avname in keyColl)
     124                {
     125                    //taking the dictionary in this avatarname
     126                    Dictionary<long, int> MaschCount = Activity[avname];
    131127
    132                 //if the avatarname already exists in the parentnode.activity
    133                 if (ParentNode.Activity.ContainsKey(avname))
    134                 {
    135                     foreach (long id in maschColl)
     128                    //collecting der maschinID's for this avatarname
     129                    Dictionary<long, int>.KeyCollection maschColl = MaschCount.Keys;
     130
     131                    //if the avatarname already exists in the parentnode.activity
     132                    if (ParentNode.Activity.ContainsKey(avname))
    136133                    {
    137                         //get the parent maschcount for this avatarname
    138                         Dictionary<long, int> ParentMaschCount = ParentNode.Activity[avname];
     134                        foreach (long id in maschColl)
     135                        {
     136                            //get the parent maschcount for this avatarname
     137                            Dictionary<long, int> ParentMaschCount = ParentNode.Activity[avname];
    139138
    140                         //if the id of the Maschine already exists for this avatarname
    141                         if (ParentMaschCount.ContainsKey(id))
    142                         {
    143                             ParentMaschCount[id] = ParentMaschCount[id] + MaschCount[id];
     139                            //if the id of the Maschine already exists for this avatarname
     140                            if (ParentMaschCount.ContainsKey(id))
     141                            {
     142                                ParentMaschCount[id] = ParentMaschCount[id] + MaschCount[id];
    144143
    145                             ParentNode.Activity[avname] = ParentMaschCount;
    146                         }
    147                         else
    148                         {
    149                             //add a new id,count value for this avatarname
    150                             ParentNode.Activity[avname].Add(id, MaschCount[id]);
     144                                ParentNode.Activity[avname] = ParentMaschCount;
     145                            }
     146                            else
     147                            {
     148                                //add a new id,count value for this avatarname
     149                                ParentNode.Activity[avname].Add(id, MaschCount[id]);
     150                            }
    151151                        }
    152152                    }
     153                    else
     154                    {
     155                        //add the maschinecount dictionary to this avatarname
     156                        ParentNode.Activity[avname] = MaschCount;
     157                    }
    153158                }
    154                 else
    155                 {   //add the maschinecount dictionary to this avatarname
    156                     ParentNode.Activity[avname] = MaschCount;
    157                 }               
    158             }
    159 */
    160 //------------------------------------------------------------------------------------------------------
    161            
     159                //Integration of this node was already done
     160                integrated = true;
     161           
     162            }//end if
     163         
    162164        }
    163165
     
    167169            StorageHelper.UpdateInDht(this);
    168170        }
    169 //-------------------------------------------------------------------------------------------------------
    170 /*
     171
    171172        protected void UpdateActivity()
    172173        {
    173174            Dictionary<long, int> Maschine = new Dictionary<long, int> { { Cryptool.PluginBase.Miscellaneous.UniqueIdentifier.GetID(), 1 } };
    174             Activity.Add(Avatarname, Maschine);
     175            if (!Activity.ContainsKey(Avatarname))
     176            {
     177                Activity.Add(Avatarname, Maschine);
     178            }
    175179        }
    176 */
    177 //--------------------------------------------------------------------------------------------------------
     180
    178181        public abstract bool IsReserved();
    179182
Note: See TracChangeset for help on using the changeset viewer.