Example #1
0
        public override bool EndId(object id, Group group)
        {
            this._endId      = id;
            this._endIdGroup = group;

            long nodeId = nodeId(id, group);

            _relationshipRecord.SecondNode = nodeId;
            return(true);
        }
Example #2
0
        public override bool StartId(object id, Group group)
        {
            this._startId      = id;
            this._startIdGroup = group;

            long nodeId = nodeId(id, group);

            _relationshipRecord.FirstNode = nodeId;
            return(true);
        }
Example #3
0
        private long NodeId(object id, Group group)
        {
            long nodeId = _idMapper.get(id, group);

            if (nodeId == ID_NOT_FOUND)
            {
                _relationshipRecord.InUse = false;
                return(ID_NOT_FOUND);
            }

            return(nodeId);
        }
Example #4
0
        public override void EndOfEntity()
        {
            if (_relationshipRecord.inUse() && _relationshipRecord.FirstNode != ID_NOT_FOUND && _relationshipRecord.SecondNode != ID_NOT_FOUND && _relationshipRecord.Type != -1)
            {
                _relationshipRecord.Id = _relationshipIds.next();
                if (_doubleRecordUnits)
                {
                    // simply reserve one id for this relationship to grow during linking stage
                    _relationshipIds.next();
                }
                _relationshipRecord.NextProp           = CreateAndWritePropertyChain();
                _relationshipRecord.FirstInFirstChain  = false;
                _relationshipRecord.FirstInSecondChain = false;
                _relationshipRecord.FirstPrevRel       = Record.NO_NEXT_RELATIONSHIP.intValue();
                _relationshipRecord.SecondPrevRel      = Record.NO_NEXT_RELATIONSHIP.intValue();
                _relationshipStore.prepareForCommit(_relationshipRecord, _prepareIdSequence.apply(_relationshipRecord.Id));
                _relationshipStore.updateRecord(_relationshipRecord);
                _relationshipCount++;
                _typeCounts.increment(_relationshipRecord.Type);
            }
            else
            {
                if (_validateRelationshipData)
                {
                    ValidateNode(_startId, Type.START_ID);
                    ValidateNode(_endId, Type.END_ID);
                    if (_relationshipRecord.Type == -1)
                    {
                        throw new MissingRelationshipDataException(Type.TYPE, RelationshipDataString() + " is missing " + Type.TYPE + " field");
                    }
                }
                _badCollector.collectBadRelationship(_startId, Group(_startIdGroup).name(), _type, _endId, Group(_endIdGroup).name(), _relationshipRecord.FirstNode == ID_NOT_FOUND ? _startId : _endId);
                EntityPropertyCount = 0;
            }

            _relationshipRecord.clear();
            _relationshipRecord.InUse = true;
            _startId      = null;
            _startIdGroup = null;
            _endId        = null;
            _endIdGroup   = null;
            _type         = null;
            base.EndOfEntity();
        }
Example #5
0
 private Group Group(Group group)
 {
     return(group != null ? group : [email protected]_Fields.Global);
 }
Example #6
0
 public override long Get(object inputId, Group group)
 {
     return(( long? )inputId.Value);
 }
Example #7
0
 public override void Put(object inputId, long actualId, Group group)
 {               // No need to remember anything
 }