Пример #1
0
        /// <summary>
        /// upload the Live2D model to server
        /// </summary>
        /// <param name="filepath">Current live2D model.json file</param>
        public async Task UploadLive2D(string filepath)
        {
            var fileType = new MetadataChange();
            //setup compressor
            ModelCompressor comp = new ModelCompressor();
            string          data = null;
            await Task.Run(() =>
            {
                data = comp.CompressAsync(filepath).Result;
            });

            StorageReference moc3Path = Storage_ref.Child("VRP/" + CurrentUser.UserId + "/Live2D/" + Path.GetFileNameWithoutExtension(filepath) + "_model.json");

            isUploading          = true;
            fileType.ContentType = "application/json";

            await moc3Path.PutBytesAsync(System.Text.Encoding.UTF8.GetBytes(data), fileType).ContinueWith((Task <StorageMetadata> task) =>
            {
                Debug.Log("start uploading");
                if (task.IsFaulted || task.IsCanceled)
                {
                    Debug.Log(task.Exception.ToString());
                    // Uh-oh, an error occurred!
                    isUploading = false;
                }
                else
                {
                    metadata = task.Result;
                    Debug.Log("Finished uploading...");
                }
                isUploading = false;
            });
        }
Пример #2
0
        /// <summary>
        /// Moad model information from de compressed data
        /// </summary>
        /// <param name="data">Compressed byte data</param>
        public void LoadModelFromCompressor(byte[] data)
        {
            //set compressor
            var compressor = new ModelCompressor();
            var modelData  = new CompressedLive2D(compressor.DeCompress(Encoding.UTF8.GetString(data)));

            if (modelData != null)
            {
                //Load models
                ToModel(modelData);
            }
        }
Пример #3
0
        /// <summary>
        /// Moad model information from de compressed data
        /// </summary>
        /// <param name="data">Compressed data</param>
        public void LoadModelFromCompressor(string data)
        {
            //set compressor
            var compressor = new ModelCompressor();
            var modelData  = new CompressedLive2D(compressor.DeCompress(data));

            if (modelData != null)
            {
                //Load models
                ToModel(modelData);
            }
        }
Пример #4
0
        internal override void ApplyMigration(DbMigration migration, DbMigration lastMigration)
        {
            DebugCheck.NotNull(migration);

            var migrationMetadata = (IMigrationMetadata)migration;
            var compressor        = new ModelCompressor();

            var lastModel   = GetLastModel(lastMigration, migrationMetadata.Id);
            var targetModel = compressor.Decompress(Convert.FromBase64String(migrationMetadata.Target));

            if (migrationMetadata.Source != null)
            {
                var sourceModel
                    = compressor.Decompress(Convert.FromBase64String(migrationMetadata.Source));

                if (IsModelOutOfDate(sourceModel, lastMigration))
                {
                    base.AutoMigrate(
                        migrationMetadata.Id.ToAutomaticMigrationId(),
                        lastModel,
                        sourceModel,
                        downgrading: false);

                    lastModel = sourceModel;
                }
            }

            var migrationSchema = GetDefaultSchema(migration);
            var historyModel    = GetHistoryModel(migrationSchema);

            var systemOperations = Enumerable.Empty <MigrationOperation>();

            if (ReferenceEquals(lastModel, _emptyModel.Value) &&
                !base.HistoryExists())
            {
                systemOperations = _modelDiffer.Diff(lastModel, historyModel);
            }
            else
            {
                var lastMigrationSchema = GetLastDefaultSchema(migrationMetadata.Id);

                if (!string.Equals(lastMigrationSchema, migrationSchema, StringComparison.Ordinal))
                {
                    var lastHistoryModel = GetHistoryModel(lastMigrationSchema);

                    systemOperations = _modelDiffer.Diff(lastHistoryModel, historyModel);
                }
            }

            migration.Up();

            ExecuteOperations(migrationMetadata.Id, targetModel, migration.Operations, systemOperations, false);
        }
Пример #5
0
        private IEnumerable <string> GetHistorySchemas()
        {
            var modelCompressor = new ModelCompressor();

            return
                (from migrationId in _migrationAssembly.MigrationIds
                 let migrationMetadata = (IMigrationMetadata)_migrationAssembly.GetMigration(migrationId)
                                         from entitySet in
                                         modelCompressor
                                         .Decompress(Convert.FromBase64String(migrationMetadata.Target))
                                         .Descendants(EdmXNames.Ssdl.EntitySetNames)
                                         where entitySet.IsSystem()
                                         select entitySet.SchemaAttribute());
        }
