Beispiel #1
0
        public async Task <List <CloudEntity> > GetCloudEntities1(
            DatastoreService dataStore, string projectId,
            KindName kindName, Offset offset, ResultsLimit skip, DateTime dateAdded)
        {
            var res = dataStore.Projects.RunQuery(
                getQueryRequest(dateAdded, kindName), projectId);

            var response = await res.ExecuteAsync();

            var entityResults = response.Batch.EntityResults;

            var toReturn = new List <CloudEntity>();

            foreach (var entityResult in response.Batch.EntityResults)
            {
                var entity      = entityResult.Entity;
                var path        = entity.Key.Path.FirstOrDefault();
                var cloudEntity = new CloudEntity()
                {
                    FormName     = path.Kind,
                    Id           = path.Name,
                    EntityId     = entity.Properties["entityid"].StringValue,
                    DataBlob     = entity.Properties["datablob"].StringValue,
                    KindMetaData = entity.Properties["kindmetadata"].StringValue,

                    //EditDay = Convert.ToInt32( entity.Properties["editday"].IntegerValue),
                    //EditDate = Convert.ToInt64(entity.Properties["editdate"].IntegerValue),

                    //{ "editday", new Value() { IntegerValue = now.toYMDInt() } },
                    //{ "editdate", new Value() { IntegerValue = now.ToBinary() } },

                    //DateAdded = Convert.ToDateTime(
                    //    entity.Properties["dateadded"].TimestampValue)
                };

                if (entity.Properties.ContainsKey("editdate"))
                {
                    var editDate = entity.Properties["editdate"].IntegerValue;
                    cloudEntity.EditDate = Convert.ToInt64(editDate);

                    var editDay = entity.Properties["editday"].IntegerValue;
                    cloudEntity.EditDay = Convert.ToInt32(editDay);
                }
                else
                {
                    //use field date added
                    var entityDate = Convert.ToDateTime(
                        entity.Properties["dateadded"].TimestampValue);
                    var editday = entityDate.toYMDInt();
                    cloudEntity.EditDay = editday;

                    var local    = entityDate.ToLocalTime();
                    var editdate = local.ToBinary();
                    cloudEntity.EditDate = editdate;
                }

                toReturn.Add(cloudEntity);
            }
            return(toReturn);
        }
Beispiel #2
0
        public async Task <int> doServerSync(KindName kindName, string projectId, DatastoreService datastore)
        {
            var  offset          = 0;
            var  skip            = 500;
            var  lastDateForKind = getMostRecentDate(kindName);
            bool hasData;

            do
            {
                var cloudEntities = await GetCloudEntities1(datastore,
                                                            projectId,
                                                            kindName,
                                                            new Offset(offset),
                                                            new ResultsLimit(skip),
                                                            lastDateForKind
                                                            );

                hasData = cloudEntities.Count > 0;

                //we save this result
                addToProcessingQueue(cloudEntities);
                offset += skip;
            } while (hasData);
            return(0);
        }
Beispiel #3
0
 protected override void doPreCreate(Bundle savedInstanceState)
 {
     IsFirstPage     = true;
     _kindName       = new KindName(Constants.KIND_LSP_MAIN);
     myView          = Resource.Layout.ilsp_main1;
     myNavController = new lspMainControl();
 }
Beispiel #4
0
 protected override void doPreCreate(Bundle savedInstanceState)
 {
     IsFirstPage     = true;
     _kindName       = new KindName(Constants.KIND_VMMC_POSTOP);
     myView          = Resource.Layout.vmmc_postop1;
     myNavController = new VmmcPostOperationControl();
 }
