public void DelimitedString_Split_EscapeCharaters() { var actual = DelimitedString.Split("a/,b//c,/,,//,"); var expected = new[] { "a,b/c", ",", "/", "" }; actual.Should().BeEquivalentTo(expected); }
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 GPS(string str) { double[] s = DelimitedString.ReadDelimited(str, ';', double.Parse); this.x = (int)s[0]; this.y = (int)s[1]; this.z = (int)s[2]; }
private static Saml2NameIdentifier ProcessLogoutNameIdentifier(Claim claim) { var fields = DelimitedString.Split(claim.Value); var saml2NameIdentifier = new Saml2NameIdentifier(fields[4]); if (!string.IsNullOrEmpty(fields[0])) { saml2NameIdentifier.NameQualifier = fields[0]; } if (!string.IsNullOrEmpty(fields[1])) { saml2NameIdentifier.SPNameQualifier = fields[1]; } if (!string.IsNullOrEmpty(fields[2])) { saml2NameIdentifier.Format = new Uri(fields[2]); } if (!string.IsNullOrEmpty(fields[3])) { saml2NameIdentifier.SPProvidedId = fields[3]; } return(saml2NameIdentifier); }
protected override void ProcessAuthenticationStatement(Saml2AuthenticationStatement statement, ClaimsIdentity subject, string issuer) { if (statement.AuthenticationContext != null) { statement.AuthenticationContext.DeclarationReference = null; } base.ProcessAuthenticationStatement(statement, subject, issuer); if (statement.SessionIndex != null) { var nameIdClaim = subject.FindFirst(ClaimTypes.NameIdentifier); subject.AddClaim( new Claim( AuthServicesClaimTypes.LogoutNameIdentifier, DelimitedString.Join( nameIdClaim.Properties.GetValueOrEmpty(ClaimProperties.SamlNameIdentifierNameQualifier), nameIdClaim.Properties.GetValueOrEmpty(ClaimProperties.SamlNameIdentifierSPNameQualifier), nameIdClaim.Properties.GetValueOrEmpty(ClaimProperties.SamlNameIdentifierFormat), nameIdClaim.Properties.GetValueOrEmpty(ClaimProperties.SamlNameIdentifierSPProvidedId), nameIdClaim.Value), null, issuer)); subject.AddClaim( new Claim(AuthServicesClaimTypes.SessionIndex, statement.SessionIndex, null, issuer)); } }
public void DelimitedString_Split_EndsWithEscapedDelimiter() { var actual = DelimitedString.Split("a/,"); var expected = new[] { "a," }; actual.Should().BeEquivalentTo(expected); }
public void DelimitedString_Split_EmptyStrings() { var actual = DelimitedString.Split(",aa,,bb,"); var expected = new[] { "", "aa", "", "bb", "" }; actual.Should().BeEquivalentTo(expected); }
public void DelimitedString_Split_SimpleWithoutEscaping() { var actual = DelimitedString.Split("aa,bb,cc"); var expected = new[] { "aa", "bb", "cc" }; actual.Should().BeEquivalentTo(expected); }
public static void TestPlus() { var delimTest = new DelimitedString(); delimTest += "A "; delimTest += "B"; delimTest += "C"; delimTest += "D"; Assert.AreEqual(delimTest.ToString(), "A ,B,C,D"); }
static SlimTree ReadList(DelimitedString input) { var count = int.Parse(input.ReadTo(":")); var result = new SlimTree(); for (var i = 0; i < count; i++) { var itemLength = int.Parse(input.ReadTo(":")); result.AddBranch(Read(input.Read(itemLength, 1))); } return(result); }
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()); }
static void TestDelimited() { string input = "\"Some \\\" Guy\",\"45\",\"\",\"50000.00\""; DelimitedString ds = new DelimitedString(',', '"'); ds.Fields = new DelimitedField[3]; ds.Fields[0] = new DelimitedField(0, "Name"); ds.Fields[1] = new DelimitedField(1, "Age", typeof(int)); ds.Fields[2] = new DelimitedField(3, "Income", "System.Decimal"); Person person = ds.Deserialize<Person>(input); Console.WriteLine(String.Format("Name: {0}, Age: {1}, Income {2}", person.Name, person.Age, person.Income)); Console.WriteLine(String.Format("|{0}| <-- Original", input)); Console.WriteLine(String.Format("|{0}| <-- Generated", ds.Serialize(person))); Console.ReadKey(); }
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()); }
static void TestDelimited() { string input = "\"Some \\\" Guy\",\"45\",\"\",\"50000.00\""; DelimitedString ds = new DelimitedString(',', '"'); ds.Fields = new DelimitedField[3]; ds.Fields[0] = new DelimitedField(0, "Name"); ds.Fields[1] = new DelimitedField(1, "Age", typeof(int)); ds.Fields[2] = new DelimitedField(3, "Income", "System.Decimal"); Person person = ds.Deserialize <Person>(input); Console.WriteLine(String.Format("Name: {0}, Age: {1}, Income {2}", person.Name, person.Age, person.Income)); Console.WriteLine(String.Format("|{0}| <-- Original", input)); Console.WriteLine(String.Format("|{0}| <-- Generated", ds.Serialize(person))); Console.ReadKey(); }
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"; }
public override string ToString() { int[] arr = { x, y, z }; return(DelimitedString.WriteDelimited(arr, ';')); }
public void DelimitedString_Join() { var actual = DelimitedString.Join("aaa", "b/b", "c,c", "d/,d", "/", "e"); actual.Should().Be("aaa,b//b,c/,c,d///,d,//,e"); }
/// <summary> /// Example of how to create migration scripts from an old legacy databse /// </summary> /// <param name="newServerDbName"></param> /// <param name="doCreate"></param> /// <returns></returns> public static List <Sql> GenerateDataMigrationScripts(string newServerDbName, bool doCreate) { // generate models off old database with underscorized naming (connstr = guru) // newServerDbName = thatcher.rinnai var result = new List <Sql>(); var models = ActiveRecordDatabaseGenerator.GetModelInstances(); foreach (ActiveRecord model in models) { var tableName = model.GetTableName().SqlizeName().value; if (!tableName.Contains("rn_")) { continue; } if (tableName.Contains("homebanner")) { continue; } if (tableName.Contains("filetracking")) { continue; } if (tableName.Contains("rn_tracking")) { continue; } if (tableName.Contains("rn_emailtemplate")) { continue; } if (tableName.Contains("rn_categorybanner")) { continue; } if (tableName.Contains("rn_pagecontent")) { continue; } if (tableName.Contains("rn_promo")) { continue; } if (tableName.Contains("rn_pagesection")) { continue; } if (tableName.Contains("banner")) { continue; } string sourceTable, destTable; sourceTable = tableName; destTable = model.GetType().Name; destTable = destTable.Replace("tradesmart", "_tradesmart_"); destTable = destTable.Replace("centre", "_centre_"); destTable = destTable.Replace("subcategory", "_subcategory_"); destTable = destTable.Replace("training", "_training_"); destTable = destTable.Replace("file", "_file_"); destTable = destTable.Replace("association", "_association_"); destTable = destTable.Replace("group", "_group_"); destTable = destTable.Replace("manuals", "_manuals_"); destTable = destTable.Replace("archive", "_archive_"); destTable = destTable.Replace("rn_tn", "rn_trade_"); destTable = destTable.Remove("rn_").PascalCase(); bool hasID = false; var fields = new DelimitedString(","); var destfields = new DelimitedString(","); var creates = "" + destTable + "ID [int] IDENTITY(1,1) NOT NULL, "; foreach (var field in model.GetFields()) { fields += field.Name.SqlizeName().value; var newFieldName = field.Name; foreach (var repl in "meta,centre,areas,covered,subcategory,training,retailer,tradesmart,consumer,accessory,group,price,email,size,section,path,name,manuals,product,banner,studies,performance,compare,text,study,archive,video,type,manuals,content,outlet".Split(',')) { newFieldName = newFieldName.Replace(repl, "_" + repl + "_"); } newFieldName = newFieldName.Replace("dateandtime", "date_and_time"); newFieldName = Fmt.PascalCase(newFieldName); newFieldName = newFieldName.Replace("Id", "ID"); if (newFieldName == "ID" && destTable == "Country") { newFieldName = "Code"; } else if (newFieldName == "ID") { newFieldName = destTable + "ID"; hasID = true; } if (newFieldName == "Priority") { newFieldName = "SortPosition"; } if (newFieldName == "Image") { newFieldName = "Picture"; } if (newFieldName == "Created") { newFieldName = "DateAdded"; } destfields += newFieldName; if (field.Name != "id" || !hasID) { creates += newFieldName + " " + field.GetSqlDataTypeDeclaration().Replace("tinyint", "bit").Replace("smallint", "int").Replace("char", "varchar").Replace("varchar", "nvarchar").Replace("varnvarchar", "nvarchar").Replace("text", "nvarchar(max)").Replace("NOT NULL", "") + ", "; } } if (doCreate) { var sql2 = new Sql("create table " + destTable + " (<b>" + creates + "</b> CONSTRAINT [pk_" + destTable + "] PRIMARY KEY CLUSTERED (" + destTable + "ID ASC));"); result.Add(sql2); } var sql = new Sql("delete from " + destTable + ";"); // maybe use trunc table if (hasID) { sql.Add("set identity_insert " + destTable + " on;"); } sql.Add("insert into " + destTable + " (" + destfields + ") select " + fields + " from RinnaiOld.dbo." + sourceTable + ";"); if (hasID) { sql.Add("set identity_insert " + destTable + " off;"); } result.Add(sql); } foreach (var migration in result) { Web.WriteLine(migration.ToString()); } return(result); }