コード例 #1
0
        private IDescriptor DeserializeDescriptor(BinaryReader reader)
        {
            long   id   = (long)CountCompression.Deserialize(reader);
            string name = reader.ReadString();

            int structureType = (int)CountCompression.Deserialize(reader);

            var keyDataType    = DataType.Deserialize(reader);
            var recordDataType = DataType.Deserialize(reader);

            var keyType    = DataTypeUtils.BuildType(keyDataType);
            var recordType = DataTypeUtils.BuildType(recordDataType);

            var createTime   = new DateTime((long)CountCompression.Deserialize(reader));
            var modifiedTime = new DateTime((long)CountCompression.Deserialize(reader));
            var accessTime   = new DateTime((long)CountCompression.Deserialize(reader));

            var tagLength = (int)CountCompression.Deserialize(reader) - 1;

            byte[] tag = tagLength >= 0 ? reader.ReadBytes(tagLength) : null;

            return(new Descriptor(id, name, structureType, keyDataType, recordDataType, keyType, recordType, createTime, modifiedTime, accessTime, tag));
        }
コード例 #2
0
ファイル: Descriptor.cs プロジェクト: weiguang3100/iveely
 public Descriptor(long id, string name, DataType keyDataType, DataType recordDataType)
     : this(id, name, Iveely.STSdb4.Database.StructureType.XTABLE, keyDataType, recordDataType, DataTypeUtils.BuildType(keyDataType), DataTypeUtils.BuildType(recordDataType), DateTime.Now, DateTime.Now, DateTime.Now, null)
 {
 }
コード例 #3
0
        private void InternalSerialize(BinaryWriter writer)
        {
            lock (SyncRoot)
            {
                writer.Write(VERSION);

                writer.Write(ID);
                if (ID == Locator.MIN.ID)
                {
                    return;
                }

                writer.Write(IsDeleted);

                writer.Write(Name);
                writer.Write(checked ((byte)StructureType));

                //data types
                KeyDataType.Serialize(writer);
                RecordDataType.Serialize(writer);

                //types
                if (!DataTypeUtils.IsAnonymousType(KeyType))
                {
                    writer.Write(KeyType.FullName);
                }
                else
                {
                    writer.Write("");
                }

                if (!DataTypeUtils.IsAnonymousType(RecordType))
                {
                    writer.Write(RecordType.FullName);
                }
                else
                {
                    writer.Write("");
                }

                //key & record members
                WriteMembers(writer, keyMembers);
                WriteMembers(writer, recordMembers);

                //times
                writer.Write(CreateTime.Ticks);
                writer.Write(ModifiedTime.Ticks);
                writer.Write(AccessTime.Ticks);

                //tag
                if (Tag == null)
                {
                    writer.Write(false);
                }
                else
                {
                    writer.Write(true);
                    CountCompression.Serialize(writer, (ulong)Tag.Length);
                    writer.Write(Tag);
                }
            }
        }
コード例 #4
0
        public static Locator Deserialize(BinaryReader reader)
        {
            if (reader.ReadByte() != VERSION)
            {
                throw new Exception("Invalid Locator version.");
            }

            long id = reader.ReadInt64();

            if (id == Locator.MIN.ID)
            {
                return(Locator.MIN);
            }

            bool isDeleted = reader.ReadBoolean();

            string name          = reader.ReadString();
            int    structureType = reader.ReadByte();

            //data types
            DataType keyDataType    = DataType.Deserialize(reader);
            DataType recordDataType = DataType.Deserialize(reader);

            //types
            string sKeyType = reader.ReadString();
            Type   keyType  = (sKeyType != "") ? TypeCache.GetType(sKeyType) : DataTypeUtils.BuildType(keyDataType);

            string sRecordType = reader.ReadString();
            Type   recordType  = (sRecordType != "") ? TypeCache.GetType(sRecordType) : DataTypeUtils.BuildType(recordDataType);

            //key & record members
            var keyMembers    = ReadMembers(reader);
            var recordMembers = ReadMembers(reader);

            //create time
            DateTime createTime   = new DateTime(reader.ReadInt64());
            DateTime modifiedTime = new DateTime(reader.ReadInt64());
            DateTime accessTime   = new DateTime(reader.ReadInt64());

            //tag
            byte[] tag = reader.ReadBoolean() ? reader.ReadBytes((int)CountCompression.Deserialize(reader)) : null;

            var locator = new Locator(id, name, structureType, keyDataType, recordDataType, keyType, recordType);

            locator.IsDeleted = isDeleted;

            locator.keyMembers    = keyMembers;
            locator.recordMembers = recordMembers;

            locator.CreateTime   = createTime;
            locator.ModifiedTime = modifiedTime;
            locator.AccessTime   = accessTime;

            locator.Tag = tag;

            return(locator);
        }
