DATAGRAPH-1466 - Add support for storing java.util.Timezone and java.time.ZoneId.
This commit is contained in:
@@ -22,6 +22,7 @@ import java.net.MalformedURLException;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.TemporalAmount;
|
||||
@@ -33,6 +34,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import java.util.TimeZone;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.neo4j.driver.Value;
|
||||
@@ -94,10 +96,36 @@ final class AdditionalTypes {
|
||||
hlp.add(ConverterBuilder.reading(Value.class, UUID.class, AdditionalTypes::asUUID).andWriting(AdditionalTypes::value));
|
||||
hlp.add(ConverterBuilder.reading(Value.class, URL.class, AdditionalTypes::asURL).andWriting(AdditionalTypes::value));
|
||||
hlp.add(ConverterBuilder.reading(Value.class, URI.class, AdditionalTypes::asURI).andWriting(AdditionalTypes::value));
|
||||
hlp.add(ConverterBuilder.reading(Value.class, TimeZone.class, AdditionalTypes::asTimeZone).andWriting(AdditionalTypes::value));
|
||||
hlp.add(ConverterBuilder.reading(Value.class, ZoneId.class, AdditionalTypes::asZoneId).andWriting(AdditionalTypes::value));
|
||||
|
||||
CONVERTERS = Collections.unmodifiableList(hlp);
|
||||
}
|
||||
|
||||
static TimeZone asTimeZone(Value value) {
|
||||
return TimeZone.getTimeZone(value.asString());
|
||||
}
|
||||
|
||||
static Value value(TimeZone timeZone) {
|
||||
if (timeZone == null) {
|
||||
return Values.NULL;
|
||||
}
|
||||
|
||||
return Values.value(timeZone.getID());
|
||||
}
|
||||
|
||||
static ZoneId asZoneId(Value value) {
|
||||
return ZoneId.of(value.asString());
|
||||
}
|
||||
|
||||
static Value value(ZoneId zoneId) {
|
||||
if (zoneId == null) {
|
||||
return Values.NULL;
|
||||
}
|
||||
|
||||
return Values.value(zoneId.getId());
|
||||
}
|
||||
|
||||
static UUID asUUID(Value value) {
|
||||
return UUID.fromString(value.asString());
|
||||
}
|
||||
|
||||
@@ -121,6 +121,8 @@ public abstract class Neo4jConversionsITBase {
|
||||
hlp.put("anArrayOfEnums", new SomeEnum[] { SomeEnum.ValueA, SomeEnum.ValueB });
|
||||
hlp.put("aCollectionOfEnums", Arrays.asList(SomeEnum.ValueC, SomeEnum.TheUsualMisfit));
|
||||
hlp.put("listOfDoubles", Arrays.asList(1.0));
|
||||
hlp.put("aTimeZone", TimeZone.getTimeZone("America/Los_Angeles"));
|
||||
hlp.put("aZoneId", ZoneId.of("America/New_York"));
|
||||
ADDITIONAL_TYPES = Collections.unmodifiableMap(hlp);
|
||||
}
|
||||
|
||||
@@ -226,7 +228,10 @@ public abstract class Neo4jConversionsITBase {
|
||||
+ " n.aURL = 'https://www.test.com',"
|
||||
+ " n.aURI = 'urn:isbn:9783864905254',"
|
||||
+ " n.anEnum = 'TheUsualMisfit'," + " n.anArrayOfEnums = ['ValueA', 'ValueB'],"
|
||||
+ " n.aCollectionOfEnums = ['ValueC', 'TheUsualMisfit']" + " RETURN id(n) AS id", parameters)
|
||||
+ " n.aCollectionOfEnums = ['ValueC', 'TheUsualMisfit'],"
|
||||
+ " n.aTimeZone = 'America/Los_Angeles', "
|
||||
+ " n.aZoneId = 'America/New_York'"
|
||||
+ " RETURN id(n) AS id", parameters)
|
||||
.single().get("id").asLong();
|
||||
|
||||
parameters = new HashMap<>();
|
||||
|
||||
@@ -28,10 +28,12 @@ import java.net.URL;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.time.Period;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import java.util.TimeZone;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.springframework.data.neo4j.core.schema.GeneratedValue;
|
||||
@@ -112,4 +114,8 @@ public class ThingWithAllAdditionalTypes {
|
||||
private List<Double> listOfDoubles;
|
||||
|
||||
private List<SomeEnum> aCollectionOfEnums;
|
||||
|
||||
private TimeZone aTimeZone;
|
||||
|
||||
private ZoneId aZoneId;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user