Beispiel #5
0
 protected override void doPreCreate(Bundle savedInstanceState)
 {
     IsFirstPage     = true;
     _kindName       = new KindName(Constants.KIND_VMMC_REGANDPROCEDURE);
     myView          = Resource.Layout.vmmc_regandproc1;
     myNavController = new VmmcRegAndProcControl();
 }
 protected override void doPreCreate(Bundle savedInstanceState)
 {
     IsFirstPage     = true;
     _kindName       = new KindName(Constants.KIND_PPX_CLIENTEVAL);
     myView          = Resource.Layout.prepexreg1;
     myNavController = new PP_ClientEvalControl();
 }
 protected override void doPreCreate(Bundle savedInstanceState)
 {
     IsFirstPage     = true;
     _kindName       = new KindName(Constants.KIND_PPX_DEVICEREMOVAL);
     myView          = Resource.Layout.prepexdevremoval1;
     myNavController = new PP_DeviceRemovalControl();
 }
Beispiel #8
0
 public TableStore(string tableName) : base(tableName)
 {
     _tableName    = new KindName(tableName);
     _db           = new LocalDB();
     createKindSql = "create table if not exists {0}(id nvarchar(32) primary key, datablob nvarchar(500));";
     insertSql     = "insert or replace into {0}(id, datablob) values (@id, @datablob)";
 }
 protected override void doPreCreate(Bundle savedInstanceState)
 {
     _kindName       = new KindName(Constants.KIND_PPX_UNSCHEDULEDVISIT);
     myView          = Resource.Layout.prepexunscheduled2;
     myNavController = new PP_UnscheduledVisitControl()
     {
     };
 }
Beispiel #10
0
        public async Task <bool> addToProcessingQueue(KindName kindName, List <CloudEntity> cloudEntities)
        {
            var kindStore = new CloudLocalStore(kindName);

            foreach (var entity in cloudEntities)
            {
                kindStore.Update(entity);
            }
            return(true);
        }
Beispiel #11
0
        private long getLastSyncedDateForKind(KindName kindName)
        {
            var db     = new CloudLocalStore(kindName);
            var entity = db.GetLatestEntity();

            if (entity == null || string.IsNullOrWhiteSpace(entity.Id))
            {
                return(new DateTime(2016, 07, 08, 0, 0, 0, 1, DateTimeKind.Local).ToBinary());
            }
            return(entity.EditDate);
        }
Beispiel #12
0
 public GeneralEntityDataset asGeneralEntity(KindName name)
 {
     return(new GeneralEntityDataset()
     {
         Id = this.Id,
         EntityId = this.EntityId,
         KindMetaData = this.KindMetaData,
         FormName = name.Value,
         FieldValues = ToValuesList()
     });
 }
        protected Type[] getActivitiesForKind(KindName kindName, List <BaseWorkflowController> workflowControllers)
        {
            var kindDefinitions = getKindDefinition(workflowControllers);
            var kindDefinition  = kindDefinitions.Where(t => t.Matches(kindName)).FirstOrDefault();

            if (kindDefinition == null)
            {
                return(null);
            }

            return(kindDefinition.KindViews.Select(t => t.ViewActivity).ToArray());
        }
Beispiel #14
0
        public FetchCloudDataWorker(DatastoreService dataStore, string projectId, KindName kindName, ResultsLimit skip, long editDate, bool fetchOldData)
        {
            query = getQueryRequest1(skip, editDate, fetchOldData, kindName);
            res   = dataStore.Projects.RunQuery(query
                                                , projectId);

            _dataStore    = dataStore;
            _projectId    = projectId;
            _kindName     = kindName;
            _skip         = skip;
            _editDate     = editDate;
            _fetchOldData = fetchOldData;
        }
