Esempio n. 1
0
    public void SearchTable(TableName TableName, DataTableType dataTableType)
    {
        foreach (ProvinceData provinceData in province.provinceDataTable)
        {
            if (provinceData.name == TableName.ToString())
            {
                switch (dataTableType)
                {
                case DataTableType.Icon:
                    Debug.Log(provinceData.icon);
                    break;

                case DataTableType.Name:
                    Debug.Log(provinceData.Name);
                    break;

                case DataTableType.Synopsis:
                    Debug.Log(provinceData.synopsis);
                    break;

                case DataTableType.Region:
                    Debug.Log(provinceData.region);
                    break;

                case DataTableType.Number:
                    Debug.Log(provinceData.number);
                    break;

                case DataTableType.Area:
                    Debug.Log(provinceData.area);
                    break;
                }
            }
        }
    }
Esempio n. 2
0
 /// <summary>
 /// Create a PowershellTask to execute the specified scripts
 /// </summary>
 /// <param name="variables">Variables to pass into the powershell task</param>
 /// <param name="scriptFiles">List of script files to load prior to running scriptText. Loaded 1st into Pipeline.Commands</param>
 /// <param name="scriptText">Script text to perform the task. Loaded last into Pipeline.Commands</param>
 public PowershellTask(Dictionary <string, object> variables, List <string> scriptFiles, string scriptText)
 {
     _scriptText    = scriptText;
     _scriptFiles   = scriptFiles;
     _variables     = variables;
     _dataTableType = DataTableType.None;
 }
Esempio n. 3
0
        private static DataTable Create(DataTable root, DataTable master,
                                        Type objectType, bool isSnapshot, DataTableType tableType,
                                        IEnumerable <IDataField> objectFields, IDataField memberField)
        {
            var tableName = GetTableName(objectType, isSnapshot);

            return(Create(root, master, objectType, isSnapshot, tableType, tableName, objectFields, memberField));
        }
Esempio n. 4
0
 /// <summary>
 /// 创建中间表
 /// </summary>
 /// <param name="root"></param>
 /// <param name="master"></param>
 /// <param name="tableName"></param>
 /// <param name="tableType"></param>
 /// <param name="isMultiple"></param>
 /// <param name="objectFields"></param>
 /// <param name="memberField"></param>
 /// <returns></returns>
 private static DataTable CreateMiddle(DataTable root, DataTable master,
                                       string tableName,
                                       DataTableType tableType,
                                       IEnumerable <IDataField> objectFields, IDataField memberField)
 {
     // memberField.GetPropertyType()就是集合类型,中间表的objectType是集合类型
     return(Create(root, master, memberField.GetPropertyType(), master.IsSnapshot, tableType, tableName, objectFields, memberField));
 }
Esempio n. 5
0
 /// <summary>Gets a specific <see cref="DataTable"/> object.
 /// </summary>
 /// <param name="tableName">The name of the table.</param>
 /// <param name="dataTableType">The type of the tables to take into account.</param>
 /// <returns>A <see cref="DataTable"/> with the desired name.</returns>
 /// <exception cref="ArgumentException">Thrown, if no table available with the desired name.</exception>
 public DataTable GetDataTable(IdentifierString tableName, DataTableType dataTableType = DataTableType.Single)
 {
     if (TryGetDataTable(tableName, out DataTable value, dataTableType) == true)
     {
         return(value);
     }
     throw new ArgumentException(String.Format(ExceptionMessages.TableNameUnknown, (String)tableName), (String)tableName);
 }
Esempio n. 6
0
        //internal static DataTable Create(DataTable root, DataTable master, Type objectType, DataTableType tableType, IDataField memberField)
        //{
        //    var objectFields = DataModel.GetObjectFields(objectType, master.IsSnapshot);
        //    return Create(root, master, objectType, master.IsSnapshot, tableType, objectFields, memberField);
        //}


        internal static DataTable CreateSnapshot(Type objectType, IEnumerable <IDataField> objectFields)
        {
            if (!DomainObject.IsAggregateRoot(objectType))
            {
                throw new SnapshotTargetException();
            }
            DataTableType tableType = DataTableType.AggregateRoot;

            return(Create(null, null, objectType, true, tableType, objectFields, null));
        }
