示例#1
0
        public void Properties_NotEquality()
        {
            try {
                DataElement[] dataElementArray = new DataElement[8];

                dataElementArray[0] = new DataElement(EntryDataType.Password);
                dataElementArray[1] = dataElementArray[0].Clone();
                dataElementArray[1].StaticData = EntryDataType.Notes;

                dataElementArray[2] = new DataElement(new StrengthReport.Measuring.BasicStrengthMeasure());
                dataElementArray[3] = dataElementArray[2].Clone();
                dataElementArray[3].FunctionType = (new StrengthReport.Measuring.AdvancedStrengthMeasure()).GetType().FullName;

                dataElementArray[4] = new DataElement(EntryDataType.Empty);
                dataElementArray[5] = dataElementArray[4].Clone();
                dataElementArray[5].FunctionType = (new StrengthReport.Measuring.BasicStrengthMeasure()).GetType().FullName;

                dataElementArray[6] = new DataElement(new StrengthReport.Measuring.BasicStrengthMeasure());
                dataElementArray[7] = dataElementArray[6].Clone();
                dataElementArray[7].StaticData = EntryDataType.Empty;

                Assert.NotEquals(dataElementArray[0], dataElementArray[1]);
                Assert.NotEquals(dataElementArray[2], dataElementArray[3]);
                Assert.NotEquals(dataElementArray[4], dataElementArray[5]);
                Assert.NotEquals(dataElementArray[6], dataElementArray[7]);

            } catch (Exception e) {
                Assert.Fail("Exception: " + e.Message + "\n" + e.StackTrace);
            }
        }
示例#2
0
 public static void ShouldBeAbleToCheckTheEqualityBetweenTheSameDataElement()
 {
     //Arrange
     var DataElement = new DataElement("test");
     //Act
     //Assert
     Assert.Equal(DataElement, DataElement);
 }
示例#3
0
 public static void ShouldBeABleToCreateANewDataElementWithDefaultProperties()
 {
     //Arrange
     var dataElement = new DataElement("test");
     //Act
     //Assert
     Assert.Equal("test", dataElement.Name);
 }
示例#4
0
 public static void ShouldBeABleToTellIfADataElementIsAValidDataElementModel()
 {
     //Arrange
     var dataElement = new DataElement("test");
     //Act
     //Assert
     Assert.IsAssignableFrom<Model.DataElement>(dataElement);
 }
示例#5
0
 public static void ShouldBeAbleToTellTwoDifferentDataElements()
 {
     //Arrange
     var DataElement1 = new DataElement("test");
     var DataElement2 = new DataElement("test1");
     //Act
     //Assert
     Assert.NotEqual(DataElement1, DataElement2);
 }
示例#6
0
 public static void ShouldBeAbleToCheckIfTwoDataElementsWithTheSameValuesAreEqual()
 {
     //Arrange
     var DataElement1 = new DataElement("test");
     var DataElement2 = new DataElement("test");
     //Act
     //Assert
     Assert.Equal(DataElement1, DataElement2);
 }
