+1 to this idea! I already do that for date, time and datetime in
neo4j-rest-client, but it'll certainly be better to have that server side.
Also it would be a great source for third-party contributions.

Supporting labels would be awesome too:

CREATE HANDLER FOR Person.`enrolment_date` USING 'StringToDateConverter'


On Sat, Dec 28, 2013 at 5:23 AM, Nigel Small <[email protected]> wrote:

> I very much like Craig/Axel's idea of being able to tag certain property
> keys such that their related values go through a (de)serialisation handler
> on read/write. The implementation could use the plugin mechanism to
> register converters that implement custom read/write routines, something
> like:
>
> public class StringToDateConverter implements PropertyConverter<String,
> Date> {
>
>     private SimpleDateFormat formatter = new
> SimpleDateFormat("yyyy-MM-dd");
>
>     public Date read(String value) {
>         return formatter.parse(value);
>     }
>
>     public String write(Date value) {
>         return formatter.format(value);
>     }
>
> }
>
> Then these could be registered in Cypher, much like indexes, to match
> property keys that are named in a particular way...
>
> CREATE HANDLER FOR '.*_date' USING 'StringToDateConverter'
>
> There would certainly be some challenges to overcome though, not least
> with exception handling and REST serialisation, but I daresay these aren't
> insurmountable.
>
> Nige
>
>
>
> On 28 December 2013 05:10, Alan Robertson <[email protected]> wrote:
>
>>  On 12/07/2013 02:58 AM, Michael Hunger wrote:
>>
>> Let's move this whole discussion to the google group :)
>>
>>  Map support for properties is planned and almost made it into the
>> product some time ago but then were some considerations so that it sadly
>> didn't work out.
>>
>>  User defined functions would be a way to go but much better with real
>> support by the storage engine and language.
>>
>>  Wes, didn't you want to look into a UDF PoC?
>>
>>
>> Here is a very specific and real use case for such a user defined
>> function (or map capability) for JSON:
>>
>> I have a discovery item in JSON which collects ulimit values and looks
>> like this:
>> {
>>   "discovertype": "ulimit",
>>   "description": "ulimit values for root",
>>   "host": "servidor",
>>   "source": "/usr/share/assimilation/discovery_agents/ulimit",
>>   "data": {
>>     "hard": {"c":null,"d":null,"f":null,"l":64,"m":null,*"n":1024*
>> ,"p":47013,"s":null,"t":null,"v":null},
>>     "soft": {"c":0,"d":null,"f":null,"l":64,"m":null,*"n":1024*
>> ,"p":47013,"s":8192,"t":null,"v":null}
>>   }
>> }
>>
>>
>> This is the results of the ulimit discovery module.  I used the JSON
>> value null to represent the ulimit value unlimited.
>>
>> One of those flags (-*n*) is the maximum number of open files.  As you
>> can see, this example is out of compliance with Neo4j best practices ;-).
>>
>> This is in a field called JSON_ulimit.
>>
>> So, if I wanted to see if a machine had enough open files to follow neo4j
>> best practices, I would like to check *JSON_ulimit.data.soft.n* and see
>> if it was greater or equal to 50000 (or null) on every machine running
>> neo4j.
>>
>> As it is now, I can't do this in Cypher.  I have to do it in python (or
>> Java, or...)
>>
>> I'd love to have a way to do this in Cypher.
>>
>> *Michael:  *Could I represent this data and perform this query with the
>> proposed map capability?
>> *Wes:* Could you make such a query work with a user-defined function?
>>
>> Don't you want me to be able to tell your customers they're not in
>> compliance with Neo4j best practices?  :-D
>>
>>
>>
>> --
>>     Alan Robertson <[email protected]> <[email protected]> - @OSSAlanR
>>
>> "Openness is the foundation and preservative of friendship...  Let me claim 
>> from you at all times your undisguised opinions." - William Wilberforce
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Neo4j" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Neo4j" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>



-- 
Javier de la Rosa
http://versae.es

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to