コード例 #5
0
        public string ToHtmlString()
        {
            var toAdd = DataTypeUtils.GetHtmlTagContentFromContextualAttributes(this);

            return(Image == null || Image.UploadImage == null ? string.Empty : "<img" + toAdd + " src='" + Image.UploadImage.OriginalImageUrl + "' />");
        }
コード例 #6
0
        private Item1 Obtain(string name, int structureType, DataType keyDataType, DataType recordDataType, Type keyType, Type recordType)
        {
            Debug.Assert(keyDataType != null);
            Debug.Assert(recordDataType != null);

            Item1 item;

            if (!map.TryGetValue(name, out item))
            {
                if (keyType == null)
                {
                    keyType = DataTypeUtils.BuildType(keyDataType);
                }
                if (recordType == null)
                {
                    recordType = DataTypeUtils.BuildType(recordDataType);
                }

                var            locator = CreateLocator(name, structureType, keyDataType, recordDataType, keyType, recordType);
                XTablePortable table   = new XTablePortable(this, locator);

                map[name] = item = new Item1(locator, table);
            }
            else
            {
                var locator = item.Locator;

                if (locator.StructureType != structureType)
                {
                    throw new ArgumentException(String.Format("Invalid structure type for '{0}'", name));
                }

                if (keyDataType != locator.KeyDataType)
                {
                    throw new ArgumentException("keyDataType");
                }

                if (recordDataType != locator.RecordDataType)
                {
                    throw new ArgumentException("recordDataType");
                }

                if (locator.KeyType == null)
                {
                    locator.KeyType = DataTypeUtils.BuildType(keyDataType);
                }
                else
                {
                    if (keyType != null && keyType != locator.KeyType)
                    {
                        throw new ArgumentException(String.Format("Invalid keyType for table '{0}'", name));
                    }
                }

                if (locator.RecordType == null)
                {
                    locator.RecordType = DataTypeUtils.BuildType(recordDataType);
                }
                else
                {
                    if (recordType != null && recordType != locator.RecordType)
                    {
                        throw new ArgumentException(String.Format("Invalid recordType for table '{0}'", name));
                    }
                }

                locator.AccessTime = DateTime.Now;
            }

            if (!item.Locator.IsReady)
            {
                item.Locator.Prepare();
            }

            if (item.Table == null)
            {
                item.Table = new XTablePortable(this, item.Locator);
            }

            return(item);
        }
コード例 #7
0
        public string ToHtmlString()
        {
            var toAdd = DataTypeUtils.GetHtmlTagContentFromContextualAttributes(this);

            return("<div" + toAdd + ">" + _raw + "</div>");
        }
コード例 #8
0
ファイル: File.cs プロジェクト: NurhakKaya/UmbracoCodeFirst
        public string ToHtmlString()
        {
            var toAdd = DataTypeUtils.GetHtmlTagContentFromContextualAttributes(this);

            return(File == null || File.UploadFile == null ? string.Empty : "<a" + toAdd + " href='" + File.UploadFile.Url + "'>" + NodeDetails.Name + "</a>");
        }
コード例 #9
0
ファイル: TableMetadataDao.cs プロジェクト: zhangjingpu/cms-1
        public TableMetadataInfo GetTableMetadataInfo(string tableName, string attributeName)
        {
            TableMetadataInfo info = null;

            var parms = new IDataParameter[]
            {
                GetParameter(ParmTableCollectionInfoEnname, DataType.VarChar, 50, tableName),
                GetParameter(ParmAttributeName, DataType.VarChar, 50, attributeName)
            };

            using (var rdr = ExecuteReader(SqlSelectTableMetadataByTableNameAndAttributeName, parms))
            {
                if (rdr.Read())
                {
                    var i = 0;
                    info = new TableMetadataInfo(GetInt(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), DataTypeUtils.GetEnumType(GetString(rdr, i++)), GetInt(rdr, i++), GetInt(rdr, i++), GetBool(rdr, i));
                }
                rdr.Close();
            }

            return(info);
        }
コード例 #10
0
ファイル: TableMetadataDao.cs プロジェクト: zhangjingpu/cms-1
        public List <TableMetadataInfo> GetTableMetadataInfoList(string tableName)
        {
            var list = new List <TableMetadataInfo>();

            var parms = new IDataParameter[]
            {
                GetParameter(ParmTableCollectionInfoEnname, DataType.VarChar, 50, tableName)
            };

            using (var rdr = ExecuteReader(SqlSelectAllTableMetadataByEnname, parms))
            {
                while (rdr.Read())
                {
                    var i    = 0;
                    var info = new TableMetadataInfo(GetInt(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), DataTypeUtils.GetEnumType(GetString(rdr, i++)), GetInt(rdr, i++), GetInt(rdr, i++), GetBool(rdr, i));
                    list.Add(info);
                }
                rdr.Close();
            }
            return(list);
        }