示例#7
0
 public static void ShouldBeAbleToDeserializeFromJsonANewDataElementDocumentWithDefaultProperties()
 {
     //Arrange
     var expectedAnswer = new DataElement("test");
     var serializedDataElement = "{\"name\" : \"test\"}";
     //Act
     var realAnswer = JsonConvert.DeserializeObject<DataElement>(serializedDataElement, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
     //Assert
     Assert.Equal(expectedAnswer, realAnswer);
 }
示例#8
0
	public IList GetList () {
		ArrayList result = new ArrayList();
		for (int i = 0; i < 10; i++) {
			DataElement element = new DataElement();
			element.Name = "Name " + i.ToString();
			element.Val = i;
			result.Add(element);
		}
		return result;
	}
示例#9
0
        public void TestClone_TranslatableDisplayName()
        {
            IPolicyObjectCollection<IDataItem> collection = new PolicyObjectCollection<IDataItem>(); 
            DataElement dataElement = new DataElement(Guid.NewGuid(), new NonTranslateableLanguageItem("content"), new TranslateableLanguageItem("Word or phrase"), DataType.StringArray, collection);

            DataElement dataElementCopy = dataElement.Clone() as DataElement;

            Assert.AreEqual(dataElement.Name.Identifier, dataElementCopy.Name.Identifier);
            Assert.AreEqual(dataElement.Name.Value, dataElementCopy.Name.Value);
            Assert.AreNotEqual(dataElement.DisplayName.Identifier, dataElementCopy.DisplayName.Identifier);
        }
示例#10
0
        public void TestClone()
        {
            DataElement elem = new DataElement(
                new TranslateableLanguageItem(Guid.NewGuid()),
                new TranslateableLanguageItem(Guid.NewGuid()),
                DataType.String,
                DataItem.CreateDataItem(new TranslateableLanguageItem(Guid.NewGuid()), DataType.String, "it's a string, init")
                );

            IDataElement copy = elem.Clone() as IDataElement;

            Assert.AreEqual(elem.DisplayName.Value, copy.DisplayName.Value);
            Assert.AreNotEqual(elem.Identifier, copy.Identifier);
            Assert.AreNotEqual(elem.Name.Identifier, copy.Name.Identifier);
            Assert.AreEqual(elem.Name.Value, copy.Name.Value);
            Assert.AreEqual(elem.ReadOnly, copy.ReadOnly);
            Assert.AreEqual(elem.Type, copy.Type);
        }
示例#11
0
        public void TestClone()
        {
            IDataElement elem = new DataElement(new TranslateableLanguageItem("1"), new TranslateableLanguageItem("1"), DataType.String, "name");
            Parameter param = new Parameter(
                "param1", 
                 elem);

            IParameter copyOfParam = param.Clone() as IParameter;
            Assert.IsNotNull(copyOfParam);
            Assert.AreNotEqual(param.Identifier, copyOfParam.Identifier);
            Assert.AreEqual(param.ReadOnly, copyOfParam.ReadOnly);

            IDataElement copyOfElem = copyOfParam.Value;
            Assert.IsNotNull(copyOfElem);
            Assert.AreEqual(elem.Name.Value, copyOfElem.Name.Value);
            Assert.AreEqual(elem.DisplayName.Value, copyOfElem.DisplayName.Value);
            Assert.AreEqual(elem.Type, copyOfElem.Type);

            Assert.AreEqual("name", (string)copyOfElem.Data);
        }
示例#12
0
        public async Task <IActionResult> Delete(Guid instanceGuid, Guid dataId, int instanceOwnerPartyId)
        {
            _logger.LogInformation($"//DataController // Delete // Starting method");

            string instanceId = $"{instanceOwnerPartyId}/{instanceGuid}";

            // check if instance id exist and user is allowed to change the instance data
            Instance instance = await _instanceRepository.GetOne(instanceId, instanceOwnerPartyId);

            if (instance == null)
            {
                return(NotFound("Provided instanceId is unknown to storage service"));
            }

            DataElement dataElement = await _dataRepository.Read(instanceGuid, dataId);

            if (dataElement == null)
            {
                return(NotFound("Provided dataId is unknown to storage service"));
            }

            // delete blob stored file and data element object
            try
            {
                string storageFileName = DataElementHelper.DataFileName(instance.AppId, instanceGuid.ToString(), dataId.ToString());
                bool   result          = await _dataRepository.DeleteDataInStorage(storageFileName);

                await _dataRepository.Delete(dataElement);

                await DispatchEvent(InstanceEventType.Deleted.ToString(), instance, dataElement);

                return(Ok(true));
            }
            catch (Exception deleteException)
            {
                _logger.LogError($"Unable to delete data element {dataId} due to {deleteException}");

                return(StatusCode(500, $"Unable to delete data element {dataId} due to {deleteException.Message}"));
            }
        }
示例#13
0
        private async Task <Instance> SaveDataElementsAndUpdateInstance(List <Part> parts, Instance storedInstance, DateTime creationTime, string userId)
        {
            try
            {
                foreach (Part part in parts)
                {
                    // Create a new DataElement to be stored in blob and added in the Data List of the Instance object.
                    DataElement newDataElement = DataElementHelper.CreateDataElement(part.Name, storedInstance, creationTime, part.ContentType, part.FileName, part.Stream.Length, userId);

                    // Store file as blob.
                    newDataElement.FileSize = _dataRepository.WriteDataToStorage(part.Stream, newDataElement.StorageUrl).Result;

                    if (newDataElement.FileSize > 0)
                    {
                        storedInstance.Data.Add(newDataElement);

                        logger.LogInformation($"Data element '{newDataElement.ElementType} - {newDataElement.Id}' is stored at {newDataElement.StorageUrl}, file size {newDataElement.FileSize / 1024}KB");
                    }
                }

                // Update instance with the data element.
                storedInstance = _instanceRepository.Update(storedInstance).Result;
            }
            catch (Exception dataElementException)
            {
                // compensating action - delete blobs
                logger.LogError($"Creation of data elements failed. {dataElementException}");

                foreach (DataElement dataElement in storedInstance.Data)
                {
                    await _dataRepository.DeleteDataInStorage(dataElement.StorageUrl);

                    logger.LogError($"Deleted data element '{dataElement.ElementType} - {dataElement.Id}' stored at {dataElement.StorageUrl}");
                }

                throw;
            }

            return(storedInstance);
        }
示例#14
0
        public async Task <DataElement> InsertBinaryData(string instanceId, string dataType, string contentType, string filename, Stream stream)
        {
            Application app = _applicationService.GetApplication();


            Guid   dataGuid = Guid.NewGuid();
            string dataPath = GetDataPath(app.Org, app.Id.Split("/")[1], Convert.ToInt32(instanceId.Split("/")[0]), new Guid(instanceId.Split("/")[1]));

            DataElement dataElement = new DataElement()
            {
                Id = dataGuid.ToString(), DataType = dataType, ContentType = contentType,
            };

            if (!Directory.Exists(Path.GetDirectoryName(dataPath)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(dataPath));
            }

            Directory.CreateDirectory(dataPath + @"blob");

            long filesize;

            using (Stream streamToWriteTo = File.Open(dataPath + @"blob\" + dataGuid.ToString(), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
            {
                await stream.CopyToAsync(streamToWriteTo);

                streamToWriteTo.Flush();
                filesize = streamToWriteTo.Length;
            }

            dataElement.Size = filesize;
            string jsonData = JsonConvert.SerializeObject(dataElement);

            using StreamWriter sw = new StreamWriter(dataPath + dataGuid.ToString() + @".json");

            sw.Write(jsonData.ToString());
            sw.Close();

            return(dataElement);
        }
示例#15
0
        public async Task <DataElement> InsertBinaryData(string org, string app, int instanceOwnerId, Guid instanceGuid, string dataType, HttpRequest request)
        {
            Guid        dataGuid    = Guid.NewGuid();
            string      dataPath    = GetDataPath(org, app, instanceOwnerId, instanceGuid);
            Instance    instance    = GetTestInstance(app, org, instanceOwnerId, instanceGuid);
            DataElement dataElement = new DataElement()
            {
                Id = dataGuid.ToString(), DataType = dataType, ContentType = request.ContentType
            };


            if (!Directory.Exists(Path.GetDirectoryName(dataPath)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(dataPath));
            }

            Directory.CreateDirectory(dataPath + @"blob");

            long filesize;

            using (Stream streamToWriteTo = File.Open(dataPath + @"blob\" + dataGuid.ToString(), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
            {
                await request.Body.CopyToAsync(streamToWriteTo);

                streamToWriteTo.Flush();
                filesize = streamToWriteTo.Length;
                streamToWriteTo.Close();
            }

            dataElement.Size = filesize;
            string jsonData = JsonConvert.SerializeObject(dataElement);

            using StreamWriter sw = new StreamWriter(dataPath + dataGuid.ToString() + @".json");

            sw.Write(jsonData.ToString());
            sw.Close();

            return(dataElement);
        }
示例#16
0
        public void NormalizeSetsParentElementAndDataInColumns()
        {
            DataElement da = Helpers.CreateTestDataElement();

            Assert.ReferenceEquals(da, da.Rows[0].ParentElement);
            Assert.ReferenceEquals(da, da.Rows[1].ParentElement);
            Assert.ReferenceEquals(da, da.Columns[0].ParentElement);
            Assert.ReferenceEquals(da, da.Columns[1].ParentElement);
            Assert.ReferenceEquals(da, da.Columns[2].ParentElement);
            Assert.AreEqual(1.0, da.Columns[0].Data[0]);
            Assert.AreEqual(5.05, da.Columns[0].Data[1]);
            Assert.AreEqual("client 1", da.Columns[1].Data[0]);
            Assert.AreEqual("client 2", da.Columns[1].Data[1]);
            Assert.AreEqual(false, da.Columns[2].Data[0]);
            Assert.AreEqual(true, da.Columns[2].Data[1]);
            Assert.AreEqual(da.Columns[0].Data[0], da.Rows[0].Data[0]);
            Assert.AreEqual(da.Columns[0].Data[1], da.Rows[1].Data[0]);
            Assert.AreEqual(da.Columns[1].Data[0], da.Rows[0].Data[1]);
            Assert.AreEqual(da.Columns[1].Data[1], da.Rows[1].Data[1]);
            Assert.AreEqual(da.Columns[2].Data[0], da.Rows[0].Data[2]);
            Assert.AreEqual(da.Columns[2].Data[1], da.Rows[1].Data[2]);
        }
        //添加新模块了,保存主页个人模版
        public static void UpdateAfterAddNewOneBlock(string userId, string blockId, string blockType, string templateId, string isManage)
        {
            WebPartTemplate dr = GetWebPartTemplateRecord(userId, blockType, templateId, isManage);
            //DbRecord dr = new DbRecord(daAccess,"DoorTemplate","UserId",userId,"IsDefault","T","BlockType",blockType);
            string         tempXml = dr.TemplateXml;
            DataCollection list    = new DataCollection(tempXml);
            WebPart        bl      = WebPart.Find(blockId);
            DataElement    item    = list.NewElement();

            item.SetAttr("Id", bl.Id);
            item.SetAttr("BlockTitle", bl.BlockTitle);
            item.SetAttr("BlockKey", bl.BlockKey);
            item.SetAttr("BlockImage", bl.BlockImage);
            item.SetAttr("RepeatItemCount", bl.RepeatItemCount.Value.ToString());
            item.SetAttr("RepeatItemLength", bl.RepeatItemLength.Value.ToString());
            item.SetAttr("Color", bl.Color);
            item.SetAttr("ColorValue", bl.ColorValue);
            item.SetAttr("DelayLoadSecond", bl.DelayLoadSecond.Value.ToString());
            dr.TemplateXml    = list.ToString();
            dr.TemplateString = dr.TemplateString + "," + blockId;
            dr.Update();
        }
示例#18
0
        public IActionResult Index(HomeViewModel _homeViewModel)
        {
            ViewData["Message"] = "Element: " + _homeViewModel.DataID;
            if (string.IsNullOrWhiteSpace(_homeViewModel.changeAction))
            {
                IniViewData();
                _homeViewModel = populateViewModelWithDataElement(_homeViewModel);
            }
            else if (_homeViewModel.changeAction.ToUpper() == "U")
            {
                DataElement dataElement = _context.DataElement.Include("datatype").Include("datatype.facets").SingleOrDefault(u => u.identifier.Substring(u.identifier.LastIndexOf(@"/") + 1).Equals(_homeViewModel.DataID));
                dataElement.name       = _homeViewModel.name;
                dataElement.domain     = _homeViewModel.domain;
                dataElement.status     = _homeViewModel.status;
                dataElement.definition = _homeViewModel.definition;
                dataElement.guidance   = _homeViewModel.guidance;
                dataElement.identifier = _homeViewModel.identifier;
                dataElement.sourceURL  = _homeViewModel.sourceURL;
                dataElement.version    = _homeViewModel.version;

                Change currentChange = new Change()
                {
                    ChangeType = _homeViewModel.changeAction, UpdatedElement = dataElement
                };

                ChangeSet cs = _context.ChangeSet.Include("Changes").SingleOrDefault(c => c.ID.Equals(_homeViewModel.changeSetID.Trim()));

                if (cs.Changes == null)
                {
                    cs.Changes = new List <Change>();
                }

                cs.Changes.Add(currentChange);
                _context.Update(cs);
                _context.SaveChanges();
            }

            return(View());
        }
示例#19
0
        public void GetFragmentByIndexesReturnsFragmentByIndexes()
        {
            DataElement  da   = Helpers.CreateTestDataElementWithTwoNumericColumns();
            List <Index> rows = new List <Index> {
                new Index(1)
            };
            List <Index> cols = new List <Index> {
                new Index(0), new Index(3)
            };
            var frag = da.GetFragmentByIndexes(rows, cols);

            Assert.AreEqual(5.05, frag.Rows[0].Data[0]);
            Assert.AreEqual(4.05, frag.Rows[0].Data[1]);
            Assert.AreEqual(1, frag.Rows.Count);
            Assert.AreEqual(2, frag.Columns.Count);
            Assert.AreEqual(2, frag.Rows[0].Data.Count);
            Assert.AreEqual(2, frag.Rows[0].Legends.Count);
            Assert.AreEqual(1, frag.Columns[0].Data.Count);
            Assert.AreEqual(1, frag.Columns[0].Legends.Count);
            Assert.AreEqual(1, frag.Columns[1].Data.Count);
            Assert.AreEqual(1, frag.Columns[1].Legends.Count);
        }
示例#20
0
        /// <summary>
        /// 获取流程图元数据
        /// </summary>
        /// <param name="dataManager">数据管理器</param>
        /// <param name="slotContainerList">流程图插槽容器的链表</param>
        /// <returns>流程图元数据的链表</returns>
        protected override List <FlowChartMetaData> GetMetaData(DataManager dataManager, List <SlotContainer> slotContainerList)
        {
            List <FlowChartMetaData> metaDataList     = new List <FlowChartMetaData>();
            List <GraphElement>      graphElementList = new List <GraphElement>();
            Hashtable graphElementTable = new Hashtable();

            foreach (SlotContainer slotContainer in slotContainerList)
            {
                if (slotContainer is EventGraphElement)
                {
                    object            data        = dataManager.GetData(slotContainer);
                    DataElement       dataElement = dataManager.GetDataElement(slotContainer);
                    FlowChartMetaData metaData    = new FlowChartMetaData(slotContainer.ID, data, "EventNode");
                    metaData.Code        = CodeProvider.CodeProviderClass.ConvertToCode(data, dataElement.DataType);
                    metaData.DisplayText = slotContainer.TooltipText;
                    FindNextMetaData(dataManager, slotContainer, metaData, graphElementList, graphElementTable);
                    metaDataList.Add(metaData);
                }
            }

            return(metaDataList);
        }
示例#21
0
        // CHANGE_RANGE_SPECIAL
        //
        private byte[] changeRangeSpecial(DataElement obj)
        {
            // change a sequence of bytes in our buffer to some special chars

            var data  = obj.Value.Value;
            int start = 0;
            int end   = 0;

            byte[] special = { 0x00, 0x01, 0xFE, 0xFF };

            getRange(data.Length, out start, out end, 100);

            byte[] ret = new byte[data.Length];
            Buffer.BlockCopy(data, 0, ret, 0, data.Length);

            for (int i = start; i < end; ++i)
            {
                ret[i] = context.Random.Choice(special);
            }

            return(ret);
        }
示例#22
0
        private static List <DataElement> GetDataElements(string org, string app, int instanceOwnerId, Guid instanceId)
        {
            string             path         = GetDataPath(org, app, instanceOwnerId, instanceId);
            List <DataElement> dataElements = new List <DataElement>();

            if (Directory.Exists(path))
            {
                string[] files = Directory.GetFiles(path);

                foreach (string file in files)
                {
                    if (!file.Contains(".pretest"))
                    {
                        string      content     = File.ReadAllText(Path.Combine(path, file));
                        DataElement dataElement = (DataElement)JsonConvert.DeserializeObject(content, typeof(DataElement));
                        dataElements.Add(dataElement);
                    }
                }
            }

            return(dataElements);
        }
示例#23
0
        // PERFORM_MUTATION
        //
        private void performMutation(DataElement obj, int pos)
        {
            var stream = obj.Value;

            System.Diagnostics.Debug.Assert(pos < stream.LengthBytes);

            int  len = Math.Min((int)stream.LengthBytes - pos, inject.Length);
            long cur = stream.TellBits();

            stream.SeekBytes(pos, System.IO.SeekOrigin.Begin);

            for (int i = 0; i < len; ++i)
            {
                stream.WriteByte(inject[i]);
            }

            stream.SeekBits(cur, System.IO.SeekOrigin.Begin);

            obj.MutatedValue   = new Variant(obj.Value);
            obj.mutationFlags  = DataElement.MUTATE_DEFAULT;
            obj.mutationFlags |= DataElement.MUTATE_OVERRIDE_TYPE_TRANSFORM;
        }
示例#24
0
        private string GetInformHtml(DataCollection dl, Aim.Portal.Model.WebPart bl, DataElement di)
        {
            StringBuilder sb = new StringBuilder();

            /*DateTime nowDate = DateTime.Now;
             * for (int i = 0; i < dl.GetItemCount(); i++)
             * {
             *  if (i == int.Parse(bl.RepeatItemCount))
             *      break;
             *  DataItem diP = dl.GetItem(i);
             *  if (di.GetAttr("Fate") != "" && ((TimeSpan)nowDate.Subtract((DateTime.Parse(diP.GetAttr("PostTime"))))).Days <= Convert.ToInt32(di.GetAttr("Fate")))
             *  {
             *      sb.AppendFormat("<TABLE width='100%' border='0' style='TABLE-LAYOUT: fixed;BORDER-COLLAPSE: collapse'><TR><TD WIDTH='*'><div class=\"linkdiv\" Title=\"{1}\"><IMG SRC=\"image/new.gif\" WIDTH=\"15\" HEIGHT=\"10\" BORDER=\"0\" ALT=\"\"><a onclick=\"OpenNews('/officeauto/PubInfo/InformView.aspx?FuncType=View&Id={0}');\" href='javascript:void(0);'>{1}</a></div></TD><TD WIDTH='80px' align='center'><div class=\"linkdiv\">{2}</div></TD></TR></TABLE>", diP.GetAttr("Id"), diP.GetAttr("Title"), DateTime.Parse(diP.GetAttr("PostTime")).ToString("yyyy-MM-dd"));
             *  }
             *  else
             *  {
             *      sb.AppendFormat("<TABLE width='100%' border='0' style='TABLE-LAYOUT: fixed;BORDER-COLLAPSE: collapse'><TR><TD WIDTH='*'><div class=\"linkdiv\" Title=\"{1}\"><IMG SRC=\"Blockimages/Icons/sms.gif\" WIDTH=\"15\" HEIGHT=\"10\" BORDER=\"0\" ALT=\"\"><a onclick=\"OpenNews('/officeauto/PubInfo/InformView.aspx?FuncType=View&Id={0}');\" href='javascript:void(0);'>{1}</a></div></TD><TD WIDTH='80px' align='center'><div class=\"linkdiv\">{2}</div></TD></TR></TABLE>", diP.GetAttr("Id"), diP.GetAttr("Title"), DateTime.Parse(diP.GetAttr("PostTime")).ToString("yyyy-MM-dd"));
             *  }
             * }
             * sb.Append("<TABLE width='100%' border='0' style='TABLE-LAYOUT: fixed;BORDER-COLLAPSE: collapse'><TR><TD><div align=\"right\" style=\"padding:2px;font-size:12px;\"><a href=\"javascript:OpenCatalogNews('/officeauto/pubinfo/CatalogQuery.aspx?CatalogName=" + di.GetAttr("CatalogName") + "&CatalogId=" + di.GetAttr("CatalogId") + "')\">更多</a></div></TD></TR></TABLE>");*/
            return(sb.ToString());
        }
示例#25
0
        // PERFORM_MUTATION
        //
        private void performMutation(DataElement obj, int pos)
        {
            var stream = obj.Value;

            System.Diagnostics.Debug.Assert(pos < stream.Length);

            int  len = Math.Min((int)stream.Length - pos, inject.Length);
            long cur = stream.PositionBits;

            stream.Seek(pos, System.IO.SeekOrigin.Begin);

            for (int i = 0; i < len; ++i)
            {
                stream.WriteByte(inject[i]);
            }

            stream.SeekBits(cur, System.IO.SeekOrigin.Begin);

            obj.MutatedValue   = new Variant(stream);
            obj.mutationFlags  = MutateOverride.Default;
            obj.mutationFlags |= MutateOverride.TypeTransform;
        }
示例#26
0
        public void ApplyToDataSortsData()
        {
            SortCommand cmd = new SortCommand()
            {
                Index = new Index("column 1"), SortOrder = SortOrder.Descending
            };
            DataElement da = Helpers.CreateTestDataElement();

            cmd.ApplyToData(da);
            Assert.AreEqual(5.05, da.Columns[0].Data[0]);
            Assert.AreEqual(1.0, da.Columns[0].Data[1]);
            Assert.AreEqual("client 2", da.Columns[1].Data[0]);
            Assert.AreEqual("client 1", da.Columns[1].Data[1]);
            Assert.AreEqual(true, da.Columns[2].Data[0]);
            Assert.AreEqual(false, da.Columns[2].Data[1]);
            Assert.AreEqual(da.Columns[0].Data[0], da.Rows[0].Data[0]);
            Assert.AreEqual(da.Columns[0].Data[1], da.Rows[1].Data[0]);
            Assert.AreEqual(da.Columns[1].Data[0], da.Rows[0].Data[1]);
            Assert.AreEqual(da.Columns[1].Data[1], da.Rows[1].Data[1]);
            Assert.AreEqual(da.Columns[2].Data[0], da.Rows[0].Data[2]);
            Assert.AreEqual(da.Columns[2].Data[1], da.Rows[1].Data[2]);
        }
示例#27
0
        /// <inheritdoc />
        public async Task <DataElement> UpdateBinaryData(string org, string app, int instanceOwnerId, Guid instanceGuid, Guid dataGuid, HttpRequest request)
        {
            string instanceIdentifier = $"{instanceOwnerId}/{instanceGuid}";
            string apiUrl             = $"{_platformSettings.ApiStorageEndpoint}instances/{instanceIdentifier}/data/{dataGuid}";
            string token = JwtTokenUtil.GetTokenFromContext(_httpContextAccessor.HttpContext, _settings.RuntimeCookieName);

            StreamContent content = CreateContentStream(request);

            HttpResponseMessage response = await _client.PutAsync(token, apiUrl, content);

            if (response.IsSuccessStatusCode)
            {
                string instancedata = await response.Content.ReadAsStringAsync();

                DataElement dataElement = JsonConvert.DeserializeObject <DataElement>(instancedata);

                return(dataElement);
            }

            _logger.LogError($"Updating attachment {dataGuid} for instance {instanceGuid} failed with status code {response.StatusCode}");
            throw await PlatformHttpException.CreateAsync(response);
        }
示例#28
0
        public async Task <ActionResult> Delete(
            [FromRoute] string org,
            [FromRoute] string app,
            [FromRoute] int instanceOwnerPartyId,
            [FromRoute] Guid instanceGuid,
            [FromRoute] Guid dataGuid)
        {
            Instance instance = await _instanceService.GetInstance(app, org, instanceOwnerPartyId, instanceGuid);

            if (instance == null)
            {
                return(NotFound("Did not find instance"));
            }

            DataElement dataElement = instance.Data.Find(m => m.Id.Equals(dataGuid.ToString()));

            if (dataElement == null)
            {
                return(NotFound("Did not find data element"));
            }

            string dataType = dataElement.DataType;

            bool?appLogic = await RequiresAppLogic(org, app, dataType);

            if (appLogic == null)
            {
                string errorMsg = $"Could not determine if {dataType} requires app logic for application {org}/{app}";
                _logger.LogError(errorMsg);
                return(BadRequest(errorMsg));
            }
            else if ((bool)appLogic)
            {
                // trying deleting a form element
                return(BadRequest("Deleting form data is not possible at this moment."));
            }

            return(await DeleteBinaryData(org, app, instanceOwnerPartyId, instanceGuid, dataGuid));
        }
示例#29
0
        public async Task <ActionResult <DataElement> > Delete(int instanceOwnerPartyId, Guid instanceGuid, Guid dataGuid)
        {
            _logger.LogInformation($"//DataController // Delete // Starting method");

            string instanceId = $"{instanceOwnerPartyId}/{instanceGuid}";

            Instance instance = await _instanceRepository.GetOne(instanceId, instanceOwnerPartyId);

            if (instance == null)
            {
                return(NotFound("Provided instanceId is unknown to storage service"));
            }

            DataElement dataElement = await _dataRepository.Read(instanceGuid, dataGuid);

            if (dataElement == null)
            {
                return(NotFound("Provided dataGuid is unknown to storage service"));
            }

            try
            {
                string storageFileName = DataElementHelper.DataFileName(instance.AppId, instanceGuid.ToString(), dataGuid.ToString());

                await _dataRepository.DeleteDataInStorage(instance.Org, storageFileName);

                await _dataRepository.Delete(dataElement);

                await DispatchEvent(InstanceEventType.Deleted.ToString(), instance, dataElement);

                return(Ok(dataElement));
            }
            catch (Exception deleteException)
            {
                _logger.LogError($"Unable to delete data element {dataGuid} due to {deleteException}");

                return(StatusCode(500, $"Unable to delete data element {dataGuid} due to {deleteException.Message}"));
            }
        }
示例#30
0
        public async Task <ActionResult> Get(
            [FromRoute] string org,
            [FromRoute] string app,
            [FromRoute] int instanceOwnerId,
            [FromRoute] Guid instanceGuid,
            [FromRoute] Guid dataGuid)
        {
            Instance instance = await instanceService.GetInstance(app, org, instanceOwnerId, instanceGuid);

            DataElement dataElement = instance.Data.Find(d => d.Id == dataGuid.ToString());

            Stream dataStream = await dataService.GetData(org, app, instanceOwnerId, instanceGuid, dataGuid);

            if (dataStream != null)
            {
                return(File(dataStream, dataElement.ContentType, dataElement.FileName));
            }
            else
            {
                return(NotFound());
            }
        }
        public override SongGenre GetClass(DataElement data)
        {
            base.GetClass(data);
            if (!data.HasFeaturesExtracted())
            {
                data.GetFeatures();
            }

            int nvars = data.MeanVector.Length;

            double[] preparedData = new double[nvars];
            for (int j = 0; j < nvars; j++)
            {
                preparedData[j] = data.MeanVector[j];
            }
            double[] result = new double[nClasses];
            alglib.dfprocess(Decisionforest, preparedData, ref result);
            double max = Enumerable.Max(result);

            data.Probability = max;
            return((SongGenre)result.IndexOf(max));
        }
示例#32
0
        public async Task <ActionResult> Get(
            [FromRoute] string org,
            [FromRoute] string app,
            [FromRoute] int instanceOwnerPartyId,
            [FromRoute] Guid instanceGuid,
            [FromRoute] Guid dataGuid)
        {
            Instance instance = await _instanceService.GetInstance(app, org, instanceOwnerPartyId, instanceGuid);

            if (instance == null)
            {
                return(NotFound($"Did not find instance {instance}"));
            }

            DataElement dataElement = instance.Data.FirstOrDefault(m => m.Id.Equals(dataGuid.ToString()));

            if (dataElement == null)
            {
                return(NotFound("Did not find data element"));
            }

            string dataType = dataElement.DataType;

            bool?appLogic = await RequiresAppLogic(org, app, dataType);

            if (appLogic == null)
            {
                string error = $"Could not determine if {dataType} requires app logic for application {org}/{app}";
                _logger.LogError(error);
                return(BadRequest(error));
            }
            else if ((bool)appLogic)
            {
                return(await GetFormData(org, app, instanceOwnerPartyId, instanceGuid, dataGuid, dataType));
            }

            return(await GetBinaryData(org, app, instanceOwnerPartyId, instanceGuid, dataGuid, dataElement));
        }
示例#33
0
        private static T[] ConvertDataToProperType <T>(DataElement data, ArrayType arrayType)
        {
            switch (arrayType)
            {
            case ArrayType.MxDouble:
                return(DataExtraction.GetDataAsDouble(data).ToArrayLazily() as T[]);

            case ArrayType.MxSingle:
                return(DataExtraction.GetDataAsSingle(data).ToArrayLazily() as T[]);

            case ArrayType.MxInt8:
                return(DataExtraction.GetDataAsInt8(data).ToArrayLazily() as T[]);

            case ArrayType.MxUInt8:
                return(DataExtraction.GetDataAsUInt8(data).ToArrayLazily() as T[]);

            case ArrayType.MxInt16:
                return(DataExtraction.GetDataAsInt16(data).ToArrayLazily() as T[]);

            case ArrayType.MxUInt16:
                return(DataExtraction.GetDataAsUInt16(data).ToArrayLazily() as T[]);

            case ArrayType.MxInt32:
                return(DataExtraction.GetDataAsInt32(data).ToArrayLazily() as T[]);

            case ArrayType.MxUInt32:
                return(DataExtraction.GetDataAsUInt32(data).ToArrayLazily() as T[]);

            case ArrayType.MxInt64:
                return(DataExtraction.GetDataAsInt64(data).ToArrayLazily() as T[]);

            case ArrayType.MxUInt64:
                return(DataExtraction.GetDataAsUInt64(data).ToArrayLazily() as T[]);

            default:
                throw new NotSupportedException();
            }
        }
        public async Task Proceess_Start_With_Prefill_OK()
        {
            TestDataUtil.DeleteInstanceAndData("tdd", "endring-av-navn", 1337, new System.Guid("26233fb5-a9f2-45d4-90b1-f6d93ad40713"));
            TestDataUtil.PrepareInstance("tdd", "endring-av-navn", 1337, new System.Guid("26233fb5-a9f2-45d4-90b1-f6d93ad40713"));
            string token = PrincipalUtil.GetToken(1337);

            HttpClient client = SetupUtil.GetTestClient(_factory, "tdd", "endring-av-navn");

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "/tdd/endring-av-navn/instances/1337/26233fb5-a9f2-45d4-90b1-f6d93ad40713/process/start");

            HttpResponseMessage response = await client.SendAsync(httpRequestMessage);

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);

            // fetch instance and get data element id
            httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, $"/tdd/endring-av-navn/instances/1337/26233fb5-a9f2-45d4-90b1-f6d93ad40713/");
            response           = await client.SendAsync(httpRequestMessage);

            Instance    instance    = JsonConvert.DeserializeObject <Instance>(await response.Content.ReadAsStringAsync());
            DataElement dataElement = instance.Data.First();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);

            // fetch actual data and compare to expected prefill
            httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, $"/tdd/endring-av-navn/instances/1337/26233fb5-a9f2-45d4-90b1-f6d93ad40713/data/{dataElement.Id}");
            response           = await client.SendAsync(httpRequestMessage);

            string responseContent = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            var skjema = JsonConvert.DeserializeObject <App.IntegrationTests.Mocks.Apps.tdd.endring_av_navn.Skjema>(responseContent);

            Assert.Equal("01039012345", skjema.Tilknytninggrp9315.TilknytningTilNavnetgrp9316.TilknytningMellomnavn2grp9353.PersonMellomnavnAndreTilknyttetGardNavndatadef34931.value);
            Assert.Equal("Oslo", skjema.Tilknytninggrp9315.TilknytningTilNavnetgrp9316.TilknytningMellomnavn2grp9353.PersonMellomnavnAndreTilknyttetPersonsEtternavndatadef34930.value);
            Assert.Equal("Grev Wedels Plass", skjema.Tilknytninggrp9315.TilknytningTilNavnetgrp9316.TilknytningMellomnavn2grp9353.PersonMellomnavnAndreTilknytningBeskrivelsedatadef34928.value);
            TestDataUtil.DeleteInstanceAndData("tdd", "endring-av-navn", 1337, new System.Guid("26233fb5-a9f2-45d4-90b1-f6d93ad40713"));
        }
