public IRelationship CreateRelationship(TransactionFramework.ISoapTransactionLink transactionLink, Guid domainId, Guid rootMapId, Dictionary <ConnectionType, INode> nodes, RelationshipType relationshipType, string originalId)
        {
            FacadeRelationship facadeRelationship = new FacadeRelationship();

            InProcess.InProcessRelationship relationship = new InProcess.InProcessRelationship(MapManager);
            relationship.OriginLink       = transactionLink;
            relationship.Facade           = facadeRelationship;
            relationship.Id               = Guid.NewGuid();
            relationship.DomainId         = domainId;
            relationship.RootMapId        = rootMapId;
            relationship.RelationshipType = relationshipType;
            relationship.OriginalId       = originalId;
            relationship.Status           = LoadState.Full;

            facadeRelationship.BaseRelationship = relationship;

            foreach (KeyValuePair <ConnectionType, INode> relationshipContext in nodes)
            {
                ConnectionSet connection = ConnectionSetFactory.Instance.GetConnection(relationshipContext.Value, facadeRelationship, relationshipContext.Key);

                INodeManager newRelationshipNodes = relationship.Nodes;
                newRelationshipNodes.Load(connection);

                IRelationshipManager nodeRelationships = relationshipContext.Value.Relationships;
                nodeRelationships.Load(connection);
            }

            InProcessRelationships.Add(transactionLink, facadeRelationship);

            return(facadeRelationship);
        }
Beispiel #2
0
        public MemoryBookForm(
            IMemoryBookUniverseManager memoryBookUniverseManager,
            ISeedDataManager seedDataManager,
            IMemberManager memberManager,
            IRelationshipManager relationshipManager,
            IGroupProvider groupManager,
            IViewCoordinator groupViewCoordinator,
            IMemberDetailManager memberDetailManager,
            IRelationshipDetailManager relationshipDetailManager)
        {
            Contract.RequiresNotNull(memoryBookUniverseManager, nameof(memoryBookUniverseManager));
            Contract.RequiresNotNull(seedDataManager, nameof(seedDataManager));
            Contract.RequiresNotNull(memberManager, nameof(memberManager));
            Contract.RequiresNotNull(relationshipManager, nameof(relationshipManager));
            Contract.RequiresNotNull(groupManager, nameof(groupManager));
            Contract.RequiresNotNull(groupViewCoordinator, nameof(groupViewCoordinator));
            Contract.RequiresNotNull(memberDetailManager, nameof(memberDetailManager));
            Contract.RequiresNotNull(relationshipDetailManager, nameof(relationshipDetailManager));

            this.memoryBookUniverseManager = memoryBookUniverseManager;
            this.seedDataManager           = seedDataManager;
            this.memberManager             = memberManager;
            this.relationshipManager       = relationshipManager;
            this.groupManager              = groupManager;
            this.groupViewCoordinator      = groupViewCoordinator;
            this.memberDetailManager       = memberDetailManager;
            this.relationshipDetailManager = relationshipDetailManager;

            this.InitializeComponent();
        }
        public GraphLinkManager(string context)
        {
            _graph = new SitecoreGraph();

            var computedLinkItems = new List<IComputedLinkItem>();

            computedLinkItems.Add(new AncestorComputedLinkItem("team", "ground"));
            computedLinkItems.Add(new DescendantComputedLinkItem("staff", "team"));

            _computedLinkManager = new SitecoreComputedLinkManager(computedLinkItems);

            List<BaseRelationship> relationships = new List<BaseRelationship>();

            relationships.Add(new SitecoreTemplateRelationship() { SubjectTemplateName = "league", Name = "league_to_team", ObjectTemplateName = "team" });
            relationships.Add(new SitecoreTemplateRelationship() { SubjectTemplateName = "team", Name = "team_to_player", ObjectTemplateName = "player" });
            relationships.Add(new SitecoreTemplateRelationship() { SubjectTemplateName = "newsstory", Name = "news_to_item", ObjectTemplateName = "*" });
            relationships.Add(new SitecoreTemplateRelationship() { SubjectTemplateName = "ground", Name = "home_of_team", ObjectTemplateName = "team" });
            relationships.Add(new SitecoreTemplateRelationship() { SubjectTemplateName = "team", Name = "team_staff", ObjectTemplateName = "staff" });
            
            IRelationshipProvider relationshipProvider = new RelationshipProvider(relationships);

            _relationshipManager = new RelationshipManager(relationshipProvider);

            Context = context;
        }
