Exemplo n.º 1
0
        private void writePowierzchniaToDB(ModelBundle modelDataBundle)
        {
            Model2D model      = modelDataBundle.models[0];         //każda paczka zawiera tylko jeden model
            int     newModelId = 0;

            modelIdsAfterRestoreDict.TryGetValue(model.idModel, out newModelId);
            model.setNewModelIdInPowierzchnia(newModelId);

            uint   maxPowId  = 0;
            string tableName = dbConnector.getTableNameFromQuery(SqlQueries.getPowierzchnieNoBlob);

            for (int i = 0; i < model.powierzchnieList.Count; i++)
            {
                ModelPowierzchnia pow = model.powierzchnieList[i];

                dbWriter.writeBulkDataToDB(pow.powDataTable, tableName);

                if (i == 0)       //analogicznie jak w przypadku wpisywania deklaracji modeli, po dodaniu pierwszej powierzchni odczytuję jej ID z bazy
                {
                    maxPowId = getMaxPowierzchniaIdFromDB();
                }
                else            //kolejne ID tworzę sam
                {
                    maxPowId++;
                }
                //w każdej powierzchni, w danych składowych tj trójkątów, punktów itd  zmieniam ID powierzchni na nowy, w nowej bazie danych
                pow.idPow = maxPowId;
                //mając id aktualizuję PowObrys
                dbWriter.executeQuery("Update DefPowierzchni set PowObrys = '" + pow.powObrys + "'" + SqlQueries.getPowierzchnie_byIdPowFilter + pow.idPow);

                //zapisuję dane szczegółowe każdej powierzchni do bazy, tj. punkty, trójkąty itd
                //writePowierzchniaDataToDB(pow);
            }
        }
Exemplo n.º 2
0
        //w pliku zapisane są ciągiem pary: deklaracja długości danych(4 bajty) + buffer zawierający dane
        private void writeModelsToFile(string fileName)
        {
            string fileSaveDir = currentPath;

            if (fileName == null || fileName == "")
            {
                fileName = "modele.bin";
            }
            else
            {
                fileName += ".bin";
            }

            string serializationFile = Path.Combine(fileSaveDir, fileName);

            initializeFile(serializationFile);

            int modelsTotal = selectedModelDeclarations.Count;       //do paska postępu

            for (int k = 0; k < modelsTotal; k++)
            {
                Model2D model = selectedModelDeclarations[0];
                showProgress(k + 1, modelsTotal, model.nazwaModel.ToString());

                readPowierzchniaFromDB(model);
                addModelToFile(serializationFile, model);
                selectedModelDeclarations.Remove(model);
            }
        }
Exemplo n.º 3
0
        //czyta tylko z tablicy DefModel2D, dane zostaną dodane później do każdego modelu osobno i będą dopisywane do pliku osobno
        //dane z tej metody będą użyte do odtworzenia struktury, do której następnie będą iteracyjnie dopisane dane
        private void readSelectedModelDeclarationsFromDB(string selectedModelIds)
        {
            string queryFilter = SqlQueries.getModelsByIdFilter.Replace("@iDs", selectedModelIds);

            QueryData       modelData  = readModelsFromDB(queryFilter);
            List <object[]> models     = modelData.getQueryData();
            List <string>   paramTypes = modelData.getDataTypes();

            for (int i = 0; i < models.Count; i++)
            {
                object[] model   = models[i];
                Model2D  model2D = new Model2D();

                model2D.czyArch          = model[SqlQueries.getModels_czyArchIndex];
                model2D.czyArch_dataType = paramTypes[SqlQueries.getModels_czyArchIndex];

                model2D.dataModel          = model[SqlQueries.getModels_dataModelIndex];
                model2D.dataModel_dataType = paramTypes[SqlQueries.getModels_dataModelIndex];

                model2D.directoryId          = model[SqlQueries.getModels_directoryIdIndex];
                model2D.directoryId_dataType = paramTypes[SqlQueries.getModels_directoryIdIndex];

                model2D.idModel          = model[SqlQueries.getModels_idModelIndex];
                model2D.idModel_dataType = paramTypes[SqlQueries.getModels_idModelIndex];

                model2D.idUzytk          = model[SqlQueries.getModels_idUzytkIndex];
                model2D.idUzytk_dataType = paramTypes[SqlQueries.getModels_idUzytkIndex];

                model2D.idUzytkWlasciciel          = model[SqlQueries.getModels_idUzytkWlascicielIndex];
                model2D.idUzytkWlasciciel_dataType = paramTypes[SqlQueries.getModels_idUzytkWlascicielIndex];

                model2D.nazwaModel          = model[SqlQueries.getModels_nazwaModelIndex];
                model2D.nazwaModel_dataType = paramTypes[SqlQueries.getModels_nazwaModelIndex];

                model2D.opisModel          = model[SqlQueries.getModels_opisModelIndex];
                model2D.opisModel_dataType = paramTypes[SqlQueries.getModels_opisModelIndex];

                ModelDirectory modelDir;
                directoryTreeControl1.checkedDirectories.TryGetValue(model2D.directoryId.ToString(), out modelDir);
                model2D.modelDir = modelDir;

                selectedModelDeclarations.Add(model2D);
            }
        }