示例#35
0
        public void TestClone_CollectionOfItems()
        {
            PolicyObjectCollection<IDataItem> items = new PolicyObjectCollection<IDataItem>();

            items.Add(DataItem.CreateDataItem(new TranslateableLanguageItem(Guid.NewGuid()), DataType.String, "string 1"));
            items.Add(DataItem.CreateDataItem(new TranslateableLanguageItem(Guid.NewGuid()), DataType.String, "string 2"));
            items.Add(DataItem.CreateDataItem(new TranslateableLanguageItem(Guid.NewGuid()), DataType.String, "string 3"));

            DataElement elem = new DataElement(
                new TranslateableLanguageItem(Guid.NewGuid()),
                new TranslateableLanguageItem(Guid.NewGuid()),
                DataType.String,
                items
                );

            DataElement copy = elem.Clone() as DataElement;
            Assert.IsNotNull(copy.Data);

            PolicyObjectCollection<IDataItem> copyOfItems = copy.Data as PolicyObjectCollection<IDataItem>;
            Assert.IsNotNull(copyOfItems);

            Assert.AreEqual(3, copyOfItems.Count);

            for (int i = 0; i < copyOfItems.Count; i++)
            {
                IDataItem item = items[i];
                IDataItem copyOfItem = copyOfItems[i];

                Assert.IsNotNull(item);
                Assert.IsNotNull(copyOfItem);

                Assert.AreNotEqual(item.Identifier, copyOfItem.Identifier);
                Assert.AreNotEqual(item.Name.Identifier, copyOfItem.Name.Identifier);
                Assert.AreEqual(item.Name.Value, copyOfItem.Name.Value);
                Assert.AreEqual(item.ReadOnly, copyOfItem.ReadOnly);
                Assert.AreEqual(item.Value, copyOfItem.Value);
            }
        }
        // SEQUENTIAL_MUTATION
        //
        public override void sequentialMutation(DataElement obj)
        {
            if (signed)
            {
                long value = (long)obj.DefaultValue + values[currentCount];
                if (obj is Dom.String)
                {
                    obj.MutatedValue = new Variant(value.ToString());
                }
                else
                {
                    obj.MutatedValue = new Variant(value);
                }
                obj.mutationFlags = MutateOverride.Default;
            }
            else
            {
                ulong value = (ulong)obj.DefaultValue;
                if (values[currentCount] < 0)
                {
                    value -= (ulong)-(values[currentCount]);
                }
                else
                {
                    value += (ulong)values[currentCount];
                }

                if (obj is Dom.String)
                {
                    obj.MutatedValue = new Variant(value.ToString());
                }
                else
                {
                    obj.MutatedValue = new Variant(value);
                }
                obj.mutationFlags = MutateOverride.Default;
            }
        }
