public static void TestAddRemoveItems() { var delimTest = new DelimitedString(); delimTest.AddItemToString("Test1"); delimTest.AddItemToString("Test2"); delimTest.AddItemToString("Test3"); delimTest.RemoveItemFromString("Test3"); Assert.AreEqual(delimTest.ToString(), "Test1,Test2"); delimTest = new DelimitedString(); delimTest.AddItemToString("Test1"); delimTest.AddItemToString("Test2"); delimTest.AddItemToString("Test3"); delimTest.RemoveItemFromString("Test2"); Assert.AreEqual(delimTest.ToString(), "Test1,Test3"); delimTest = new DelimitedString(); delimTest.AddItemToString("Test1"); delimTest.AddItemToString("Test2"); delimTest.AddItemToString("Test3"); delimTest.RemoveItemFromString("Test1"); Assert.AreEqual(delimTest.ToString(), "Test2,Test3"); delimTest = new DelimitedString(); delimTest.AddItemToString("Test1"); delimTest.AddItemToString("Test2"); delimTest.AddItemToString("Test3"); delimTest.RemoveItemFromString("Test1"); delimTest.RemoveItemFromString("Test3"); delimTest.RemoveItemFromString("Test2"); Assert.IsNull(delimTest.ToString()); }
public static void TestPlus() { var delimTest = new DelimitedString(); delimTest += "A "; delimTest += "B"; delimTest += "C"; delimTest += "D"; Assert.AreEqual(delimTest.ToString(), "A ,B,C,D"); }
public static void TestPlusAnother() { var delimTest = new DelimitedString("-"); delimTest += "A "; delimTest += "B"; delimTest += "C"; delimTest += "D"; var delimTest2 = new DelimitedString(";"); delimTest2 += "mike"; delimTest2 += "andre"; delimTest += delimTest2; Assert.AreEqual("A -B-C-D-mike;andre", delimTest.ToString()); }
public static void TestAddItem() { var delimTest = new DelimitedString(); delimTest.AddItemToString("Test1"); delimTest.AddItemToString("Test2"); delimTest.AddItemToString("Test3"); delimTest.AddItemToString("Test3"); Assert.AreEqual("Test1,Test2,Test3", delimTest.ToString()); delimTest = new DelimitedString(); delimTest.AddItemToString("A"); delimTest.AddItemToString("B"); delimTest.AddItemToString("C"); delimTest.AddItemToString("D"); Assert.AreEqual("A,B,C,D", delimTest.ToString()); }
public static void TestPlusWithDelim() { var delimTest = new DelimitedString(); try { delimTest += "A,B"; Assert.Fail("Should have thrown an exception"); } catch (Exception) { Assert.Pass(); } delimTest = new DelimitedString(); delimTest.throwExceptionOnStringContainsDelimiter = false; try { delimTest += "A,B"; delimTest += "C"; delimTest += "D"; Assert.AreEqual("A,B,C,D", delimTest.ToString()); } catch (Exception) { Assert.Fail("Should NOT have thrown an exception"); } }
public static void TestAddItemContainingDelimiter() { var delimTest = new DelimitedString(); try { delimTest.AddItemToString("A,B"); Assert.Fail("Should have thrown an exception"); } catch (Exception) { Assert.Pass(); } delimTest = new DelimitedString(); delimTest.throwExceptionOnStringContainsDelimiter = false; try { delimTest.AddItemToString("A,B"); delimTest.AddItemToString("C"); delimTest.AddItemToString("D"); Assert.AreEqual("A,B,C,D", delimTest.ToString()); } catch (Exception) { Assert.Fail("Should NOT have thrown an exception"); } }
public void DeleteUnusedAttachments() { bool verbose = true; var files = Directory.GetFiles(Web.MapPath(Web.Attachments), "*.*", SearchOption.AllDirectories); Web.Flush("Indexing files...<br>"); var attachments = new List <string>(); foreach (var file in files) { var attachmentName = file.RightFrom(Web.MapPath(Web.Attachments)).ToLower(); if (!attachmentName.Contains("todelete\\")) { attachments.Add(attachmentName.Replace("\\", "/")); } } Web.Flush("Total " + attachments.Count + " files...<br>"); foreach (var tableName in BewebData.GetTableNames()) { Web.Flush("Table: " + tableName + "<br>"); var sql = new Sql("select top 1 * from ", tableName.SqlizeName()); var fields = new DelimitedString(","); using (var reader = sql.GetReader()) { if (verbose) { Web.Flush("Checking structure...<br>"); } int rec = 0; if (reader.HasRows) { int visibleFieldCount = reader.VisibleFieldCount; for (int i = 0; i < visibleFieldCount; i++) // for each column { string dataType = reader.GetDataTypeName(i).ToLower(); string fieldName = reader.GetName(i).ToLower(); bool isAttach = (dataType.Contains("varchar") && (fieldName.Contains("attachment") || fieldName.Contains("picture"))); bool isRich = ((dataType.Contains("varchar") || dataType.Contains("text")) && (fieldName.Contains("html") || fieldName.Contains("body") || fieldName.Contains("text"))); if (isAttach || isRich) { fields += fieldName; } } } } if (fields.IsBlank) { Web.Flush("Skipping table as no relevant field names<br>"); } else { sql = new Sql("select " + fields.ToString() + " from ", tableName.SqlizeName()); Web.Flush("Searching table... " + sql.Value + "<br>"); using (var reader = sql.GetReader()) { Web.Flush("Scanning records...<br>"); int rec = 0; foreach (DbDataRecord record in reader) { rec++; var foundAttachments = new List <string>(); int visibleFieldCount = reader.VisibleFieldCount; for (int i = 0; i < visibleFieldCount; i++) // for each column { string fieldName = record.GetName(i).ToLower(); bool isAttach = ((fieldName.Contains("attachment") || fieldName.Contains("picture"))); if (!record.IsDBNull(i)) { string fieldValue = record.GetString(i); if (fieldValue.IsNotBlank()) { foreach (var attachmentName in attachments) { if (fieldValue == attachmentName || (!isAttach && fieldValue.ToLower().Contains(attachmentName))) { if (verbose) { Web.WriteLine(" Found: " + attachmentName + " in " + tableName); } foundAttachments.Add(attachmentName); } } } attachments.RemoveAll(a => foundAttachments.Contains(a)); } } if (rec % 100 == 0) { Web.Flush("Scanned: " + rec + " records<br>"); } } } } } Web.Flush("Finished checking. Located " + attachments.Count + " unused attachments<br>"); int totalSize = 0; int cnt = 0; foreach (var attachmentName in attachments) { var size = FileSystem.GetFileSizeBytes(Web.Attachments + attachmentName); totalSize += size; Web.WriteLine("Not found: " + attachmentName + " " + Fmt.FileSize(size, 2)); if (Request["doit"] == "1") { FileSystem.Move(Web.Attachments + attachmentName, Web.Attachments + "todelete", false); } cnt++; if (cnt % 100 == 0) { Web.Flush("Archived: " + cnt + " files<br>"); } } Web.WriteLine("Total size: " + Fmt.FileSize(totalSize, 2)); //DirectoryInfo di = new DirectoryInfo(Server.MapPath(Web.Attachments+"trademe/")); ////read all files into a list //var files = new List<string>(); //foreach (var file in di.EnumerateFiles()) { // Web.Write(file.Name); // files.Add(file.Name); //} ////read db records, remove from files list if they exist in the database //var sql = new Sql("select * from trademelisting"); //foreach (DbDataRecord row in sql.GetReader()) { // //int pageid = (int)row["pageID"]; // //C:\data\dev\web\Honda\PublicServices\attachments\trademe\HAS1001_1709195_9_tn.jpg // //C:\data\dev\web\Honda\PublicServices\attachments\trademe\HAS1001_1709181_8.jpg // // // for(int scanIndex=0;scanIndex<20;scanIndex++){ // var name = row["DealerCode"]+"_"+row["ID"]+"_"+scanIndex; // var nameThumb = name+"_tn.jpg"; // if(files.Contains(nameThumb))files.Remove(nameThumb); // name = name+".jpg"; // if(files.Contains(name))files.Remove(name); // } //} ////delete all files remaining in the list //foreach(var file in files) { // string filename = Server.MapPath(Web.Attachments+"trademe/")+file; // FileSystem.Delete(filename); //} Web.InfoMessage = "Deleted Unused Images and Attachment Files"; }