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)); }
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) { }
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); } } }
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); }
public string ToHtmlString() { var toAdd = DataTypeUtils.GetHtmlTagContentFromContextualAttributes(this); return(Image == null || Image.UploadImage == null ? string.Empty : "<img" + toAdd + " src='" + Image.UploadImage.OriginalImageUrl + "' />"); }
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); }
public string ToHtmlString() { var toAdd = DataTypeUtils.GetHtmlTagContentFromContextualAttributes(this); return("<div" + toAdd + ">" + _raw + "</div>"); }
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>"); }
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); }
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); }
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); }
public string ToHtmlString() { var toAdd = DataTypeUtils.GetHtmlTagContentFromContextualAttributes(this); return("<img" + toAdd + " src='" + OriginalImageUrl + "' />"); }
/// <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); }
public void DdlDataType_SelectedIndexChanged(object sender, EventArgs e) { PhDataLength.Visible = DataTypeUtils.GetEnumType(DdlDataType.SelectedValue) == DataType.VarChar; }
public static string GetContextualAttributes(this CodeFirstContentBase input) { return(DataTypeUtils.GetHtmlTagContentFromContextualAttributes(input)); }
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); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return(DataTypeUtils.GetEnumType((string)reader.Value)); }