示例#37
0
        /// <summary>
        ///     Re-creates a DICOM file meta information instance from a DICOM
        ///     output stream. The output stream position is assumed to be the
        ///     DICOM stream's start position (mostly zero).
        /// </summary>
        public override void LoadFrom(Stream stream)
        {
            base.streamPosition = stream.Position;
            DicomContext.Set(stream, null);
            byte[] buffer = new byte[132];
            stream.Read(buffer, 0, 132);
            filePreamble = TransferSyntax.ToString(buffer, 128);
            filePreamble = filePreamble.Replace("\0", null);
            string dicomPrefix = TransferSyntax.ToString(buffer, 128, 4);

            if (dicomPrefix.Equals(DicomPrefix))
            {
                // group length
                DataElement element = new DataElement(stream, TransferSyntax);
                Add(element);
                uint groupLength    = (uint)element.Value[0];
                long streamPosition = stream.Position;
                // consider omission of current stream position
                buffer = new byte[streamPosition + groupLength];
                stream.Read(buffer, (int)streamPosition, (int)groupLength);
                MemoryStream memoryStream = new MemoryStream(buffer);
                try
                {
                    memoryStream.Seek(streamPosition, 0);
                    base.LoadFrom(memoryStream);
                }
                finally
                {
                    memoryStream.Close();
                }
            }
            else
            {
                stream.Close();
                throw new DicomException("Working with a non-valid DICOM file.");
            }
            DicomContext.Reset();
        }
