Search in sources :

Example 21 with RelIdArray

use of org.neo4j.kernel.impl.util.RelIdArray in project graphdb by neo4j-attic.

the class NodeManager method getMoreRelationships.

Pair<ArrayMap<String, RelIdArray>, Map<Long, RelationshipImpl>> getMoreRelationships(NodeImpl node) {
    long nodeId = node.getId();
    RelationshipChainPosition position = node.getRelChainPosition();
    Iterable<RelationshipData> rels = persistenceManager.getMoreRelationships(nodeId, position);
    ArrayMap<String, RelIdArray> newRelationshipMap = new ArrayMap<String, RelIdArray>();
    Map<Long, RelationshipImpl> relsMap = new HashMap<Long, RelationshipImpl>(150);
    for (RelationshipData rel : rels) {
        long relId = rel.getId();
        RelationshipImpl relImpl = relCache.get(relId);
        RelationshipType type = null;
        if (relImpl == null) {
            type = getRelationshipTypeById(rel.relationshipType());
            assert type != null;
            relImpl = new RelationshipImpl(relId, rel.firstNode(), rel.secondNode(), type, false);
            relsMap.put(relId, relImpl);
        // relCache.put( relId, relImpl );
        } else {
            type = relImpl.getType();
        }
        RelIdArray relationshipSet = newRelationshipMap.get(type.name());
        if (relationshipSet == null) {
            relationshipSet = new RelIdArray();
            newRelationshipMap.put(type.name(), relationshipSet);
        }
        relationshipSet.add(relId);
    }
    // relCache.putAll( relsMap );
    return Pair.of(newRelationshipMap, relsMap);
}
Also used : RelationshipChainPosition(org.neo4j.kernel.impl.nioneo.store.RelationshipChainPosition) HashMap(java.util.HashMap) RelationshipType(org.neo4j.graphdb.RelationshipType) ArrayMap(org.neo4j.kernel.impl.util.ArrayMap) RelationshipData(org.neo4j.kernel.impl.nioneo.store.RelationshipData) RelIdArray(org.neo4j.kernel.impl.util.RelIdArray)

Example 22 with RelIdArray

use of org.neo4j.kernel.impl.util.RelIdArray in project graphdb by neo4j-attic.

the class TestRelIdArray method testWithAddRemove.

@Test
public void testWithAddRemove() throws Exception {
    RelIdArray source = new RelIdArray();
    source.add(1);
    source.add(2);
    source.add(3);
    source.add(4);
    RelIdArray add = new RelIdArray();
    add.add(5);
    add.add(6);
    add.add(7);
    RelIdArray remove = new RelIdArray();
    remove.add(2);
    remove.add(6);
    List<Long> allIds = asList(RelIdArray.from(source, add, remove));
    Collections.sort(allIds);
    assertEquals(Arrays.asList(1L, 3L, 4L, 5L, 7L), allIds);
}
Also used : RelIdArray(org.neo4j.kernel.impl.util.RelIdArray) Test(org.junit.Test)

Example 23 with RelIdArray

use of org.neo4j.kernel.impl.util.RelIdArray in project graphdb by neo4j-attic.

the class TestRelIdArray method testBasic.

@Test
public void testBasic() throws Exception {
    RelIdArray array = new RelIdArray();
    array.add(1);
    array.add(2);
    array.add(3);
    RelIdIterator itr = array.iterator();
    assertTrue(itr.hasNext());
    assertTrue(itr.hasNext());
    assertEquals(1L, itr.next());
    assertTrue(itr.hasNext());
    assertEquals(2L, itr.next());
    assertTrue(itr.hasNext());
    assertEquals(3L, itr.next());
    assertFalse(itr.hasNext());
    assertFalse(itr.hasNext());
}
Also used : RelIdArray(org.neo4j.kernel.impl.util.RelIdArray) RelIdIterator(org.neo4j.kernel.impl.util.RelIdArray.RelIdIterator) Test(org.junit.Test)

Example 24 with RelIdArray

use of org.neo4j.kernel.impl.util.RelIdArray in project graphdb by neo4j-attic.

the class LockReleaser method getCowRelationshipRemoveMap.

public RelIdArray getCowRelationshipRemoveMap(NodeImpl node, String type, boolean create) {
    if (!create) {
        return getCowRelationshipRemoveMap(node, type);
    }
    PrimitiveElement primitiveElement = getAndSetupPrimitiveElement();
    ArrayMap<Long, CowNodeElement> cowElements = primitiveElement.nodes;
    CowNodeElement element = cowElements.get(node.id);
    if (element == null) {
        element = new CowNodeElement();
        cowElements.put(node.id, element);
    }
    if (element.relationshipRemoveMap == null) {
        element.relationshipRemoveMap = new ArrayMap<String, RelIdArray>();
    }
    RelIdArray set = element.relationshipRemoveMap.get(type);
    if (set == null) {
        set = new RelIdArray();
        element.relationshipRemoveMap.put(type, set);
    }
    return set;
}
Also used : RelIdArray(org.neo4j.kernel.impl.util.RelIdArray)

