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);
}
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);
}
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());
}
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;
}
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);
}
}
}
}
Aggregations