예제 #1
0
파일: Provider.cs 프로젝트: yourina/TizenFX
        private static string GetQuery(IntPtr handlePtr, SafeBundleHandle data, string where, OperationType type)
        {
            Interop.DataControl.SafeDataControlHandle handle = new Interop.DataControl.SafeDataControlHandle(handlePtr, false);
            string query = null;

            switch (type)
            {
            case OperationType.Select:
                break;

            case OperationType.Update:
                query = Interop.DataControl.CreateUpdateStatement(handle, data, where);
                break;

            case OperationType.Delete:
                query = Interop.DataControl.CreateDeleteStatement(handle, where);
                break;

            case OperationType.Insert:
                query = Interop.DataControl.CreateInsertStatement(handle, data);
                break;

            default:
                break;
            }
            handle.Dispose();

            return(query);
        }
예제 #2
0
            internal static void UnregisterCallback(Interop.DataControl.SafeDataControlHandle handle, string providerId)
            {
                int count;

                if (!_reqProviderList.ContainsKey(providerId))
                {
                    Log.Error(LogTag, "The provider id is not contained : " + providerId);
                    return;
                }

                _reqProviderList[providerId]--;
                count = _reqProviderList[providerId];
                if (count <= 0)
                {
                    _reqProviderList.Remove(providerId);

                    _mapResponseCallbacks.Remove(providerId);
                    Interop.DataControl.UnregisterMapResponse(handle);

                    _mapBulkResponseCallback.Remove(providerId);
                    Interop.DataControl.UnregisterMapBulkResponseCallback(handle);

                    _sqlResponseCallbacks.Remove(providerId);
                    Interop.DataControl.UnregisterSqlResponseCallback(handle);

                    _sqlBulkResponseCallback.Remove(providerId);
                    Interop.DataControl.UnregisterSqlBulkResponseCallback(handle);
                }
            }
예제 #3
0
        private static Provider GetProvider(IntPtr handlePtr)
        {
            Interop.DataControl.SafeDataControlHandle handle = new Interop.DataControl.SafeDataControlHandle(handlePtr, false);
            Provider provider = null;
            string   dataID;

            Interop.DataControl.DataControlGetDataId(handle, out dataID);
            if (dataID != null && _providerDict.ContainsKey(dataID))
            {
                provider = _providerDict[dataID];
                Log.Info(LogTag, "DataID :" + dataID + ", hash code : " + provider.GetHashCode().ToString());
            }
            handle.Dispose();

            return(provider);
        }
예제 #4
0
파일: Provider.cs 프로젝트: yourina/TizenFX
        private static string CreateSelectQuery(IntPtr handlePtr, string[] columnList, int columnCount, string where, string order, int pageNum, int countPerPage)
        {
            Interop.DataControl.SafeDataControlHandle handle = new Interop.DataControl.SafeDataControlHandle(handlePtr, false);
            string query = "SELECT";
            string dataId;

            if (columnList == null)
            {
                query += " * ";
            }
            else
            {
                for (int i = 0; i < columnCount; i++)
                {
                    if (i != 0)
                    {
                        query += ",";
                    }

                    query += " " + columnList[i];
                }
            }

            Interop.DataControl.DataControlGetDataId(handle, out dataId);
            query += " FROM " + dataId;
            if (where != null)
            {
                query += " WHERE " + where;
            }

            if (order != null)
            {
                query += " ORDER BY " + order;
            }

            if (pageNum != 0)
            {
                query += " LIMIT " + countPerPage + " OFFSET " + (countPerPage * (pageNum - 1));
            }
            handle.Dispose();
            return(query);
        }
예제 #5
0
            internal static void UnregisterCallback(Interop.DataControl.SafeDataControlHandle handle, string providerId)
            {
                int count;

                _reqProviderList[providerId]--;
                count = _reqProviderList[providerId];
                if (count <= 0)
                {
                    _reqProviderList.Remove(providerId);

                    _mapResponseCallbacks.Remove(providerId);
                    Interop.DataControl.UnregisterMapResponse(handle);

                    _mapBulkResponseCallback.Remove(providerId);
                    Interop.DataControl.UnregisterMapBulkResponseCallback(handle);

                    _sqlResponseCallbacks.Remove(providerId);
                    Interop.DataControl.UnregisterSqlResponseCallback(handle);

                    _sqlBulkResponseCallback.Remove(providerId);
                    Interop.DataControl.UnregisterSqlBulkResponseCallback(handle);
                }
            }