Beispiel #15
0
        public RunQueryRequest getQueryRequest(DateTime dateAdded, KindName kindName = null)
        {
            var kindExpression = kindName == null ?
                                 new List <KindExpression>() :
                                 new List <KindExpression> {
                new KindExpression()
                {
                    Name = kindName.Value
                }
            };

            return(new RunQueryRequest()
            {
                Query = new Query()
                {
                    Limit = 10,
                    Offset = 0,
                    Filter = new Google.Apis.Datastore.v1.Data.Filter()
                    {
                        PropertyFilter = new PropertyFilter()
                        {
                            Property = new PropertyReference()
                            {
                                Name = DATEADDED
                            },
                            Value = new Value()
                            {
                                TimestampValue = dateAdded
                            },
                            Op = ">="
                        }
                    },
                    Order = new List <PropertyOrder>()
                    {
                        new PropertyOrder()
                        {
                            Direction = "asc",
                            Property = new PropertyReference()
                            {
                                Name = DATEADDED
                            }
                        }
                    },
                    Kind = kindExpression
                },
                //GqlQuery = new GqlQuery() { QueryString = "select __key__, cardserial From jhpsystems" }
                ReadOptions = new ReadOptions()
                {
                }
            });
        }
 public CloudLocalStore(KindName tableName) : base(tableName.Value)
 {
     createKindSql = "if object_id('{0}') is null create table {0}(recordid int identity(1,1), id nvarchar(32) primary key, entityid nvarchar(32), kindmetadata nvarchar(1000), editday int, editdate bigint, datablob nvarchar(max));";
     insertSql     =
         @"
         begin tran
            update {0} with (serializable) set entityid=@entityid,kindmetadata=@kindmetadata,editday=@editday, editdate=@editdate,datablob =@datablob
            where id = @id
            if @@rowcount = 0
            begin
               insert into {0} (id,entityid,kindmetadata,editday,editdate,datablob)values(@id,@entityid,@kindmetadata,@editday,@editdate,@datablob);
            end
         commit tran;
         select recordid from {0} where id = @id;
         ";
     //fix above to include editday and editdate
 }
Beispiel #17
0
            public KindName GetKindName(uint i)
            {
                if (i >= nNames)
                {
                    throw new ArgumentOutOfRangeException();
                }

                // find the offset
                uint offset = m_offsetGlyphInfo + (uint)FieldOffsets.unicodes + (uint)n16BitUnicodes*2 + 2;
                for (int j=0; j<i; j++)
                {
                    KindName knTemp = new KindName(offset, m_bufTable);
                    offset += knTemp.GetLength();
                }

                return new KindName(offset, m_bufTable);
            }
Beispiel #18
0
        public async Task <int> fetchRecordsForKind(KindName kindName, string projectId, DatastoreService datastore)
        {
            var skip            = 50;
            var lastDateForKind = getLastSyncedDateForKind(kindName);

            var cloudEntities = await new FetchCloudDataWorker(datastore,
                                                               projectId,
                                                               kindName,
                                                               new ResultsLimit(skip),
                                                               lastDateForKind, this.FetchOldData)
                                .beginFetchCloudData();

            if (cloudEntities.Count > 0)
            {
                var savedToLocal = await addToProcessingQueue(kindName, cloudEntities);
            }
            return(0);
        }
