Skip to content

Commit

Permalink
Moved RelationshipDirection to o.n.storageengine.api
Browse files Browse the repository at this point in the history
And replaces o.n.storageengine.api.Direction
  • Loading branch information
tinwelint committed Aug 10, 2018
1 parent 44f706c commit e669306
Show file tree
Hide file tree
Showing 11 changed files with 51 additions and 82 deletions.
Expand Up @@ -39,7 +39,7 @@
import org.neo4j.kernel.impl.store.record.RecordLoad;
import org.neo4j.kernel.impl.store.record.RelationshipGroupRecord;
import org.neo4j.kernel.impl.store.record.RelationshipRecord;
import org.neo4j.storageengine.api.Direction;
import org.neo4j.storageengine.api.RelationshipDirection;
import org.neo4j.storageengine.api.StorageNodeCursor;
import org.neo4j.storageengine.api.StorageRelationshipGroupCursor;
import org.neo4j.test.TestGraphDatabaseFactory;
Expand All @@ -57,9 +57,8 @@
import static org.neo4j.kernel.impl.storageengine.impl.recordstorage.TestRelType.LOOP;
import static org.neo4j.kernel.impl.storageengine.impl.recordstorage.TestRelType.OUT;
import static org.neo4j.kernel.impl.store.record.Record.NO_NEXT_RELATIONSHIP;
import static org.neo4j.storageengine.api.Direction.BOTH;
import static org.neo4j.storageengine.api.Direction.INCOMING;
import static org.neo4j.storageengine.api.Direction.OUTGOING;
import static org.neo4j.storageengine.api.RelationshipDirection.INCOMING;
import static org.neo4j.storageengine.api.RelationshipDirection.OUTGOING;