示例#38
0
        /// <summary>
        /// Gets the target objects from the specified source.
        /// </summary>
        /// <param name="sourceElement">The source element to consider.</param>
        /// <param name="pathDetail">The path detail to consider.</param>
        /// <param name="scope">The scope to consider.</param>
        /// <param name="scriptVariableSet">The script variable set to consider.</param>
        /// <param name="log">The log to consider.</param>
        /// <returns>Returns the target objects.</returns>
        public static List <object> Get(
            DataElement sourceElement            = null,
            DataElementSet pathDetail            = null,
            IBdoScope scope                      = null,
            IScriptVariableSet scriptVariableSet = null,
            IBdoLog log = null)
        {
            List <object> objects = new List <object>();

            if (sourceElement == null)
            {
                log?.AddError("Source element missing");
            }
            else
            {
                if (!(sourceElement.Items[0] is RepositoryFile file))
                {
                    log?.AddError("Source file missing");
                }
            }

            return(objects);
        }
示例#39
0
        private Variant doFixupImpl(DataElement obj)
        {
            System.Diagnostics.Debug.Assert(parent != null);

            if (elements == null)
            {
                elements = new Dictionary <string, DataElement>();

                foreach (var kv in refs)
                {
                    var elem = obj.find(kv.Value);
                    if (elem == null)
                    {
                        throw new PeachException(string.Format("{0} could not find ref element '{1}'", this.GetType().Name, kv.Value));
                    }

                    elem.Invalidated += new InvalidatedEventHandler(OnInvalidated);
                    elements.Add(kv.Key, elem);
                }
            }

            return(fixupImpl());
        }
