Beispiel #1
0
        /// <summary>
        /// Get an Entity in the specified Version from DataTimeline using XmlImport
        /// </summary>
        /// <param name="entityId">EntityId</param>
        /// <param name="changeId">ChangeId to retrieve</param>
        /// <param name="defaultCultureDimension">Default Language</param>
        public Import.ImportEntity GetEntityVersion(int entityId, int changeId, int? defaultCultureDimension)
        {
            // Get Timeline Item
            string timelineItem;
            try
            {
                timelineItem = Context.SqlDb.DataTimeline.Where(d => d.Operation == Constants.DataTimelineEntityStateOperation && d.SourceID == entityId && d.SysLogID == changeId).Select(d => d.NewData).SingleOrDefault();
            }
            catch (InvalidOperationException ex)
            {
                throw new InvalidOperationException(string.Format("Error getting EntityId {0} with ChangeId {1} from DataTimeline. {2}", entityId, changeId, ex.Message));
            }
            if (timelineItem == null)
                throw new InvalidOperationException(string.Format("EntityId {0} with ChangeId {1} not found in DataTimeline.", entityId, changeId));

            // Parse XML
            var xEntity = XElement.Parse(timelineItem);
            var assignmentObjectTypeName = xEntity.Attribute("AssignmentObjectType").Value;
            var assignmentObjectTypeId = new DbShortcuts(Context).GetAssignmentObjectType(assignmentObjectTypeName).AssignmentObjectTypeID;

            // Prepare source and target-Languages
            if (!defaultCultureDimension.HasValue)
                throw new NotSupportedException("GetEntityVersion without defaultCultureDimension is not yet supported.");

            var defaultLanguage = Context.Dimensions.GetDimension(defaultCultureDimension.Value).ExternalKey;
            var targetDimensions = Context.Dimensions.GetLanguages();
            var allSourceDimensionIds = ((IEnumerable<object>)xEntity.XPathEvaluate("/Value/Dimension/@DimensionID")).Select(d => int.Parse(((XAttribute)d).Value)).ToArray();
            var allSourceDimensionIdsDistinct = allSourceDimensionIds.Distinct().ToArray();
            var sourceDimensions = Context.Dimensions.GetDimensions(allSourceDimensionIdsDistinct).ToList();
            int sourceDefaultDimensionId;
            if (allSourceDimensionIdsDistinct.Contains(defaultCultureDimension.Value))	// if default culture exists in the Entity, sourceDefaultDimensionId is still the same
                sourceDefaultDimensionId = defaultCultureDimension.Value;
            else
            {
                var sourceDimensionsIdsGrouped = (from n in allSourceDimensionIds group n by n into g select new { DimensionId = g.Key, Qty = g.Count() }).ToArray();
                sourceDefaultDimensionId = sourceDimensionsIdsGrouped.Any() ? sourceDimensionsIdsGrouped.OrderByDescending(g => g.Qty).First().DimensionId : defaultCultureDimension.Value;
            }

            // Load Entity from Xml unsing XmlImport
            return XmlImport.GetImportEntity(xEntity, assignmentObjectTypeId, targetDimensions, sourceDimensions, sourceDefaultDimensionId, defaultLanguage);
        }
Beispiel #2
0
        public void AddRemoveApp()
        {
            var db = EavContext.Instance();
            var DbS = new DbShortcuts(db);
            // Add new App
            var app = DbS.AddApp("Test Clean Remove");
            db.AppId = app.AppID;

            // Add new AttributeSet
            var attributeSet = db.AttSetCommands.AddAttributeSet("Sample Attribute Set", "Sample Attribute Set Description", null, "");
            db.AttrCommands.AppendAttribute(attributeSet, "Attribute1", "String", true);
            var attribute2 = db.AttrCommands.AppendAttribute(attributeSet, "Attribute2", "String");
            var attribute3 = db.AttrCommands.AppendAttribute(attributeSet, "Attribute3", "String");
            var attribute4 = db.AttrCommands.AppendAttribute(attributeSet, "Attribute4", "Entity");

            // Add new Entities
            var values = new Dictionary<string, ValueToImport>
            {
                {"Attribute1", new ValueToImport{ Value = "Sample Value 1"}},
                {"Attribute2", new ValueToImport{ Value = "Sample Value 2"}},
                {"Attribute3", new ValueToImport{ Value = "Sample Value 3"}},
            };
            var entity1 = db.EntCommands.AddEntity(attributeSet, values, null, null, dimensionIds: new[] { 2 });
            values.Add("Attribute4", new ValueToImport { Value = new[] { entity1.EntityID } });
            var entity2 = db.EntCommands.AddEntity(attributeSet, values, null, null, dimensionIds: new[] { 2 });

            // Update existing Entity
            values["Attribute3"].Value = "Sample Value 3 modified";
            db.EntCommands.UpdateEntity(entity1.EntityID, values, dimensionIds: new[] { 2 });

            // update existing AttributeSets
            db.AttrCommands.UpdateAttribute(attribute2.AttributeID, "Attribute2Renamed");
            db.AttSetCommands.RemoveAttributeInSet(attribute3.AttributeID, attributeSet.AttributeSetID);

            // Delete the App
            DbS.DeleteApp(app.AppID);
        }
Beispiel #3
0
        public void DimensionsTest()
        {
            var Context = new EavContext();
            var DbS = new DbShortcuts(Context);

            var Entity = DbS.GetEntity(277);

            //Context.UpdateEntity();
        }