Esempio n. 7
0
        internal static DataTable Create(Type objectType, IEnumerable <IDataField> objectFields)
        {
            DataTableType tableType = DataTableType.AggregateRoot;

            if (DomainObject.IsAggregateRoot(objectType))
            {
                tableType = DataTableType.AggregateRoot;
                return(Create(null, null, objectType, false, tableType, objectFields, null));
            }
            throw new DomainDrivenException(string.Format(Strings.PersistentObjectError, objectType.FullName));
        }
Esempio n. 8
0
        public static bool HasData(DataTableType type)
        {
            switch (type)
            {
            case DataTableType.Language: return(languageDataTableProvider.HasData);

            case DataTableType.Region: return(regionDataTableProvider.HasData);

            default:
                throw new ArgumentException("unknown type: " + type);
            }
        }
Esempio n. 9
0
 private void SetDataTableFromPSCustomObject(PSObject psObject)
 {
     _resultDataTable = new DataTable();
     foreach (var prop in psObject.Properties)
     {
         if (Type.GetType(prop.TypeNameOfValue) != null)
         {
             _resultDataTable.Columns.Add(prop.Name, Type.GetType(prop.TypeNameOfValue));
         }
     }
     _dataTableType = DataTableType.PSCustomObject;
 }
Esempio n. 10
0
        public static bool HaveData(DataTableType type)
        {
            switch (type)
            {
            case DataTableType.LANG: return(LangDataTables.impl is ICUDataTables);

            case DataTableType.REGION: return(RegionDataTables.impl is ICUDataTables);

            default:
                throw new ArgumentException("unknown type: " + type);
            }
        }
Esempio n. 11
0
        private DataTable(Type objectType,
                          bool isSnapshot,
                          DataTable chainRoot,
                          DataTable master,
                          DataTableType type,
                          string name,
                          IEnumerable <IDataField> tableFields,
                          IEnumerable <IDataField> objectFields,
                          IDataField memberField)
        {
            this.UniqueKey = GetUniqueKey(memberField, chainRoot?.Name, name);
            AddBuildtimeIndex(this);
            if (memberField != null)
            {
                memberField.Table = this;
            }


            this.Type = type;

            this.ChainRoot   = chainRoot;
            this.Master      = master;
            this.MemberField = memberField;
            this.Root        = FindActualRoot(chainRoot);
            InitObjectType(objectType, memberField?.Tip);

            this.Chain      = this.MemberField == null ? ObjectChain.Empty : new ObjectChain(this.MemberField);
            this.IsSnapshot = isSnapshot;

            this.IsMultiple = memberField == null ? false : memberField.IsMultiple;

            this.Name   = name;
            this.Fields = TidyFields(tableFields);

            this.ObjectFields = objectFields;
            this.PropertyTips = GetPropertyTips();
            InitDerived();
            InitConnectionName();
            InitTableIdName();
            InitChilds();
            InitDynamic();
            this.Mapper = DataMapperFactory.Create(this.ObjectType);
            //这里触发,是为了防止程序员在程序启动时手工初始化,但会遗漏动态表的初始化
            //所以在表构造的时候主动创建
            this.Build();
        }