示例#40
0
        /// <inheritdoc />
        public void DeleteFormAttachment(string org, string app, int instanceOwnerId, Guid instanceId, string attachmentType, string attachmentId)
        {
            string developer        = AuthenticationHelper.GetDeveloperUserName(_httpContextAccessor.HttpContext);
            string testDataForParty = _settings.GetTestdataForPartyPath(org, app, developer);
            string instanceFilePath = $"{testDataForParty}{instanceOwnerId}/{instanceId}/{instanceId}.json";

            lock (Guard(instanceId))
            {
                string instanceData = File.ReadAllText(instanceFilePath);

                Instance    instance   = JsonConvert.DeserializeObject <Instance>(instanceData);
                DataElement removeFile = instance.Data.Find(m => m.Id == attachmentId);

                instance.Data.Remove(removeFile);

                string instanceDataAsString = JsonConvert.SerializeObject(instance);
                File.WriteAllText(instanceFilePath, instanceDataAsString);
            }

            string pathToDelete = $"{_settings.GetTestdataForPartyPath(org, app, developer)}{instanceOwnerId}/{instanceId}/data/{attachmentId.AsFileName()}";

            File.Delete(pathToDelete);
        }
示例#41
0
        void RemoveElement(DataElement element)
        {
            CrackNode currentModel;

            if (!crackMap.TryGetValue(element, out currentModel))
            {
                return;
            }

            if (element.parent != null && crackMap.ContainsKey(element.parent))
            {
                crackMap[element.parent].Children.Remove(currentModel);
            }
            crackMap.Remove(element);

            // Remove any elements that have 'element' as a parent
            var res = crackMap.Select(kv => kv.Key).Where(k => k.parent == element).ToList();

            foreach (var elem in res)
            {
                RemoveElement(elem);
            }
        }
示例#42
0
    // Get next child
    public DataElement GetNext(string title)
    {
        string tempTitle;

        foreach (XmlNode child in currentListElement.ChildNodes)
        {
            DataElement result = null;
            if (child.Attributes["Title"].Value == title)
            {
                // create object that contains the data about the child nodes Titles
                result       = new DataElement();
                result.Title = child.Attributes["Title"].Value;
                if (child.FirstChild != null)     // means no child nodes
                {
                    currentListElement = child.FirstChild;
                    // add subelements subtitles
                    result.SubTitles.AddRange(GetChildTitles());
                }
                return(result);
            }
        }
        return(null);
    }