Example 25 with RelIdArray

use of org.neo4j.kernel.impl.util.RelIdArray in project graphdb by neo4j-attic.

the class LockReleaser method populateNodeRelEvent.

private void populateNodeRelEvent(PrimitiveElement element, TransactionDataImpl result) {
    for (long nodeId : element.nodes.keySet()) {
        CowNodeElement nodeElement = element.nodes.get(nodeId);
        NodeProxy node = new NodeProxy(nodeId, nodeManager);
        NodeImpl nodeImpl = nodeManager.getNodeForProxy(nodeId);
        if (nodeElement.deleted) {
            if (nodeManager.nodeCreated(nodeId)) {
                continue;
            }
            result.deleted(node);
        }
        if (nodeElement.relationshipAddMap != null && !nodeElement.deleted) {
            for (String type : nodeElement.relationshipAddMap.keySet()) {
                RelIdArray createdRels = nodeElement.relationshipAddMap.get(type);
                for (RelIdIterator iterator = createdRels.iterator(); iterator.hasNext(); ) {
                    long relId = iterator.next();
                    CowRelElement relElement = element.relationships.get(relId);
                    if (relElement != null && relElement.deleted) {
                        continue;
                    }
                    RelationshipProxy rel = new RelationshipProxy(relId, nodeManager);
                    if (rel.getStartNode().getId() == nodeId) {
                        result.created(new RelationshipProxy(relId, nodeManager));
                    }
                }
            }
        }
        if (nodeElement.relationshipRemoveMap != null) {
            for (String type : nodeElement.relationshipRemoveMap.keySet()) {
                RelIdArray deletedRels = nodeElement.relationshipRemoveMap.get(type);
                for (RelIdIterator iterator = deletedRels.iterator(); iterator.hasNext(); ) {
                    long relId = iterator.next();
                    if (nodeManager.relCreated(relId)) {
                        continue;
                    }
                    RelationshipProxy rel = new RelationshipProxy(relId, nodeManager);
                    if (rel.getStartNode().getId() == nodeId) {
                        result.deleted(new RelationshipProxy(relId, nodeManager));
                    }
                }
            }
        }
        if (nodeElement.propertyAddMap != null && !nodeElement.deleted) {
            for (PropertyData data : nodeElement.propertyAddMap.values()) {
                String key = nodeManager.getKeyForProperty(data.getId());
                Object oldValue = nodeImpl.getCommittedPropertyValue(nodeManager, key);
                Object newValue = data.getValue();
                result.assignedProperty(node, key, newValue, oldValue);
            }
        }
        if (nodeElement.propertyRemoveMap != null) {
            for (PropertyData data : nodeElement.propertyRemoveMap.values()) {
                String key = nodeManager.getKeyForProperty(data.getId());
                Object oldValue = data.getValue();
                if (oldValue == null && !nodeElement.deleted) {
                    nodeImpl.getCommittedPropertyValue(nodeManager, key);
                }
                result.removedProperty(node, key, oldValue);
            }
        }
    }
}
Also used : PropertyData(org.neo4j.kernel.impl.nioneo.store.PropertyData) RelIdArray(org.neo4j.kernel.impl.util.RelIdArray) RelIdIterator(org.neo4j.kernel.impl.util.RelIdArray.RelIdIterator)

Aggregations

RelIdArray (org.neo4j.kernel.impl.util.RelIdArray)26 ArrayMap (org.neo4j.kernel.impl.util.ArrayMap)5 LinkedList (java.util.LinkedList)4 Map (java.util.Map)4 RelationshipType (org.neo4j.graphdb.RelationshipType)4 Test (org.junit.Test)3 RelIdIterator (org.neo4j.kernel.impl.util.RelIdArray.RelIdIterator)3 RelIdIterator (org.neo4j.kernel.impl.util.RelIdIterator)3 PropertyData (org.neo4j.kernel.impl.nioneo.store.PropertyData)2 CombinedRelIdIterator (org.neo4j.kernel.impl.util.CombinedRelIdIterator)2 RelIdArrayWithLoops (org.neo4j.kernel.impl.util.RelIdArrayWithLoops)2 HashMap (java.util.HashMap)1 RelationshipChainPosition (org.neo4j.kernel.impl.nioneo.store.RelationshipChainPosition)1 RelationshipData (org.neo4j.kernel.impl.nioneo.store.RelationshipData)1 RelationshipRecord (org.neo4j.kernel.impl.nioneo.store.RelationshipRecord)1