Esempio n. 12
0
        private static DataTable Create(DataTable root, DataTable master,
                                        Type objectType, bool isSnapshot, DataTableType tableType,
                                        string tableName, IEnumerable <IDataField> objectFields, IDataField memberField)
        {
            //补全memberField信息
            if (memberField != null)
            {
                if (memberField.ParentMemberField == null)
                {
                    memberField.ParentMemberField = master?.MemberField;
                }

                if (memberField.MasterTableName == null)
                {
                    memberField.MasterTableName = master?.Name;
                }

                if (memberField.TableName == null)
                {
                    memberField.TableName = tableName;
                }
            }

            var table = GetBuildtimeIndex(memberField, root?.Name, tableName);

            if (table != null)
            {
                return(table);               //防止死循环
            }
            var copyFields = objectFields.ToList();
            //获取字段信息
            var tableFields = GetTableFields(copyFields); //得到表需要存储的字段集合

            //得到表和子表信息
            table = new DataTable(objectType,
                                  isSnapshot,
                                  root,
                                  master,
                                  tableType,
                                  tableName,
                                  tableFields,
                                  objectFields,
                                  memberField);
            return(table);
        }
Esempio n. 13
0
        public static IUsingDataTable Create(DataTableType type)
        {
            IUsingDataTable usingDataTable = null;

            switch (type)
            {
            case DataTableType.DataBase:
                usingDataTable = new UsingDataBaseTable();
                break;

            case DataTableType.CSV:
                break;

            default:
                break;
            }

            return(usingDataTable);
        }
        /// <summary>
        ///     Confirms the application library field value.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="dataTableType">Type of the data table.</param>
        /// <param name="packageId">The package identifier.</param>
        /// <param name="entityUid">The entity upgrade id.</param>
        /// <param name="fieldUid">The field upgrade id.</param>
        /// <param name="value">The value.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">context</exception>
        /// <exception cref="System.ArgumentException">
        ///     @Invalid TenantId;tenantId
        ///     or
        ///     @Invalid EntityUid;entityUid
        /// </exception>
        public static bool ConfirmAppLibraryFieldValue(DatabaseContext context, DataTableType dataTableType, Guid packageId, Guid entityUid, Guid fieldUid, object value)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            if (packageId == Guid.Empty)
            {
                throw new ArgumentException(@"Invalid PackageId", "packageId");
            }

            if (entityUid == Guid.Empty)
            {
                throw new ArgumentException(@"Invalid EntityUid", "entityUid");
            }

            string query = string.Format("SELECT d.Data FROM AppData_{0} d WHERE d.AppVerUid = @appVerUid AND d.EntityUid = @entityUid AND d.FieldUid = @fieldUid", dataTableType);

            using (IDbCommand command = context.CreateCommand(query))
            {
                context.AddParameter(command, "@appVerUid", DbType.Guid, packageId);
                context.AddParameter(command, "@entityUid", DbType.Guid, entityUid);
                context.AddParameter(command, "@fieldUid", DbType.Guid, fieldUid);

                object result = command.ExecuteScalar( );

                if (result == null || result == DBNull.Value)
                {
                    if (value == null || value == DBNull.Value)
                    {
                        return(true);
                    }

                    return(false);
                }

                return(result.Equals(value));
            }
        }