Пример #6
0
        internal ScaffoldedMigration Scaffold(string migrationName, string @namespace, bool ignoreChanges)
        {
            XDocument sourceModel = null;

            CheckLegacyCompatibility(() => sourceModel = _currentModel);

            string sourceMigrationId = null;

            sourceModel = sourceModel ?? (_historyRepository.GetLastModel(out sourceMigrationId) ?? _emptyModel.Value);
            var modelCompressor = new ModelCompressor();

            var migrationOperations
                = ignoreChanges
                      ? Enumerable.Empty <MigrationOperation>()
                      : _modelDiffer.Diff(sourceModel, _currentModel, false)
                  .ToList();

            string migrationId;

            if (migrationName.IsValidMigrationId())
            {
                migrationId   = migrationName;
                migrationName = migrationName.MigrationName();
            }
            else
            {
                migrationName = _migrationAssembly.UniquifyName(migrationName);
                migrationId   = MigrationAssembly.CreateMigrationId(migrationName);
            }

            var generatedMigration
                = _configuration.CodeGenerator.Generate(
                      migrationId,
                      migrationOperations,
                      (sourceModel == _emptyModel.Value) ||
                      (sourceModel == _currentModel) ||
                      !sourceMigrationId.IsAutomaticMigration()
                        ? null
                        : Convert.ToBase64String(modelCompressor.Compress(sourceModel)),
                      Convert.ToBase64String(modelCompressor.Compress(_currentModel)),
                      @namespace,
                      migrationName);

            generatedMigration.MigrationId = migrationId;
            generatedMigration.Directory   = _configuration.MigrationsDirectory;

            return(generatedMigration);
        }
Пример #7
0
        internal override void ApplyMigration(DbMigration migration, DbMigration lastMigration)
        {
            var migrationMetadata = (IMigrationMetadata)migration;
            var compressor        = new ModelCompressor();

            var lastModel   = GetLastModel(lastMigration, migrationMetadata.Id);
            var targetModel = compressor.Decompress(Convert.FromBase64String(migrationMetadata.Target));

            if (migrationMetadata.Source != null)
            {
                var sourceModel
                    = compressor.Decompress(Convert.FromBase64String(migrationMetadata.Source));

                if (IsModelOutOfDate(sourceModel, lastMigration))
                {
                    base.AutoMigrate(
                        migrationMetadata.Id.ToAutomaticMigrationId(),
                        lastModel,
                        sourceModel,
                        downgrading: false);

                    lastModel = sourceModel;
                }
            }

            bool?includeSystemOps = null;
            var  isFirstMigration = ReferenceEquals(lastModel, _emptyModel.Value);

            if (isFirstMigration && !_historyRepository.IsShared())
            {
                includeSystemOps = true;

                if (!targetModel.HasSystemOperations())
                {
                    // upgrade scenario, inject the history model
                    AttachHistoryModel(targetModel);
                }
            }

            var systemOperations
                = _modelDiffer.Diff(lastModel, targetModel, includeSystemOps)
                  .Where(o => o.IsSystem);

            migration.Up();

            ExecuteOperations(migrationMetadata.Id, targetModel, migration.Operations.Concat(systemOperations), false);
        }
Пример #8
0
        public DbMigrator CreateMigrator <TContext>(DbMigration migration)
            where TContext : DbContext
        {
            var modelCompressor = new ModelCompressor();

            var generatedMigration
                = CodeGenerator
                  .Generate(
                      UtcNowGenerator.UtcNowAsMigrationIdTimestamp() + "_" + migration.GetType().Name,
                      migration.GetOperations(),
                      Convert.ToBase64String(modelCompressor.Compress(CreateContext <TContext>().GetModel())),
                      Convert.ToBase64String(modelCompressor.Compress(CreateContext <TContext>().GetModel())),
                      "System.Data.Entity.Migrations",
                      migration.GetType().Name);

            return(new DbMigrator(CreateMigrationsConfiguration <TContext>(scaffoldedMigrations: generatedMigration)));
        }