示例#43
0
        public void TestClone2()
        {
            IDataMethod fileMethod = new DataMethod("CurrentFile");
            IDataSource dataSource = new DataSource("this", "this", fileMethod);
            IDataElement dataElement = new DataElement(Guid.NewGuid(), new NonTranslateableLanguageItem("file"), new NonTranslateableLanguageItem(""), DataType.Object, dataSource);
            IParameter parameter = new Parameter("file", dataElement);


            IParameter parameterCopy = ((PolicyObject)parameter).Clone() as IParameter;

            Assert.AreNotEqual(parameter.Identifier, parameterCopy.Identifier, "unexpected identifier in condition.dataleft.data.method.parameters[0]");
            Assert.AreEqual(parameter.Name.Identifier, parameterCopy.Name.Identifier, "unexpected name in condition.dataleft.data.method.parameters[0]"); //nontranslateable
            Assert.AreEqual(parameter.Name.Value, parameterCopy.Name.Value, "unexpected name in condition.dataleft.data.method.parameters[0]");

            IDataElement dataElementCopy = parameterCopy.Value as IDataElement;

            Assert.IsNotNull(dataElementCopy, "unexpected object type in condition1copy.dataleft.data.method.parameters[0].value");
            Assert.AreNotEqual(dataElement.Identifier, dataElementCopy.Identifier);
            Assert.AreEqual(dataElement.Name.Identifier, dataElementCopy.Name.Identifier);
            Assert.AreEqual(dataElement.Name.Value, dataElementCopy.Name.Value);
            Assert.AreEqual(dataElement.DisplayName.Identifier, dataElementCopy.DisplayName.Identifier);
            Assert.AreEqual(dataElement.DisplayName.Value, dataElementCopy.DisplayName.Value);
            Assert.AreEqual(dataElement.Type, dataElementCopy.Type);
        }
示例#44
0
 private static void SaveUserProperties(DataElement container, PropertiesContainer properties)
 {
   foreach(KeyValuePair<string, IProperty> kvp in properties.UserProperties)
   {
     DataElement element = container.CreateChild("property");
     element.CreateAttribute("name", kvp.Key);
     element.CreateAttribute("value", kvp.Value.ToString());
   }
 }
示例#45
0
 private static void LoadUserProperties(DataElement container, PropertiesContainer properties)
 {
   IDictionary<string, IProperty> propertiesMap = properties.UserProperties;
   foreach(DataElement element in container.CollectChildren("property"))
   {
     string name = element.GetAttribValue("name");
     IProperty property;
     if(propertiesMap.TryGetValue(name, out property))
     {
       string valueStr = element.GetAttribValue("value");
       string errorStr = property.TrySetValue(valueStr);
       if(errorStr != null)
       {
         throw new InvalidDataException();
       }
     }
   }
 }
示例#46
0
 private static void SaveShapeCircle(DataElement node, ShapeCircle shapeCircle)
 {
   node.CreateAttribute("position", shapeCircle.Position.ToString());
   node.CreateAttribute("radius", shapeCircle.Radius.ToString());
   node.CreateAttribute("angle", shapeCircle.Angle.ToString());
 }
示例#47
0
 private static void LoadShapeCircle(DataElement node, ShapeCircle shapeCircle)
 {
   shapeCircle.Position = Vector2f.Parse(node.GetAttribValue("position"));
   shapeCircle.Radius = float.Parse(node.GetAttribValue("radius"));
   shapeCircle.Angle = float.Parse(node.GetAttribValue("angle"));
 }
示例#48
0
    private static void SaveShape(DataElement node, Shape shape)
    {
      node.CreateAttribute("template_name", shape.Template.Name);
      node.CreateAttribute("z_order", shape.ZOrder.ToString());
      if(shape.EditableColor)
      {
        node.CreateAttribute("color", shape.Color.ToArgb().ToString());
      }

      DataElement circlesEl = node.CreateChild("circles");
      foreach(ShapeCircle circle in shape.Circles)
      {
        SaveShapeCircle(circlesEl.CreateChild("circle"), circle);
      }
      
      DataElement propertiesEl = node.CreateChild("user_properties");
      SaveUserProperties(propertiesEl, shape);
    }
示例#49
0
    private static void LoadShape(DataElement node, Shape shape, ShapeTemplatesSet templates)
    {
      string templateName = node.GetAttribValue("template_name");
      ShapeTemplate template = templates.FindTemplate(templateName);
      shape.Template = template;
      shape.ZOrder = float.Parse(node.GetAttribValue("z_order"));

      string colorStr = node.GetAttribValue("color");
      if(colorStr != null)
      {
        shape.Color = Color.FromArgb(int.Parse(colorStr));
      }

      if(shape.EditableColor)
      {
        node.CreateAttribute("color", shape.Color.ToArgb().ToString());
      }

      DataElement circlesEl = node.GetChild("circles");
      IList<DataElement> circleElList = circlesEl.CollectChildren("circle");
      IList<ShapeCircle> circles = shape.Circles;
      for(int index = 0; index < circleElList.Count; ++index)
      {
        DataElement circleEl = circleElList[index];
        ShapeCircle circle = circles[index];
        LoadShapeCircle(circleEl, circle);
      }
      
      DataElement userPropertiesEl = node.GetChild("user_properties");
      LoadUserProperties(userPropertiesEl, shape);
    }
示例#50
0
 private static void SaveScene(DataElement sceneElement, Scene scene)
 {
   sceneElement.CreateAttribute("size", scene.Size.ToString());
   DataElement sceneObjectContainer = sceneElement.CreateChild("shapes");
   foreach(Shape shape in scene.Shapes)
   {
     DataElement shapeEl = sceneObjectContainer.CreateChild("shape");
     shapeEl.CreateAttribute("name", shape.Name);
     SaveShape(shapeEl, shape);
   }
   
   DataElement propertiesContainer = sceneElement.CreateChild("properties");
   SaveUserProperties(propertiesContainer, scene);
 }
示例#51
0
 private static void CreateImageTemplate(DataElement node, string folder, ShapeTemplatesSet templates)
 {
   TemplateBaseInfo info = LoadTemplateBaseInfo(node, folder);
   ImageTemplate template = templates.CreateImageTemplate(info.name, info.propertiesFilepath);
   string relDiffuseFilepath = node.GetAttribValue("rel_diffuse_filepath");
   template.DiffuseFilepath = DirMethods.EvaluateAbsolutePath(folder, relDiffuseFilepath);
   LoadRectTemplate(node, template);
 }
示例#52
0
 private static void LoadCircleTemplate(DataElement node, CircleTemplate template)
 {
   LoadBaseTemplate(node, template);
   string solidStr = node.GetAttribValue("solid");
   template.Solid = bool.Parse(solidStr);
 }
示例#53
0
 private static void LoadRectTemplate(DataElement node, RectTemplate template)
 {
   LoadBaseTemplate(node, template);
   string normalizedStr = node.GetAttribValue("normalized");
   template.Normalized = bool.Parse(normalizedStr);
 }