コード例 #11
0
ファイル: TableMetadataDao.cs プロジェクト: zhangjingpu/cms-1
        public TableMetadataInfo GetTableMetadataInfo(int id)
        {
            TableMetadataInfo info = null;

            var parms = new IDataParameter[]
            {
                GetParameter(ParmId, DataType.Integer, id)
            };

            using (var rdr = ExecuteReader(SqlSelectTableMetadata, parms))
            {
                if (rdr.Read())
                {
                    var i = 0;
                    info = new TableMetadataInfo(GetInt(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), DataTypeUtils.GetEnumType(GetString(rdr, i++)), GetInt(rdr, i++), GetInt(rdr, i++), GetBool(rdr, i));
                }
                rdr.Close();
            }

            return(info);
        }
コード例 #12
0
        public string ToHtmlString()
        {
            var toAdd = DataTypeUtils.GetHtmlTagContentFromContextualAttributes(this);

            return("<img" + toAdd + " src='" + OriginalImageUrl + "' />");
        }
コード例 #13
0
        /// <summary>
        /// 将频道模板中的辅助表导入发布系统中,返回修改了的表名对照
        /// 在导入辅助表的同时检查发布系统辅助表并替换对应表
        /// </summary>
        public NameValueCollection ImportAuxiliaryTables(int siteId, bool isUserTables)
        {
            if (!DirectoryUtils.IsDirectoryExists(_directoryPath))
            {
                return(null);
            }

            var siteInfo = SiteManager.GetSiteInfo(siteId);

            var nameValueCollection = new NameValueCollection();
            var tableNamePrefix     = siteInfo.SiteDir + "_";

            var filePaths = DirectoryUtils.GetFilePaths(_directoryPath);

            foreach (var filePath in filePaths)
            {
                var feed = AtomFeed.Load(FileUtils.GetFileStreamReadOnly(filePath));

                var tableName = AtomUtility.GetDcElementContent(feed.AdditionalElements, new List <string> {
                    nameof(TableInfo.TableName), "TableENName"
                });

                if (!isUserTables)
                {
                    nameValueCollection[tableName] = siteInfo.TableName;
                    continue;
                }

                var displayName = AtomUtility.GetDcElementContent(feed.AdditionalElements, new List <string> {
                    nameof(TableInfo.DisplayName), "TableCNName"
                });

                var serializedString = AtomUtility.GetDcElementContent(feed.AdditionalElements, "SerializedString");

                var tableNameToInsert = string.Empty;//需要增加的表名,空代表不需要添加辅助表

                var tableInfo = DataProvider.TableDao.GetTableCollectionInfo(tableName);
                if (tableInfo == null)//如果当前系统无此表名
                {
                    tableNameToInsert = tableName;
                }
                else
                {
                    var serializedStringForExistTable = TableMetadataManager.GetSerializedString(tableName);

                    if (!string.IsNullOrEmpty(serializedString))
                    {
                        if (serializedString != serializedStringForExistTable)//仅有此时,导入表需要修改表名
                        {
                            tableNameToInsert = tableNamePrefix + tableName;
                            displayName       = tableNamePrefix + displayName;
                            nameValueCollection[tableName] = tableNameToInsert;
                        }
                    }
                }

                if (!string.IsNullOrEmpty(tableNameToInsert))//需要添加
                {
                    if (!DataProvider.DatabaseDao.IsTableExists(tableNameToInsert))
                    {
                        tableInfo = new TableInfo
                        {
                            TableName                 = tableNameToInsert,
                            DisplayName               = displayName,
                            AttributeNum              = 0,
                            IsCreatedInDb             = false,
                            IsChangedAfterCreatedInDb = false,
                            Description               = AtomUtility.GetDcElementContent(feed.AdditionalElements, nameof(TableInfo.Description))
                        };

                        var metadataInfoList = new List <TableMetadataInfo>();
                        foreach (AtomEntry entry in feed.Entries)
                        {
                            var metaInfo = new TableMetadataInfo
                            {
                                TableName     = tableNameToInsert,
                                AttributeName = AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(TableMetadataInfo.AttributeName)),
                                DataType      = DataTypeUtils.GetEnumType(AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(TableMetadataInfo.DataType))),
                                DataLength    = TranslateUtils.ToInt(AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(TableMetadataInfo.DataLength))),
                                Taxis         = TranslateUtils.ToInt(AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(TableMetadataInfo.Taxis))),
                                IsSystem      = TranslateUtils.ToBool(AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(TableMetadataInfo.IsSystem)))
                            };

                            if (string.IsNullOrEmpty(metaInfo.AttributeName) ||
                                ContentAttribute.AllAttributesLowercase.Contains(metaInfo.AttributeName.ToLower()))
                            {
                                continue;
                            }

                            metadataInfoList.Add(metaInfo);
                        }

                        DataProvider.TableDao.Insert(tableInfo, metadataInfoList);

                        DataProvider.TableDao.CreateDbTable(tableNameToInsert);
                    }
                }

                var tableNameToChange = !string.IsNullOrEmpty(tableNameToInsert) ? tableNameToInsert : tableName;
                //更新发布系统后台内容表及栏目表
                siteInfo.TableName = tableNameToChange;
                DataProvider.SiteDao.Update(siteInfo);
            }

            return(nameValueCollection);
        }