Пример #9
0
        internal ScaffoldedMigration Scaffold(
            string migrationName,
            string @namespace,
            bool ignoreChanges)
        {
            string        migrationId1 = (string)null;
            bool          flag         = false;
            List <string> list         = this.GetPendingMigrations().ToList <string>();

            if (list.Any <string>())
            {
                string str = list.Last <string>();
                if (!str.EqualsIgnoreCase(migrationName) && !str.MigrationName().EqualsIgnoreCase(migrationName))
                {
                    throw Error.MigrationsPendingException((object)list.Join <string>((Func <string, string>)null, ", "));
                }
                flag          = true;
                migrationId1  = str;
                migrationName = str.MigrationName();
            }
            XDocument sourceModel = (XDocument)null;

            this.CheckLegacyCompatibility((Action)(() => sourceModel = this._currentModel));
            string migrationId2   = (string)null;
            string productVersion = (string)null;

            sourceModel = sourceModel ?? this._historyRepository.GetLastModel(out migrationId2, out productVersion, (string)null) ?? this._emptyModel.Value;
            IEnumerable <MigrationOperation> operations = ignoreChanges ? Enumerable.Empty <MigrationOperation>() : (IEnumerable <MigrationOperation>) this._modelDiffer.Diff(sourceModel, this._currentModel, this._modificationCommandTreeGenerator, this.SqlGenerator, productVersion, (string)null).ToList <MigrationOperation>();

            if (!flag)
            {
                migrationName = this._migrationAssembly.UniquifyName(migrationName);
                migrationId1  = MigrationAssembly.CreateMigrationId(migrationName);
            }
            ModelCompressor     modelCompressor     = new ModelCompressor();
            ScaffoldedMigration scaffoldedMigration = this._configuration.CodeGenerator.Generate(migrationId1, operations, sourceModel == this._emptyModel.Value || sourceModel == this._currentModel || !migrationId2.IsAutomaticMigration() ? (string)null : Convert.ToBase64String(modelCompressor.Compress(sourceModel)), Convert.ToBase64String(modelCompressor.Compress(this._currentModel)), @namespace, migrationName);

            scaffoldedMigration.MigrationId  = migrationId1;
            scaffoldedMigration.Directory    = this._configuration.MigrationsDirectory;
            scaffoldedMigration.IsRescaffold = flag;
            scaffoldedMigration.Resources.Add("DefaultSchema", (object)this._defaultSchema);
            return(scaffoldedMigration);
        }
Пример #10
0
        internal ScaffoldedMigration Scaffold(string migrationName, string @namespace, bool ignoreChanges)
        {
            string migrationId   = null;
            var    rescaffolding = false;

            var pendingMigrations = GetPendingMigrations().ToList();

            if (pendingMigrations.Any())
            {
                var lastMigration = pendingMigrations.Last();

                if (!lastMigration.EqualsIgnoreCase(migrationName) &&
                    !lastMigration.MigrationName().EqualsIgnoreCase(migrationName))
                {
                    throw Error.MigrationsPendingException(pendingMigrations.Join());
                }

                rescaffolding = true;
                migrationId   = lastMigration;
                migrationName = lastMigration.MigrationName();
            }

            XDocument sourceModel = null;

            CheckLegacyCompatibility(() => sourceModel = _currentModel);

            string sourceMigrationId = null;

            sourceModel = sourceModel ?? (_historyRepository.GetLastModel(out sourceMigrationId) ?? _emptyModel.Value);
            var modelCompressor = new ModelCompressor();

            var migrationOperations
                = ignoreChanges
                      ? Enumerable.Empty <MigrationOperation>()
                      : _modelDiffer.Diff(sourceModel, _currentModel, _modificationCommandTreeGenerator, SqlGenerator)
                  .ToList();

            if (!rescaffolding)
            {
                migrationName = _migrationAssembly.UniquifyName(migrationName);
                migrationId   = MigrationAssembly.CreateMigrationId(migrationName);
            }

            var scaffoldedMigration
                = _configuration.CodeGenerator.Generate(
                      migrationId,
                      migrationOperations,
                      (sourceModel == _emptyModel.Value) ||
                      (sourceModel == _currentModel) ||
                      !sourceMigrationId.IsAutomaticMigration()
                        ? null
                        : Convert.ToBase64String(modelCompressor.Compress(sourceModel)),
                      Convert.ToBase64String(modelCompressor.Compress(_currentModel)),
                      @namespace,
                      migrationName);

            scaffoldedMigration.MigrationId  = migrationId;
            scaffoldedMigration.Directory    = _configuration.MigrationsDirectory;
            scaffoldedMigration.IsRescaffold = rescaffolding;
            scaffoldedMigration.Resources.Add(DefaultSchemaResourceKey, _defaultSchema);

            return(scaffoldedMigration);
        }