Beispiel #19
0
            public KindName GetKindName(uint i)
            {
                if (i >= nNames)
                {
                    throw new ArgumentOutOfRangeException();
                }

                // find the offset
                uint offset = m_offsetGlyphInfo + (uint)FieldOffsets.unicodes + (uint)n16BitUnicodes * 2 + 2;

                for (int j = 0; j < i; j++)
                {
                    KindName knTemp = new KindName(offset, m_bufTable);
                    offset += knTemp.GetLength();
                }

                return(new KindName(offset, m_bufTable));
            }
        public static void RebuildClientSummaryIndexes <T, U>(KindName name) where T : class, ILocalDbEntity, new() where U : ClientLookupProvider <T>, new()
        {
            var db = new LocalDB3().DB;

            db.DeleteAll <T>();
            db.DropTable <T>();
            db.CreateTable <T>();

            var vmmcReg      = new TableStore(name.Value).GetAllBlobs();
            var allSummaries = new List <T>();

            foreach (var reg in vmmcReg)
            {
                var entity    = Newtonsoft.Json.JsonConvert.DeserializeObject <GeneralEntityDataset>(reg.Value);
                var mySummary = new T().Load(entity) as T;
                allSummaries.Add(mySummary);
            }
            new U().InsertOrReplace(allSummaries);
        }
        internal List <T> GetUnsyncedLocalEntities(KindName cloudTable, KindName localTable)
        {
            var diffSql = string.Format(
                @"
select a.* From {0} a join 
(
	select id, editdate from {0} except select id, editdate from {1}
	)b on a.Id = b.id
", cloudTable.Value, localTable.Value);

            var toReturn = new List <T>();

            using (var conn = new SqlConnection(_db.ConnectionString))
                using (var command = new SqlCommand(string.Format(insertSql, _tableName.Value), conn))
                {
                    try
                    {
                        conn.Open();
                        command.CommandText = diffSql;
                        using (var reader = command.ExecuteReader())
                        {
                            toReturn = getEntities(reader);
                        }
                    }
                    catch (SqlException ex)
                    {
                        if (MainLogger != null)
                        {
                            MainLogger.Log(string.Format(
                                               "Error opening database connection{0}{1}", Environment.NewLine, ex.ToString()));
                        }
                        return(null);
                    }
                    conn.Close();
                }
            return(toReturn);
        }
 protected override void doPreCreate(Bundle savedInstanceState)
 {
     _kindName       = new KindName(Constants.KIND_PPX_CLIENTEVAL);
     myView          = Resource.Layout.DataEntryEnd;
     myNavController = new PP_ClientEvalControl();
 }
Beispiel #23
0
        private RunQueryRequest getQueryRequest(ResultsLimit skip, long editDate, bool fetchOldData, KindName kindName = null)
        {
            List <GqlQueryParameter> queryParams = null;
            var queryString = string.Empty;

            if (fetchOldData)
            {
                queryString = string.Format(
                    "select * from {0} where dateadded > @1 order by dateadded ASC limit @2",
                    kindName.Value,
                    skip.Value
                    );
                queryParams = new List <GqlQueryParameter>()
                {
                    new GqlQueryParameter()
                    {
                        Value =
                            new Value()
                        {
                            TimestampValue =
                                DateTime.FromBinary(editDate)
                        }
                    },
                    new GqlQueryParameter()
                    {
                        Value =
                            new Value()
                        {
                            IntegerValue = skip.Value
                        }
                    }
                };
            }
            else
            {
                queryString = string.Format(
                    "select * from {0} where editdate > @1 order by editdate ASC limit @2",
                    kindName.Value,
                    skip.Value
                    );
                queryParams = new List <GqlQueryParameter>()
                {
                    new GqlQueryParameter()
                    {
                        Value =
                            new Value()
                        {
                            IntegerValue = editDate
                        }
                    },
                    new GqlQueryParameter()
                    {
                        Value =
                            new Value()
                        {
                            IntegerValue = skip.Value
                        }
                    }
                };
            }

            return(new RunQueryRequest()
            {
                GqlQuery = new GqlQuery()
                {
                    QueryString = queryString,
                    //AllowLiterals = true,
                    PositionalBindings = queryParams,
                },
                ReadOptions = new ReadOptions()
                {
                }
            });
        }
 internal KindKey Save(KindKey entityId, KindName entityKind, KindItem dataToSave)
 {
     //we save to both kindregister and entity table
     return(new TableStore(entityKind).Update(entityId, dataToSave));
 }
Beispiel #25
0
 /// <summary>
 /// Creates new instance of a Kind store, which allows Get, Put, Delete and Update
 /// </summary>
 /// <param name="tableName">Kind name</param>
 public TableStore(KindName tableName)
 {
     _tableName = tableName;
     _db        = new LocalDB();
 }
Beispiel #26
0
        private RunQueryRequest getQueryRequest1(ResultsLimit skip, long editDate, bool fetchOldData, KindName kindName)
        {
            PropertyFilter filter           = null;// dateFilter =
            string         datePropertyName = string.Empty;

            if (fetchOldData)
            {
                datePropertyName = DATEADDED;
                filter           = new PropertyFilter()
                {
                    Property = new PropertyReference()
                    {
                        Name = DATEADDED
                    },
                    Value = new Value()
                    {
                        TimestampValue = DateTime.FromBinary(editDate)
                    },
                    Op = "GREATER_THAN"
                };
            }
            else
            {
                datePropertyName = EDITDATE;
                filter           = new PropertyFilter()
                {
                    Property = new PropertyReference()
                    {
                        Name = EDITDATE
                    },
                    Value = new Value()
                    {
                        IntegerValue = editDate
                    },
                    //Op = "GREATER_THAN",
                    //Op = "GREATER_THAN_OR_EQUAL",
                    Op = "GREATER_THAN"
                };
            }

            return(new RunQueryRequest()
            {
                Query = new Query()
                {
                    Filter = new Filter()
                    {
                        PropertyFilter = filter
                    },
                    Order = new List <PropertyOrder>()
                    {
                        new PropertyOrder()
                        {
                            Direction = "ASCENDING",
                            Property = new PropertyReference()
                            {
                                Name = datePropertyName
                            }
                        }
                    },
                    Kind = new List <KindExpression> {
                        new KindExpression()
                        {
                            Name = kindName.Value
                        }
                    },
                    Limit = skip.Value,
                }
                ,
                //GqlQuery = new GqlQuery()
                //{
                //    QueryString = queryString,
                //    AllowLiterals = true,
                //    PositionalBindings = queryParams
                //},
                ReadOptions = new ReadOptions()
                {
                }
            });
        }
 protected override void doPreCreate(Bundle savedInstanceState)
 {
     _kindName       = new KindName(Constants.KIND_PPX_POSTREMOVAL);
     myView          = Resource.Layout.prepexpostremoval2;
     myNavController = new PP_PostRemovalControl();
 }
 protected override void doPreCreate(Bundle savedInstanceState)
 {
     _kindName       = new KindName(Constants.KIND_PPX_DEVICEREMOVAL);
     myView          = Resource.Layout.DataEntryEnd;
     myNavController = new PP_DeviceRemovalControl();
 }
Beispiel #29
0
 public List <KindItem> GetAllBlobs(KindName entityKind)
 {
     return(new TableStore(entityKind).GetAllBlobs());
 }
Beispiel #30
0
        //select __key__,kindmetadata From appusers
        //select __key__, kindmetadata From `vmmc_regandproc` where dateadded
        //select __key__, dateadded From `appusers` where dateadded >= datetime('2016-08-01T00:00:01Z')
        //select * from appusers where dateadded > datetime('2016-08-16T00:00:00.1Z')
        //select __key__, dateadded From `appusers` where dateadded >=datetime('2016-08-16T00:00:00.01Z') limit 50 offset 0 order by dateadded asc
        //https://console.cloud.google.com/datastore/entities/query/gql?project=jhpzmb-vmmc-odk&ns=&kind=_GAE_MR_TaskPayload&gql=select%20*
        //Key(`__Stat_Total__`, 'total_entity_usage')
        //https://console.cloud.google.com/datastore/entities/edit?key=0%2F%7C19%2Fpp_client_devicerem%7C37%2Fname:5643a2ae27144cdaa1fe0d0e43b3864b&project=jhpzmb-vmmc-odk&ns=&kind=_GAE_MR_TaskPayload&gql=select%20*
        //https://console.cloud.google.com/datastore/entities/query/gql?project=jhpzmb-vmmc-odk&ns=&kind=_GAE_MR_TaskPayload&gql=select%20*%20from%20appusers
        //https://console.cloud.google.com/datastore/entities/edit?key=0%2F%7C8%2Fappusers%7C37%2Fname:524d91cffb024c7085148004cc47854c&project=jhpzmb-vmmc-odk&ns=&kind=_GAE_MR_TaskPayload&gql=select%20*%20from%20appusers
        //https://console.cloud.google.com/datastore/entities/query/gql?project=jhpzmb-vmmc-odk&ns=&kind=_AE_Backup_Information&gql=select%20*%20from%20appusers%20order%20by%20dateadded%20asc%20limit%20500%20offset%200%20where%20dateadded%20%3E%3D%20datetime(%272016-08-16T00:00:00.01Z%27)

        public DateTime getMostRecentDate(KindName kindName)
        {
            return(DateTime.MinValue);
        }
Beispiel #31
0
 public TableStore(string tableName)
 {
     _tableName = new KindName(tableName);
     _db        = new LocalDB();
 }