コード例 #14
0
 public void DdlDataType_SelectedIndexChanged(object sender, EventArgs e)
 {
     PhDataLength.Visible = DataTypeUtils.GetEnumType(DdlDataType.SelectedValue) == DataType.VarChar;
 }
コード例 #15
0
 public static string GetContextualAttributes(this CodeFirstContentBase input)
 {
     return(DataTypeUtils.GetHtmlTagContentFromContextualAttributes(input));
 }
コード例 #16
0
        public override void Submit_OnClick(object sender, EventArgs e)
        {
            var isChanged = false;

            if (Body.IsQueryExists("TableMetadataID"))
            {
                var tableMetadataId = Body.GetQueryInt("TableMetadataID");

                var info = DataProvider.TableMetadataDao.GetTableMetadataInfo(tableMetadataId);
                info.TableName     = _tableName;
                info.AttributeName = TbAttributeName.Text;
                info.DataType      = DataTypeUtils.GetEnumType(DdlDataType.SelectedValue);

                if (info.DataType == DataType.VarChar)
                {
                    info.DataLength = TranslateUtils.ToInt(TbDataLength.Text);
                    var maxLength = SqlUtils.GetMaxLengthForNVarChar();
                    if (info.DataLength <= 0 || info.DataLength > maxLength)
                    {
                        FailMessage($"字段修改失败,数据长度的值必须位于 1 和 {maxLength} 之间");
                        return;
                    }
                }

                try
                {
                    DataProvider.TableMetadataDao.Update(info);

                    Body.AddAdminLog("修改辅助表字段",
                                     $"辅助表:{_tableName},字段名:{info.AttributeName}");

                    isChanged = true;
                }
                catch (Exception ex)
                {
                    FailMessage(ex, ex.Message);
                }
            }
            else
            {
                var attributeNameList = TableMetadataManager.GetAttributeNameList(_tableName, true);

                var attributeNameLowercase = TbAttributeName.Text.Trim().ToLower();
                if (attributeNameList.Contains(attributeNameLowercase) || ContentAttribute.AllAttributesLowercase.Contains(attributeNameLowercase))
                {
                    FailMessage("字段添加失败,字段名已存在!");
                }
                else if (!SqlUtils.IsAttributeNameCompliant(TbAttributeName.Text))
                {
                    FailMessage("字段名不符合系统要求!");
                }
                else
                {
                    var info = new TableMetadataInfo
                    {
                        TableName     = _tableName,
                        AttributeName = TbAttributeName.Text,
                        DataType      = DataTypeUtils.GetEnumType(DdlDataType.SelectedValue)
                    };

                    if (info.DataType == DataType.VarChar)
                    {
                        info.DataLength = TranslateUtils.ToInt(TbDataLength.Text);
                        var maxLength = SqlUtils.GetMaxLengthForNVarChar();
                        if (info.DataLength <= 0 || info.DataLength > maxLength)
                        {
                            FailMessage($"字段修改失败,数据长度的值必须位于 1 和 {maxLength} 之间");
                            return;
                        }
                    }
                    info.IsSystem = false;

                    try
                    {
                        DataProvider.TableMetadataDao.Insert(info);

                        Body.AddAdminLog("添加辅助表字段",
                                         $"辅助表:{_tableName},字段名:{info.AttributeName}");

                        isChanged = true;
                    }
                    catch (Exception ex)
                    {
                        FailMessage(ex, ex.Message);
                    }
                }
            }

            if (isChanged)
            {
                LayerUtils.Close(Page);
            }
        }
コード例 #17
0
ファイル: TableColumnInfo.cs プロジェクト: justgohead/cms-1
 public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
 {
     return(DataTypeUtils.GetEnumType((string)reader.Value));
 }