예제 #6
0
            internal static void RegisterCallback(Interop.DataControl.SafeDataControlHandle handle, string providerId)
            {
                ResultType ret;

                Interop.DataControl.SqlResponseCallbacks          sqlCallbacks;
                Interop.DataControl.SqlBulkInsertResponseCallback sqlBulkCallbacks;
                Interop.DataControl.MapResponseCallbacks          mapCallbacks;
                Interop.DataControl.MapBulkAddResponseCallback    mapBulkCallbacks;
                bool sqlRegistered = false;
                bool mapRegistered = false;

                if (_reqProviderList.ContainsKey(providerId))
                {
                    _reqProviderList[providerId]++;
                    Log.Error(LogTag, "The data control is already set");
                    return;
                }

                sqlCallbacks.Insert = new Interop.DataControl.SqlInsertResponseCallback(InsertResponse);
                sqlCallbacks.Select = new Interop.DataControl.SqlSelectResponseCallback(SelectResponse);
                sqlCallbacks.Update = new Interop.DataControl.SqlUpdateResponseCallback(UpdateResponse);
                sqlCallbacks.Delete = new Interop.DataControl.SqlDeleteResponseCallback(DeleteResponse);
                ret = Interop.DataControl.RegisterSqlResponseCallback(handle, ref sqlCallbacks, IntPtr.Zero);
                if (ret != ResultType.Success)
                {
                    Log.Error(LogTag, "Registering the sql callback function is failed : " + ret);
                }
                else
                {
                    _sqlResponseCallbacks.Add(providerId, sqlCallbacks);
                    sqlRegistered = true;
                }

                sqlBulkCallbacks = new Interop.DataControl.SqlBulkInsertResponseCallback(BulkInsertResponse);
                ret = Interop.DataControl.RegisterSqlBulkResponseCallback(handle, sqlBulkCallbacks, IntPtr.Zero);
                if (ret != ResultType.Success)
                {
                    Log.Error(LogTag, "Registering the sql bulk callback function is failed : " + ret);
                }
                else
                {
                    _sqlBulkResponseCallback.Add(providerId, sqlBulkCallbacks);
                }

                mapCallbacks.Add    = new Interop.DataControl.MapAddResponseCallback(MapAddResponse);
                mapCallbacks.Set    = new Interop.DataControl.MapSetResponseCallback(MapSetResponse);
                mapCallbacks.Get    = new Interop.DataControl.MapGetResponseCallback(MapGetResponse);
                mapCallbacks.Remove = new Interop.DataControl.MapRemoveResponseCallback(MapRemoveResponse);
                ret = Interop.DataControl.RegisterMapResponse(handle, ref mapCallbacks, IntPtr.Zero);

                if (ret != ResultType.Success)
                {
                    Log.Error(LogTag, "Registering the map callback function is failed : " + ret);
                }
                else
                {
                    _mapResponseCallbacks.Add(providerId, mapCallbacks);
                    mapRegistered = true;
                }

                mapBulkCallbacks = new Interop.DataControl.MapBulkAddResponseCallback(MapBulkAddResponse);
                ret = Interop.DataControl.RegisterMapBulkResponseCallback(handle, mapBulkCallbacks, IntPtr.Zero);
                if (ret != ResultType.Success)
                {
                    Log.Error(LogTag, "Registering the map bulk callback function is failed : " + ret);
                }
                else
                {
                    _mapBulkResponseCallback.Add(providerId, mapBulkCallbacks);
                }

                if (!mapRegistered && !sqlRegistered)
                {
                    ErrorFactory.ThrowException(ret, true, "Registering the response callback function is failed");
                }

                _reqProviderList.Add(providerId, 1);
            }