コード例 #1
0
        public void DelimitedString_Split_EscapeCharaters()
        {
            var actual   = DelimitedString.Split("a/,b//c,/,,//,");
            var expected = new[] { "a,b/c", ",", "/", "" };

            actual.Should().BeEquivalentTo(expected);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
 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];
 }
コード例 #4
0
        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));
            }
        }
コード例 #6
0
        public void DelimitedString_Split_EndsWithEscapedDelimiter()
        {
            var actual = DelimitedString.Split("a/,");

            var expected = new[] { "a," };

            actual.Should().BeEquivalentTo(expected);
        }
コード例 #7
0
        public void DelimitedString_Split_EmptyStrings()
        {
            var actual = DelimitedString.Split(",aa,,bb,");

            var expected = new[] { "", "aa", "", "bb", "" };

            actual.Should().BeEquivalentTo(expected);
        }
コード例 #8
0
        public void DelimitedString_Split_SimpleWithoutEscaping()
        {
            var actual = DelimitedString.Split("aa,bb,cc");

            var expected = new[] { "aa", "bb", "cc" };

            actual.Should().BeEquivalentTo(expected);
        }
コード例 #9
0
        public static void TestPlus()
        {
            var delimTest = new DelimitedString();

            delimTest += "A ";
            delimTest += "B";
            delimTest += "C";
            delimTest += "D";
            Assert.AreEqual(delimTest.ToString(), "A ,B,C,D");
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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());
        }
コード例 #12
0
        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();
        }
コード例 #13
0
        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());
        }
コード例 #14
0
        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();
        }
コード例 #15
0
        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");
            }
        }
コード例 #16
0
        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");
            }
        }
コード例 #17
0
        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("&nbsp;&nbsp;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";
        }
コード例 #18
0
 public override string ToString()
 {
     int[] arr = { x, y, z };
     return(DelimitedString.WriteDelimited(arr, ';'));
 }
コード例 #19
0
        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");
        }
コード例 #20
0
        /// <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);
        }