Esempio n. 15
0
        /// <summary>Gets a specific <see cref="DataTable"/> object.
        /// </summary>
        /// <param name="tableName">The name of the table.</param>
        /// <param name="value">The <see cref="DataTable"/> and its name in its <see cref="IdentifierString"/> representation (output).</param>
        /// <param name="dataTableType">The type of the tables to take into account.</param>
        /// <returns>A value indicating whether <paramref name="value"/> contains valid data.</returns>
        public bool TryGetDataTable(IdentifierString tableName, out DataTable value, DataTableType dataTableType = DataTableType.Single)
        {
            if (dataTableType.HasFlag(DataTableType.Single) == true)
            {
                if (m_Tables.TryGetValue(tableName, out value) == true)
                {
                    return(true);
                }
            }
            if (dataTableType.HasFlag(DataTableType.Parent) == true)
            {
                if (m_ParentChildTables.TryGetValue(tableName, out InfoOutputParentChildDataTable parentChildDataTable) == true)
                {
                    value = parentChildDataTable.ParentDataTable;
                    return(true);
                }
            }
            if (dataTableType.HasFlag(DataTableType.Child) == true)
            {
                int index = tableName.IDString.IndexOf(ParentChildTableNameSeparator);
                if (index >= 0)
                {
                    string parentTableName = tableName.IDString.Substring(0, index);
                    string childTableName  = tableName.IDString.Substring(index + ParentChildTableNameSeparator.Length, tableName.IDString.Length - index - ParentChildTableNameSeparator.Length);

                    if (m_ParentChildTables.TryGetValue(parentTableName, out InfoOutputParentChildDataTable parentChildDataTable) == true)
                    {
                        if (parentChildDataTable.ChildDataTable.TableName.ToIDString() == childTableName.ToIDString())
                        {
                            value = parentChildDataTable.ChildDataTable;
                            return(true);
                        }
                    }
                }
            }
            value = null;
            return(false);
        }
Esempio n. 16
0
 /// <summary>Gets the <see cref="System.Data.DataTable"/> objects with homogeneous informations, and the table name in its <see cref="IdentifierString"/> representation.
 /// </summary>
 /// <param name="dataTableType">The type of the tables to take into account.</param>
 /// <returns>The tables and table names.</returns>
 /// <remarks>The table name of an <see cref="DataTable"/> object can be changed.</remarks>
 public IEnumerable <Tuple <IdentifierString, DataTable> > GetDataTables(DataTableType dataTableType = DataTableType.Single)
 {
     if (dataTableType.HasFlag(DataTableType.Single) == true)
     {
         foreach (var namedTable in m_Tables.NamedValues)
         {
             yield return(namedTable);
         }
     }
     if (dataTableType.HasFlag(DataTableType.Parent) == true)
     {
         foreach (var namedParentChildTables in m_ParentChildTables.NamedValues)
         {
             yield return(Tuple.Create(namedParentChildTables.Item1, namedParentChildTables.Item2.ParentDataTable));
         }
     }
     if (dataTableType.HasFlag(DataTableType.Child) == true)
     {
         foreach (var namedParentChildTables in m_ParentChildTables.NamedValues)
         {
             yield return(Tuple.Create(IdentifierString.Create(namedParentChildTables.Item2.ParentDataTable.TableName + ParentChildTableNameSeparator + namedParentChildTables.Item2.ChildDataTable.TableName), namedParentChildTables.Item2.ChildDataTable));
         }
     }
 }
Esempio n. 17
0
 /// <summary>Gets the table names.
 /// </summary>
 /// <param name="dataTableType">The type of the tables to take into account.</param>
 /// <returns>The table names.</returns>
 public IEnumerable <string> GetDataTableNames(DataTableType dataTableType = DataTableType.Single)
 {
     if (dataTableType.HasFlag(DataTableType.Single) == true)
     {
         foreach (var tableName in m_Tables.Names)
         {
             yield return(tableName);
         }
     }
     if (dataTableType.HasFlag(DataTableType.Parent) == true)
     {
         foreach (var namedParentChildTables in m_ParentChildTables.NamedValues)
         {
             yield return((String)namedParentChildTables.Item1);
         }
     }
     if (dataTableType.HasFlag(DataTableType.Child) == true)
     {
         foreach (var namedParentChildTables in m_ParentChildTables.NamedValues)
         {
             yield return(namedParentChildTables.Item2.ParentDataTable.TableName + ParentChildTableNameSeparator + namedParentChildTables.Item2.ChildDataTable.TableName);
         }
     }
 }