Exemplo n.º 4
0
        private void addModelToFile(string serializationFile, Model2D model)
        {
            ModelBundle modelDataBundle = new ModelBundle();

            modelDataBundle.addModel(model);
            try
            {
                //serialize
                using (FileStream stream = new FileStream(serializationFile, FileMode.Open))
                {
                    MemoryStream originalMemoryStream   = new MemoryStream();
                    MemoryStream compressedMemoryStream = new MemoryStream();

                    BinaryFormatter formatter = new BinaryFormatter();
                    formatter.Serialize(originalMemoryStream, modelDataBundle);

                    using (GZipStream gzipStream = new GZipStream(compressedMemoryStream, CompressionMode.Compress))
                    {
                        originalMemoryStream.WriteTo(gzipStream);
                        originalMemoryStream.Close();
                    }

                    byte[] buffer     = compressedMemoryStream.ToArray();
                    int    bufferSize = buffer.Length;
                    compressedMemoryStream.Close();

                    using (BinaryWriter binWriter = new BinaryWriter(stream))
                    {
                        stream.Position = stream.Length;
                        binWriter.Write(bufferSize);            //pierwsze 4 bajty
                        binWriter.Write(buffer);
                    }
                }
            }
            catch (OutOfMemoryException exc)
            {
                MyMessageBox.display(exc.Message + "\r\nwriteModelsToFile", MessageBoxType.Error);
            }
        }
Exemplo n.º 5
0
        private void readPowierzchniaFromDB(Model2D model)
        {
            DBReader dbReader = new DBReader(dbConnection);
            //najpierw potrzebuję jedynie utworzyć obiekty ModelPowierzchnia, potrzebuję do tego tylko niektóre dane
            string query = SqlQueries.getPowierzchnieDeclaration + SqlQueries.getPowierzchnie_byIdModelFilter + model.idModel;

            QueryData     powierzchnieData = dbReader.readFromDB(query);
            List <string> paramTypes       = powierzchnieData.getDataTypes();

            for (int i = 0; i < powierzchnieData.getDataRowsNumber(); i++)
            {
                ModelPowierzchnia pow = new ModelPowierzchnia();

                pow.idPow = powierzchnieData.getQueryData()[i][SqlQueries.getPowierzchnie_idPowIndex];

                pow.idModel          = powierzchnieData.getQueryData()[i][SqlQueries.getPowierzchnie_idModelIndex];
                pow.idModel_dataType = paramTypes[SqlQueries.getPowierzchnie_idModelIndex];

                pow.nazwaPow          = powierzchnieData.getQueryData()[i][SqlQueries.getPowierzchnie_nazwaPowIndex];
                pow.nazwaPow_dataType = paramTypes[SqlQueries.getPowierzchnie_nazwaPowIndex];

                pow.powierzchniaData = powierzchnieData.getQueryData()[i];
                pow.columnHeaders    = powierzchnieData.getHeaders();
                pow.columnDataTypes  = powierzchnieData.getDataTypes();

                //teraz w zależności od opcji czytam pełne dane powierzchni i zapisuję do DataTable
                if (saveModelOption == 0)
                {
                    pow.powDataTable = dbReader.readFromDBToDataTable(SqlQueries.getPowierzchnieNoBlob + SqlQueries.getPowierzchnie_byIdPowFilter + pow.idPow);
                }
                else
                {
                    pow.powDataTable = dbReader.readFromDBToDataTable(SqlQueries.getPowierzchnieFull + SqlQueries.getPowierzchnie_byIdPowFilter + pow.idPow);
                }
                //readPowierzchniaDataFromDB(pow);
                pow.powObrys = dbReader.readScalarFromDB("Select PowObrys from DefPowierzchni " + SqlQueries.getPowierzchnie_byIdPowFilter + pow.idPow).ToString();
                model.addPowierzchnia(pow);
            }
        }
Exemplo n.º 6
0
 public void addModel(Model2D model)
 {
     models.Add(model);
 }