public class RecordStorageReaderRelTypesAndDegreeTest extends RecordStorageReaderTestBase
{
Expand Down Expand Up @@ -204,7 +203,7 @@ private void testDegreeByDirectionForDenseNodeWithPartiallyDeletedRelGroupChain(

assertEquals( outRelCount + loopRelCount, degreeForDirection( cursor, OUTGOING ) );
assertEquals( inRelCount + loopRelCount, degreeForDirection( cursor, INCOMING ) );
assertEquals( inRelCount + outRelCount + loopRelCount, degreeForDirection( cursor, BOTH ) );
assertEquals( inRelCount + outRelCount + loopRelCount, degreeForDirection( cursor, RelationshipDirection.LOOP) );
}

private void testDegreeByDirectionForDenseNodeWithPartiallyDeletedRelChains( boolean modifyInChain,
Expand Down Expand Up @@ -232,15 +231,15 @@ private void testDegreeByDirectionForDenseNodeWithPartiallyDeletedRelChains( boo

assertEquals( outRelCount + loopRelCount, degreeForDirection( cursor, OUTGOING ) );
assertEquals( inRelCount + loopRelCount, degreeForDirection( cursor, INCOMING ) );
assertEquals( inRelCount + outRelCount + loopRelCount, degreeForDirection( cursor, BOTH ) );
assertEquals( inRelCount + outRelCount + loopRelCount, degreeForDirection( cursor, RelationshipDirection.LOOP) );
}

private int degreeForDirection( StorageNodeCursor cursor, Direction direction )
private int degreeForDirection( StorageNodeCursor cursor, RelationshipDirection direction )
{
return degreeForDirectionAndType( cursor, direction, ANY_RELATIONSHIP_TYPE );
}

private int degreeForDirectionAndType( StorageNodeCursor cursor, Direction direction, int relType )
private int degreeForDirectionAndType( StorageNodeCursor cursor, RelationshipDirection direction, int relType )
{
int degree = 0;
try ( StorageRelationshipGroupCursor groups = storageReader.allocateRelationshipGroupCursor() )
Expand All @@ -258,7 +257,7 @@ private int degreeForDirectionAndType( StorageNodeCursor cursor, Direction direc
case INCOMING:
degree += groups.incomingCount() + groups.loopCount();
break;
case BOTH:
case LOOP:
degree += groups.outgoingCount() + groups.incomingCount() + groups.loopCount();
break;
default:
Expand Down Expand Up @@ -307,9 +306,9 @@ private void testDegreeByDirectionAndTypeForDenseNodeWithPartiallyDeletedRelGrou
assertEquals( inRelCount, degreeForDirectionAndType( cursor, INCOMING, relTypeId( IN ) ) );
assertEquals( loopRelCount, degreeForDirectionAndType( cursor, INCOMING, relTypeId( LOOP ) ) );

assertEquals( inRelCount, degreeForDirectionAndType( cursor, BOTH, relTypeId( IN ) ) );
assertEquals( outRelCount, degreeForDirectionAndType( cursor, BOTH, relTypeId( OUT ) ) );
assertEquals( loopRelCount, degreeForDirectionAndType( cursor, BOTH, relTypeId( LOOP ) ) );
assertEquals( inRelCount, degreeForDirectionAndType( cursor, RelationshipDirection.LOOP, relTypeId( IN ) ) );
assertEquals( outRelCount, degreeForDirectionAndType( cursor, RelationshipDirection.LOOP, relTypeId( OUT ) ) );
assertEquals( loopRelCount, degreeForDirectionAndType( cursor, RelationshipDirection.LOOP, relTypeId( LOOP ) ) );
}

private void testDegreeByDirectionAndTypeForDenseNodeWithPartiallyDeletedRelChains( boolean modifyInChain,
Expand Down Expand Up @@ -343,9 +342,9 @@ private void testDegreeByDirectionAndTypeForDenseNodeWithPartiallyDeletedRelChai
assertEquals( inRelCount, degreeForDirectionAndType( cursor, INCOMING, relTypeId( IN ) ) );
assertEquals( loopRelCount, degreeForDirectionAndType( cursor, INCOMING, relTypeId( LOOP ) ) );

assertEquals( inRelCount, degreeForDirectionAndType( cursor, BOTH, relTypeId( IN ) ) );
assertEquals( outRelCount, degreeForDirectionAndType( cursor, BOTH, relTypeId( OUT ) ) );
assertEquals( loopRelCount, degreeForDirectionAndType( cursor, BOTH, relTypeId( LOOP ) ) );
assertEquals( inRelCount, degreeForDirectionAndType( cursor, RelationshipDirection.LOOP, relTypeId( IN ) ) );
assertEquals( outRelCount, degreeForDirectionAndType( cursor, RelationshipDirection.LOOP, relTypeId( OUT ) ) );
assertEquals( loopRelCount, degreeForDirectionAndType( cursor, RelationshipDirection.LOOP, relTypeId( LOOP ) ) );
}

@Test
Expand Down

This file was deleted.

Expand Up @@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.neo4j.kernel.impl.newapi;
package org.neo4j.storageengine.api;

/**
* Low level representation of relationship direction, used to keep traversal state and query tx-state
Expand Down
Expand Up @@ -21,7 +21,7 @@

import org.eclipse.collections.api.iterator.LongIterator;

import org.neo4j.kernel.impl.newapi.RelationshipDirection;
import org.neo4j.storageengine.api.RelationshipDirection;

/**
* Represents the transactional changes to a node:
Expand Down
Expand Up @@ -30,11 +30,10 @@
import java.util.Set;

import org.neo4j.kernel.impl.api.state.RelationshipChangesForNode.DiffStrategy;
import org.neo4j.kernel.impl.newapi.RelationshipDirection;
import org.neo4j.kernel.impl.util.collection.CollectionsFactory;
import org.neo4j.kernel.impl.util.diffsets.MutableLongDiffSets;
import org.neo4j.kernel.impl.util.diffsets.MutableLongDiffSetsImpl;
import org.neo4j.storageengine.api.Direction;
import org.neo4j.storageengine.api.RelationshipDirection;
import org.neo4j.storageengine.api.StorageProperty;
import org.neo4j.storageengine.api.txstate.LongDiffSets;
import org.neo4j.storageengine.api.txstate.NodeState;
Expand Down Expand Up @@ -138,7 +137,7 @@ MutableLongDiffSets getOrCreateLabelDiffSets()
return labelDiffSets;
}

public void addRelationship( long relId, int typeId, Direction direction )
public void addRelationship( long relId, int typeId, RelationshipDirection direction )
{
if ( !hasAddedRelationships() )
{
Expand All @@ -147,7 +146,7 @@ public void addRelationship( long relId, int typeId, Direction direction )
relationshipsAdded.addRelationship( relId, typeId, direction );
}

public void removeRelationship( long relId, int typeId, Direction direction )
public void removeRelationship( long relId, int typeId, RelationshipDirection direction )
{
if ( hasAddedRelationships() )
{
Expand Down
Expand Up @@ -29,8 +29,7 @@
import org.eclipse.collections.impl.set.mutable.primitive.LongHashSet;

import org.neo4j.collection.PrimitiveLongCollections;
import org.neo4j.kernel.impl.newapi.RelationshipDirection;
import org.neo4j.storageengine.api.Direction;
import org.neo4j.storageengine.api.RelationshipDirection;

import static java.lang.Math.toIntExact;

Expand Down Expand Up @@ -79,15 +78,15 @@ public RelationshipChangesForNode( DiffStrategy diffStrategy )
this.diffStrategy = diffStrategy;
}

public void addRelationship( long relId, int typeId, Direction direction )
public void addRelationship( long relId, int typeId, RelationshipDirection direction )
{
final MutableIntObjectMap<MutableLongSet> relTypeToRelsMap = getTypeToRelMapForDirection( direction );
final MutableLongSet rels = relTypeToRelsMap.getIfAbsentPut( typeId, LongHashSet::new );

rels.add( relId );
}

public boolean removeRelationship( long relId, int typeId, Direction direction )
public boolean removeRelationship( long relId, int typeId, RelationshipDirection direction )
{
final MutableIntObjectMap<MutableLongSet> relTypeToRelsMap = getTypeToRelMapForDirection( direction );
final MutableLongSet rels = relTypeToRelsMap.get( typeId );
Expand Down Expand Up @@ -175,7 +174,7 @@ private MutableIntObjectMap<MutableLongSet> loops()
return loops;
}

private MutableIntObjectMap<MutableLongSet> getTypeToRelMapForDirection( Direction direction )
private MutableIntObjectMap<MutableLongSet> getTypeToRelMapForDirection( RelationshipDirection direction )
{
final MutableIntObjectMap<MutableLongSet> relTypeToRelsMap;
switch ( direction )
Expand All @@ -186,7 +185,7 @@ private MutableIntObjectMap<MutableLongSet> getTypeToRelMapForDirection( Directi
case OUTGOING:
relTypeToRelsMap = outgoing();
break;
case BOTH:
case LOOP:
relTypeToRelsMap = loops();
break;
default:
Expand Down
Expand Up @@ -45,7 +45,7 @@
import org.neo4j.kernel.impl.util.diffsets.DiffSets;
import org.neo4j.kernel.impl.util.diffsets.MutableLongDiffSets;
import org.neo4j.kernel.impl.util.diffsets.MutableLongDiffSetsImpl;
import org.neo4j.storageengine.api.Direction;
import org.neo4j.storageengine.api.RelationshipDirection;
import org.neo4j.storageengine.api.RelationshipVisitor;
import org.neo4j.storageengine.api.schema.IndexDescriptor;
import org.neo4j.storageengine.api.txstate.DiffSetsVisitor;
Expand Down Expand Up @@ -291,12 +291,12 @@ public void relationshipDoCreate( long id, int relationshipTypeId, long startNod

if ( startNodeId == endNodeId )
{
getOrCreateNodeState( startNodeId ).addRelationship( id, relationshipTypeId, Direction.BOTH );
getOrCreateNodeState( startNodeId ).addRelationship( id, relationshipTypeId, RelationshipDirection.LOOP );
}
else
{
getOrCreateNodeState( startNodeId ).addRelationship( id, relationshipTypeId, Direction.OUTGOING );
getOrCreateNodeState( endNodeId ).addRelationship( id, relationshipTypeId, Direction.INCOMING );
getOrCreateNodeState( startNodeId ).addRelationship( id, relationshipTypeId, RelationshipDirection.OUTGOING );
getOrCreateNodeState( endNodeId ).addRelationship( id, relationshipTypeId, RelationshipDirection.INCOMING );
}

getOrCreateRelationshipState( id ).setMetaData( startNodeId, endNodeId, relationshipTypeId );
Expand All @@ -317,12 +317,12 @@ public void relationshipDoDelete( long id, int type, long startNodeId, long endN

if ( startNodeId == endNodeId )
{
getOrCreateNodeState( startNodeId ).removeRelationship( id, type, Direction.BOTH );
getOrCreateNodeState( startNodeId ).removeRelationship( id, type, RelationshipDirection.LOOP );
}
else
{
getOrCreateNodeState( startNodeId ).removeRelationship( id, type, Direction.OUTGOING );
getOrCreateNodeState( endNodeId ).removeRelationship( id, type, Direction.INCOMING );
getOrCreateNodeState( startNodeId ).removeRelationship( id, type, RelationshipDirection.OUTGOING );
getOrCreateNodeState( endNodeId ).removeRelationship( id, type, RelationshipDirection.INCOMING );
}

if ( relationshipStatesMap != null )
Expand Down
Expand Up @@ -26,6 +26,7 @@

import org.neo4j.internal.kernel.api.RelationshipGroupCursor;
import org.neo4j.internal.kernel.api.RelationshipTraversalCursor;
import org.neo4j.storageengine.api.RelationshipDirection;
import org.neo4j.storageengine.api.StorageRelationshipGroupCursor;
import org.neo4j.storageengine.api.txstate.NodeState;
import org.neo4j.storageengine.api.txstate.RelationshipState;
Expand Down
Expand Up @@ -24,16 +24,17 @@

import org.neo4j.internal.kernel.api.NodeCursor;
import org.neo4j.internal.kernel.api.RelationshipTraversalCursor;
import org.neo4j.storageengine.api.RelationshipDirection;
import org.neo4j.storageengine.api.StorageRelationshipTraversalCursor;
import org.neo4j.storageengine.api.txstate.NodeState;

import static java.lang.String.format;
import static org.neo4j.internal.kernel.api.Read.ANY_RELATIONSHIP_TYPE;
import static org.neo4j.kernel.impl.newapi.References.clearEncoding;
import static org.neo4j.kernel.impl.newapi.RelationshipDirection.INCOMING;
import static org.neo4j.kernel.impl.newapi.RelationshipDirection.LOOP;
import static org.neo4j.kernel.impl.newapi.RelationshipDirection.OUTGOING;
import static org.neo4j.kernel.impl.store.record.AbstractBaseRecord.NO_ID;
import static org.neo4j.storageengine.api.RelationshipDirection.INCOMING;
import static org.neo4j.storageengine.api.RelationshipDirection.LOOP;
import static org.neo4j.storageengine.api.RelationshipDirection.OUTGOING;

class DefaultRelationshipTraversalCursor extends DefaultRelationshipCursor<StorageRelationshipTraversalCursor>
implements RelationshipTraversalCursor
Expand Down
Expand Up @@ -24,13 +24,13 @@
import org.junit.Test;

import org.neo4j.collection.PrimitiveLongCollections;
import org.neo4j.kernel.impl.newapi.RelationshipDirection;
import org.neo4j.storageengine.api.RelationshipDirection;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.neo4j.storageengine.api.Direction.BOTH;
import static org.neo4j.storageengine.api.Direction.INCOMING;
import static org.neo4j.storageengine.api.Direction.OUTGOING;
import static org.neo4j.storageengine.api.RelationshipDirection.INCOMING;
import static org.neo4j.storageengine.api.RelationshipDirection.LOOP;
import static org.neo4j.storageengine.api.RelationshipDirection.OUTGOING;

public class RelationshipChangesForNodeTest
{
Expand All @@ -46,9 +46,9 @@ public void shouldGetRelationships()
changes.addRelationship( 1, TYPE, INCOMING );
changes.addRelationship( 2, TYPE, OUTGOING );
changes.addRelationship( 3, TYPE, OUTGOING );
changes.addRelationship( 4, TYPE, BOTH );
changes.addRelationship( 5, TYPE, BOTH );
changes.addRelationship( 6, TYPE, BOTH );
changes.addRelationship( 4, TYPE, LOOP );
changes.addRelationship( 5, TYPE, LOOP );
changes.addRelationship( 6, TYPE, LOOP );

LongIterator rawRelationships = changes.getRelationships();
assertThat( PrimitiveLongCollections.asArray( rawRelationships ), ids( 1, 2, 3, 4, 5, 6 ) );
Expand All @@ -66,13 +66,13 @@ public void shouldGetRelationshipsByTypeAndDirection()
changes.addRelationship( 1, TYPE, INCOMING );
changes.addRelationship( 2, TYPE, OUTGOING );
changes.addRelationship( 3, TYPE, OUTGOING );
changes.addRelationship( 4, TYPE, BOTH );
changes.addRelationship( 5, TYPE, BOTH );
changes.addRelationship( 6, TYPE, BOTH );
changes.addRelationship( 4, TYPE, LOOP );
changes.addRelationship( 5, TYPE, LOOP );
changes.addRelationship( 6, TYPE, LOOP );

changes.addRelationship( 10, DECOY_TYPE, INCOMING );
changes.addRelationship( 11, DECOY_TYPE, OUTGOING );
changes.addRelationship( 12, DECOY_TYPE, BOTH );
changes.addRelationship( 12, DECOY_TYPE, LOOP );

LongIterator rawIncoming =
changes.getRelationships( RelationshipDirection.INCOMING, TYPE );
Expand Down
Expand Up @@ -32,7 +32,6 @@
import org.neo4j.io.fs.FileSystemAbstraction;
import org.neo4j.io.pagecache.PageCache;
import org.neo4j.kernel.configuration.Config;
import org.neo4j.kernel.impl.newapi.RelationshipDirection;
import org.neo4j.kernel.impl.store.NeoStores;
import org.neo4j.kernel.impl.store.RecordStore;
import org.neo4j.kernel.impl.store.RelationshipStore;
Expand All @@ -43,6 +42,7 @@
import org.neo4j.kernel.impl.store.record.RelationshipGroupRecord;
import org.neo4j.kernel.impl.store.record.RelationshipRecord;
import org.neo4j.logging.NullLogProvider;
import org.neo4j.storageengine.api.RelationshipDirection;
import org.neo4j.test.rule.PageCacheAndDependenciesRule;
import org.neo4j.test.rule.fs.DefaultFileSystemRule;

Expand All @@ -51,10 +51,10 @@
import static org.junit.Assert.assertTrue;
import static org.neo4j.graphdb.factory.GraphDatabaseSettings.pagecache_memory;
import static org.neo4j.io.pagecache.tracing.cursor.context.EmptyVersionContextSupplier.EMPTY;
import static org.neo4j.kernel.impl.newapi.RelationshipDirection.INCOMING;
import static org.neo4j.kernel.impl.newapi.RelationshipDirection.LOOP;
import static org.neo4j.kernel.impl.newapi.RelationshipDirection.OUTGOING;
import static org.neo4j.kernel.impl.store.record.Record.NO_NEXT_RELATIONSHIP;
import static org.neo4j.storageengine.api.RelationshipDirection.INCOMING;
import static org.neo4j.storageengine.api.RelationshipDirection.LOOP;
import static org.neo4j.storageengine.api.RelationshipDirection.OUTGOING;

@RunWith( Parameterized.class )
public class RecordRelationshipTraversalCursorTest
Expand Down

0 comments on commit e669306

Please sign in to comment.