Beispiel #4
0
        public bool LoadRelationship(SoapNodeManager nodeManager)
        {
            Metadata.Clear();
            INodeManager nodeSetManager = Nodes;

            nodeSetManager.Clear();

            foreach (KeyValuePair <ServerObjects.MetadataContext, ServerObjects.Metadata> metadataPair in ServiceRelationship.Metadata)
            {
                if (metadataPair.Value.NodeUid.HasValue)
                {
                    INode node = nodeManager.FindNode(metadataPair.Value.NodeUid.Value);
                    Metadata.Load(metadataPair.Value, node);
                }
                else if (metadataPair.Value.RelationshipUid.HasValue)
                {
                    Metadata.Load(metadataPair.Value, null);
                }
            }

            foreach (KeyValuePair <Guid, Guid> relationship in ServiceRelationship.Nodes)
            {
                Guid descriptorTypeId = relationship.Key;
                Guid nodeId           = relationship.Value;

                // TODO: There needs to be a proper check for the ConnectionType that will perform an appropriate operation if none exists.
                if (MapManager.ConnectionTypes.ContainsKey(descriptorTypeId))
                {
                    INode          node;
                    ConnectionType connectionType = MapManager.ConnectionTypes[descriptorTypeId];

                    node = nodeManager.FindNode(nodeId);

                    ConnectionSet connectionSet = ConnectionSetFactory.Instance.GetConnection(node, this, connectionType);

                    if (node.Status != LoadState.None)
                    {
                        IRelationshipManager relationshipSetManager = node.Relationships;

                        relationshipSetManager.Load(connectionSet);
                    }

                    nodeSetManager.Load(connectionSet);
                }
            }

            Status = LoadState.Full;

            ProcessDelayedActions();

            return(true);
        }
Beispiel #5
0
        public bool LoadNode(SoapRelationshipManager relationshipManager)
        {
            switch (Status)
            {
            case LoadState.None:
                return(false);

            case LoadState.Partial:
            {
                IRelationshipManager relationships = Relationships;
                relationships.Clear();

                break;
            }

            case LoadState.Full:
                break;

            default:
                return(false);
            }

            Metadata.Clear();

            foreach (KeyValuePair <ServerObjects.MetadataContext, ServerObjects.Metadata> metadataPair in ServiceNode.Metadata)
            {
                if (metadataPair.Value.RelationshipUid.HasValue && metadataPair.Value.RelationshipUid != Guid.Empty)
                {
                    if (relationshipManager.ProxyRelationships.ContainsKey(metadataPair.Value.RelationshipUid.Value))
                    {
                        IRelationship relationship = relationshipManager.ProxyRelationships[metadataPair.Value.RelationshipUid.Value];
                        Metadata.Load(metadataPair.Value, relationship);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else if (metadataPair.Value.NodeUid.HasValue && metadataPair.Value.NodeUid != Guid.Empty)
                {
                    Metadata.Load(metadataPair.Value, null);
                }
            }

            Status = LoadState.Full;

            ProcessDelayedActions();

            return(true);
        }
Beispiel #6
0
        public virtual void ConnectNode(ConnectionType connectionType, INode node, ref Soap.TransactionFramework.TransactionChain chain)
        {
            InProcess.InProcessRelationship inProcessRelationship = this as InProcess.InProcessRelationship;
            ConnectionSet connectionSet;

            if (inProcessRelationship != null)
            {
                connectionSet = ConnectionSetFactory.Instance.GetConnection(node, inProcessRelationship.Facade, connectionType);
            }
            else
            {
                connectionSet = ConnectionSetFactory.Instance.GetConnection(node, this, connectionType);
            }

            INodeManager nodes = Nodes;

            nodes.Load(connectionSet);

            IRelationshipManager relationships = node.Relationships;

            relationships.Load(connectionSet);
        }
        private void DeleteRelationship(Guid relationshipUid)
        {
            if (ProxyRelationships.ContainsKey(relationshipUid))
            {
                IRelationship           relationship = ProxyRelationships[relationshipUid];
                IEnumerable <NodeTuple> nodeTuples   = relationship.Nodes.FindNodes();

                foreach (NodeTuple nodeTuple in nodeTuples)
                {
                    IRelationshipManager relationships = nodeTuple.Node.Relationships;
                    relationships.Remove(relationship);
                }

                INodeManager nodes = relationship.Nodes;
                nodes.Clear();

                ProxyRelationships.Remove(relationshipUid);
            }

            if (ServiceRelationships.ContainsKey(relationshipUid))
            {
                ServiceRelationships.Remove(relationshipUid);
            }
        }
        public RelationshipCommandController(IRelationshipManager manager)
        {
            Contract.RequiresNotNull(manager, nameof(manager));

            this.manager = manager;
        }