Hi Mattias,
I just looked through the code in neo4j-util and will try to port relevant 
classes to graph-collections. I have one question, though. Several methods make 
a call to "GraphDatabaseUtil.acquireWriteLock", which performs one operation: 
the removal of the property "___dummy_property_for_locking___". I don't see any 
place where this property is set. Can you explain this usage?
Niels

> Date: Thu, 30 Jun 2011 20:50:42 +0200
> From: matt...@neotechnology.com
> To: user@lists.neo4j.org
> Subject: Re: [Neo4j] graph-collections List class
> 
> I have done a lot of these structures already, so before (re)doing a lot of
> these structures take a look at:
> https://svn.neo4j.org/components/utils/trunk/src/main/java/org/neo4j/util/(the
> old subversion repository, but the utils are quite up2date). Please
> take a look there and feel free to pull good implementations in to
> graph-collections. There are f.ex. queues (with workers picking items from
> them), linked lists, limited-sized lists and more.
> 
> 2011/6/30 Niels Hoogeveen <pd_aficion...@hotmail.com>
> 
> >
> > For neo4j.graph-collections.list.List I suggest the following.
> > The graph collections List class is an implementation of the java.util.List
> > class, parameterized with Node, supporting all methods, except subList(int
> > start, int end).
> > Whenever nodes need to be stored as a list, the List class can be used,
> > guaranteeing the List contract is maintained.
> > package org.neo4j.collections.list;
> >
> > import org.neo4j.collections.list.List;
> > import org.neo4j.graphdb.Node;
> > import org.neo4j.kernel.EmbeddedGraphDatabase;
> > import java.util.ArrayList;
> > import org.neo4j.graphdb.Transaction;
> >
> > public class Demo {
> >
> >        public static void main(String[] args){
> >
> >
> >
> >                //create/load database
> >                EmbeddedGraphDatabase graphDb = new EmbeddedGraphDatabase(
> > "var/db" );
> >
> >                Transaction tx = graphDb.beginTx();
> >
> >                //create node representing the list
> >                Node indexNode = graphDb.createNode();
> >
> >                //create list
> >                List list = new List( indexNode, graphDb );
> >
> >                //create nodes to be added to the list
> >                Node node1 = graphDb.createNode();
> >                Node node2 = graphDb.createNode();
> >                Node node3 = graphDb.createNode();
> >                Node node4 = graphDb.createNode();
> >
> >                //add nodes to the list one by one
> >                list.add(node1);
> >                list.add(node2);
> >                list.add(node3);
> >                list.add(node4);
> >
> >                //remove entries by index
> >                list.remove(3);
> >                list.remove(2);
> >
> >                //remove entries by node
> >                list.remove(node2);
> >                list.remove(node1);
> >
> >                //add a collection of nodes to the list
> >                ArrayList<Node> al1 = new ArrayList<Node>();
> >                al1.add(node1);
> >                al1.add(node2);
> >                al1.add(node3);
> >                al1.add(node4);
> >
> >                list.addAll(al1);
> >
> >                //use the list in a for loop
> >                for(Node n: list){
> >                  System.out.println(n);
> >                }
> >
> >                //find first entry in the list containing a specific node
> >                list.indexOf(node2);
> >
> >                //find last entry in the list containing a specific node
> >                list.lastIndexOf(node2);
> >
> >                //retain a collection of nodes from the list
> >                ArrayList<Node> al2 = new ArrayList<Node>();
> >                al2.add(node1);
> >                al2.add(node3);
> >                al2.add(node4);
> >
> >                list.retainAll(al2);
> >
> >                //remove a collection of nodes from the list
> >                ArrayList<Node> al3 = new ArrayList<Node>();
> >                al2.add(node3);
> >                al2.add(node4);
> >
> >                list.removeAll(al3);
> >
> >                //delete the list
> >                list.delete();
> >
> >                tx.success();
> >                tx.finish();
> >        }
> > }
> >
> >
> > > From: peter.neuba...@neotechnology.com
> > > Date: Thu, 30 Jun 2011 17:49:46 +0200
> > > To: user@lists.neo4j.org
> > > Subject: Re: [Neo4j] graph-collections List class
> > >
> > > Guys,
> > > if you can write some illustrative test code for the different
> > > collections, I could undertake to put some documentation skeleton into
> > > place that can be merged into the main manual and look like
> > > http://docs.neo4j.org/chunked/snapshot/. To start with, we could have
> > > it separately though.
> > >
> > > WDYT?
> > >
> > > Cheers,
> > >
> > > /peter neubauer
> > >
> > > GTalk:      neubauer.peter
> > > Skype       peter.neubauer
> > > Phone       +46 704 106975
> > > LinkedIn   http://www.linkedin.com/in/neubauer
> > > Twitter      http://twitter.com/peterneubauer
> > >
> > > http://www.neo4j.org               - Your high performance graph
> > database.
> > > http://startupbootcamp.org/    - Ă–resund - Innovation happens HERE.
> > > http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.
> > >
> > >
> > >
> > > On Thu, Jun 30, 2011 at 5:28 PM, Niels Hoogeveen
> > > <pd_aficion...@hotmail.com> wrote:
> > > >
> > > > Today I added a List class to the graph-collections repo:
> > > >
> > https://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/list
> > > > The List class implements the java.util.List<Node> interface.
> > > > Niels
> > > > _______________________________________________
> > > > Neo4j mailing list
> > > > User@lists.neo4j.org
> > > > https://lists.neo4j.org/mailman/listinfo/user
> > > >
> > > _______________________________________________
> > > Neo4j mailing list
> > > User@lists.neo4j.org
> > > https://lists.neo4j.org/mailman/listinfo/user
> >
> > _______________________________________________
> > Neo4j mailing list
> > User@lists.neo4j.org
> > https://lists.neo4j.org/mailman/listinfo/user
> >
> 
> 
> 
> -- 
> Mattias Persson, [matt...@neotechnology.com]
> Hacker, Neo Technology
> www.neotechnology.com
> _______________________________________________
> Neo4j mailing list
> User@lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
                                          
_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to