Esempio n. 18
0
        public static void ReadCSV(this DataTable dt, string path, string token)
        {
            System.Collections.Generic.IEnumerator <CSV.Row> iterator = CSV.Read(path, token).GetEnumerator();

            // System.Data.DataTable dt = new System.Data.DataTable();
            // 第一行
            // iterator.MoveNext();
            // 第二行
            iterator.MoveNext();
            CSV.Row rowNames = iterator.Current;

            // 第三行
            iterator.MoveNext();
            CSV.Row rowTypes = iterator.Current;

            if (rowTypes.Fields.Length != rowNames.Fields.Length)
            {
                throw new Exception(
                          string.Format(
                              "名稱與型別數量不符: RowNameCount={0},RowTypeCount={1}",
                              rowNames.Fields.Length,
                              rowTypes.Fields.Length));
            }

            string[] defaultValues = new string[rowTypes.Fields.Length];
            for (int i = 0; i < rowNames.Fields.Length; ++i)
            {
                string        name    = rowNames.Fields[i];
                string        strType = rowTypes.Fields[i];
                DataTableType result  = (from ddt in DataTableType.Types where ddt.Name == strType select ddt).FirstOrDefault();
                defaultValues[i] = result.Default;
                if (result != null)
                {
                    DataColumn dc = new DataColumn(name, result.Type);

                    dt.Columns.Add(dc);
                }
                else
                {
                    throw new Exception("無效的型別:" + strType);
                }
            }

            int rowCount = rowNames.Fields.Length;

            while (iterator.MoveNext())
            {
                CSV.Row  row    = iterator.Current;
                string[] fields = row.Fields;

                if (fields.Length == rowCount)
                {
                    DataRow dtRow = dt.NewRow();
                    int     i     = 0;
                    foreach (string name in rowNames.Fields)
                    {
                        string field = fields[i] == string.Empty
                                        ? defaultValues[i]
                                        : fields[i];
                        dtRow[name] = field;
                        ++i;
                    }

                    dt.Rows.Add(dtRow);
                }
                else
                {
                    throw new Exception(
                              string.Format(
                                  "資料欄位與名稱數量不符: Index={0},RowCount={1},FieldCount={2}",
                                  row.Index,
                                  rowCount,
                                  fields.Length));
                }
            }
        }
        /// <summary>
        ///     Confirms the tenant field value.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="tenantId">The tenant identifier.</param>
        /// <param name="dataTableType">Type of the data table.</param>
        /// <param name="entityUid">The entity upgrade id.</param>
        /// <param name="fieldUid">The field upgrade id.</param>
        /// <param name="value">The value.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">context</exception>
        /// <exception cref="System.ArgumentException">
        ///     @Invalid TenantId;tenantId
        ///     or
        ///     @Invalid EntityId;entityId
        /// </exception>
        public static bool ConfirmTenantFieldValue(DatabaseContext context, long tenantId, DataTableType dataTableType, Guid entityUid, Guid fieldUid, object value)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            if (tenantId < 0)
            {
                throw new ArgumentException(@"Invalid TenantId", "tenantId");
            }

            if (entityUid == Guid.Empty)
            {
                throw new ArgumentException(@"Invalid EntityUid", "entityUid");
            }

            string query = string.Format("SELECT d.Data FROM Data_{0} d JOIN Entity e ON d.EntityId = e.Id AND d.TenantId = e.TenantId JOIN Entity f ON d.FieldId = f.Id AND d.TenantId = f.TenantId WHERE d.TenantId = @tenantId AND e.UpgradeId = @entityUid AND f.UpgradeId = @fieldUid", dataTableType);

            using (IDbCommand command = context.CreateCommand(query))
            {
                context.AddParameter(command, "@tenantId", DbType.Int64, tenantId);
                context.AddParameter(command, "@entityUid", DbType.Guid, entityUid);
                context.AddParameter(command, "@fieldUid", DbType.Guid, fieldUid);

                object result = command.ExecuteScalar( );

                if (result == null || result == DBNull.Value)
                {
                    if (value == null || value == DBNull.Value)
                    {
                        return(true);
                    }

                    return(false);
                }

                return(result.Equals(value));
            }
        }