示例#54
0
    private static void LoadBaseTemplate(DataElement node, ShapeTemplate template)
    {
      string colorStr = node.GetAttribValue("color");
      string backgroudStr = node.GetAttribValue("background");
      template.Color = Color.FromArgb(int.Parse(colorStr));
      template.Backgroud = bool.Parse(backgroudStr);

      string editableColorStr = node.GetAttribValue("editable_color");
      if(editableColorStr != null)
      {
        template.EditableColor = bool.Parse(editableColorStr);
      }
      
      DataElement circlesEl = node.GetChild("circles");
      List<ShapeCircle> allCircles = template.RootCircle.AllCircles;
      int index = 0;
      foreach(DataElement circleEl in circlesEl.CollectChildren("circle"))
      {
        string positionStr = circleEl.GetAttribValue("position");
        string radiusStr = circleEl.GetAttribValue("radius");
        string angleStr = circleEl.GetAttribValue("angle");
        ShapeCircle circle = allCircles[index];
        circle.Position = Vector2f.Parse(positionStr);
        circle.Radius = float.Parse(radiusStr);
        circle.Angle = float.Parse(angleStr);
        ++index;
      }
      
      DataElement circlesSettingsEl = node.GetChild("circles_settings");
      index = 0;
      foreach(DataElement circleSettingsEl in circlesSettingsEl.CollectChildren("settings"))
      {
        ShapeTemplate.ShapeCircleSettings settings = template.PerCircleSettings[index];
        string enableOffsetStr = circleSettingsEl.GetAttribValue("enable_offset");
        string enableRotateStr = circleSettingsEl.GetAttribValue("enable_rotate");
        settings.EnableOffset = bool.Parse(enableOffsetStr);
        settings.EnableRotate = bool.Parse(enableRotateStr);
        ++index;
      }
    }
示例#55
0
 private static TemplateBaseInfo LoadTemplateBaseInfo(DataElement node, string folder)
 {
   TemplateBaseInfo info = new TemplateBaseInfo();
   info.name = node.GetAttribValue("name");
   string relPropertiesFilepath = node.GetAttribValue("rel_properties_filepath");
   if(!string.IsNullOrEmpty(relPropertiesFilepath))
   {
     info.propertiesFilepath = DirMethods.EvaluateAbsolutePath(folder, relPropertiesFilepath);
   }
   
   return info;
 }
示例#56
0
 private static void CreateRectTemplate(DataElement node, string folder, ShapeTemplatesSet templates)
 {
   TemplateBaseInfo info = LoadTemplateBaseInfo(node, folder);
   RectTemplate template = templates.CreateRectTemplate(info.name, info.propertiesFilepath);
   LoadRectTemplate(node, template);
 }
示例#57
0
        internal InboundInterfaceElement GetInboundRequestElement()
        {
            var inboundRequest = new InboundInterfaceElement();

            // Initialize User
            inboundRequest.user = ToaUserUtil.GetInboundUser();
            
            //Initialize Head
            var head = new HeadElement();
            head.allow_change_date = ToaStringsUtil.GetString(_allowChangeDate);
            head.date = _uploadDate;
            head.default_appointment_pool = _defaultAppointmentPool;
            head.id = _transactionId;
            head.processing_mode = ToaStringsUtil.GetString(_processingMode);
            head.properties_mode = ToaStringsUtil.GetString(_propertiesMode);
            head.upload_type = ToaStringsUtil.GetString(_uploadType);
            head.provider_group = _providerGroup;
            if(null != _activitySettings)
                head.appointment = _activitySettings.GetActivitySettings();
            if(null != _inventorySettings)
                head.inventory = _inventorySettings.GetInventorySettings();
            inboundRequest.head = head;

            //initialize Data
            var data = new DataElement();
            var noOfModels = _dataModels.Count;
            CommandElement [] commands = null;
            ProviderElement [] providers = null;
            if (UploadType == UploadType.Full) // Full Upload
            {
                providers = new ProviderElement[noOfModels];
                foreach (var model in _dataModels)
                {
                    if (model is WorkOrderModel)
                    {
                        var activityModel = ((WorkOrderModel) model);
                        var providerElement = new ProviderElement();
                        providerElement.appointment = activityModel.GetActivityElement();
                        providers[--noOfModels] = providerElement;
                    }
                    else if (model is InventoryModel)
                    {
                        //TODO: Need to initialize inventory object 
                    }
                }
                data.providers = providers;
            }
            else // Incremental Upload
            {
                commands = new CommandElement[noOfModels];
                foreach (var model in _dataModels)
                {
                    if (model is WorkOrderModel)
                    {
                        var workOrderModel = ((WorkOrderModel)model);
                        var command = new CommandElement();
                        command.appointment = workOrderModel.GetActivityElement();
                        command.date = workOrderModel.AssignedDate;
                        command.external_id = workOrderModel.ExternalId;
                        command.type = ToaStringsUtil.GetString(workOrderModel.CommandType);
                        commands[--noOfModels] = command;
                    }
                    else if (model is InventoryModel)
                    {
                        //TODO: Need to initialize inventory object
                    }
                }
                data.commands = commands;
            }
            
            

            inboundRequest.data = data;

            return inboundRequest;
        }
示例#58
0
 private static void LoadScene(DataElement sceneElement, Scene scene, ShapeTemplatesSet templates)
 {
   scene.Size = Vector2f.Parse(sceneElement.GetAttribValue("size"));
   DataElement shapesEl = sceneElement.GetChild("shapes");
   foreach(DataElement shapeEl in shapesEl.CollectChildren("shape"))
   {
     string name = shapeEl.GetAttribValue("name");
     Shape shape = scene.CreateShape(name);
     LoadShape(shapeEl, shape, templates);
   }
   
   DataElement propertiesContainer = sceneElement.GetChild("properties");
   if(propertiesContainer != null)
   {
     LoadUserProperties(propertiesContainer, scene);
   }
 }
示例#59
0
 private static void SaveBaseTemplate(DataElement node, string folder, ShapeTemplate template)
 {
   node.CreateAttribute("name", template.Name);
   node.CreateAttribute("color", template.Color.ToArgb().ToString());
   node.CreateAttribute("editable_color", template.EditableColor.ToString());
   node.CreateAttribute("background", template.Backgroud.ToString());
   DataElement circlesEl = node.CreateChild("circles");
   foreach(ShapeCircle circle in template.RootCircle.AllCircles)
   {
     DataElement circleEl = circlesEl.CreateChild("circle");
     circleEl.CreateAttribute("position", circle.Position.ToString());
     circleEl.CreateAttribute("radius", circle.Radius.ToString());
     circleEl.CreateAttribute("angle", circle.Angle.ToString());
   }
   
   DataElement circlesSettingsEl = node.CreateChild("circles_settings");
   foreach(ShapeTemplate.ShapeCircleSettings settings in template.PerCircleSettings)
   {
     DataElement circleSettingsEl = circlesSettingsEl.CreateChild("settings");
     circleSettingsEl.CreateAttribute("enable_offset", settings.EnableOffset.ToString());
     circleSettingsEl.CreateAttribute("enable_rotate", settings.EnableRotate.ToString());
   }
   
   if(!string.IsNullOrEmpty(template.PropertiesFilepath))
   {
     string relPropertiesFilepath = DirMethods.EvaluateRelativePath(folder, template.PropertiesFilepath);
     node.CreateAttribute("rel_properties_filepath", relPropertiesFilepath);
   }
 }
示例#60
0
 private static void SaveRectTemplate(DataElement node, string folder, RectTemplate template)
 {
   SaveBaseTemplate(node, folder, template);
   node.CreateAttribute("normalized", template.Normalized.ToString());
 }