Esempio n. 20
0
 // ===========================================================================
 // = Construction
 // ===========================================================================
 public SpatiaLiteDataTable(IDataSource inSource, String inName, DataTableType inType)
 {
     Source = inSource;
     Name = inName;
     Type = inType;
 }
Esempio n. 21
0
 private void OutputDataReady(object sender, EventArgs e)
 {
     try
     {
         PipelineReader <PSObject> reader = sender as PipelineReader <PSObject>;
         while (reader.Count > 0)
         {
             var r = _pipeline.Output.Read();
             if (r == null)
             {
                 // no-op
             }
             else if (r.BaseObject is System.Data.DataRow)
             {
                 DataRow row = (DataRow)r.BaseObject;
                 if (_resultDataTable == null)
                 {
                     _resultDataTable = row.Table.Clone();
                     _dataTableType   = DataTableType.DataRow;
                 }
                 if (_dataTableType == DataTableType.DataRow)
                 {
                     _resultDataTable.ImportRow(row);
                 }
             }
             else if (r.BaseObject is System.Management.Automation.PSCustomObject)
             {
                 if (_resultDataTable == null)
                 {
                     SetDataTableFromPSCustomObject(r);
                     _dataTableType = DataTableType.PSCustomObject;
                 }
                 if (_dataTableType == DataTableType.PSCustomObject)
                 {
                     ImportRowFromPSCustomObject(r);
                 }
             }
             // Always output the object to string
             else
             {
                 _resultStringBuilder.AppendLine(r.ToString());
             }
         }
     }
     catch (Exception ex)
     {
         _taskCompleted = true;
         _endTime       = DateTime.Now;
         _taskStatus    = Status.FAILED;
         string logMessage = string.Format(@"SCRIPT FAILED. Time:[{0:MM/dd/yy HH:mm:ss}] Duration:[{1}] Error:{2}", DateTime.Now, this.Duration.ToString(@"hh\:mm\:ss"), ex.ToString());
         _resultStringBuilder.Append(logMessage);
         return;
     }
     if (_pipeline.PipelineStateInfo.State == PipelineState.Running)
     {
         _taskCompleted = false;
         return;
     }
     else
     {
         if (_taskStatus == Status.RUNNING)
         {
             _taskStatus = Status.COMPLETED;
         }
         _taskCompleted = true;
         _endTime       = DateTime.Now;
         string logMessage = string.Format("SCRIPT {0}. Time:[{1:MM/dd/yy HH:mm:ss}] Duration:[{2}]", TaskStatus.ToString(), DateTime.Now, this.Duration.ToString(@"hh\:mm\:ss"));
         _resultStringBuilder.Append(logMessage);
         _runspace.Close();
         _runspace.Dispose();
         return;
     }
 }
Esempio n. 22
0
        public static CharacterBot Create(CharacterType charType, PlatFormType platformType, DataTableType dataTableType)
        {
            ICharacter      character      = Character.Create(charType);
            IPlatform       platform       = Platform.Create(platformType);
            IUsingDataTable usingDataTable = UsingDataTable.Create(dataTableType);
            var             characterBot   = new CharacterBot(character, platform, usingDataTable);

            characterBot.Initializer().Wait();

            return(characterBot);
        }
Esempio n. 23
0
 /// <summary>Gets a specific <see cref="DataTable"/> object.
 /// </summary>
 /// <param name="tableName">The name of the table.</param>
 /// <param name="value">The <see cref="DataTable"/>  (output).</param>
 /// <param name="dataTableType">The type of the tables to take into account.</param>
 /// <returns>A value indicating whether <paramref name="value"/> contains valid data.</returns>
 public bool TryGetDataTable(string tableName, out DataTable value, DataTableType dataTableType = DataTableType.Single)
 {
     return(TryGetDataTable(IdentifierString.Create(tableName), out value, dataTableType));
 }