Add avro serialization support
Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/a51b719c Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/a51b719c Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/a51b719c Branch: refs/heads/master Commit: a51b719cb265ec63f9699f74b498efc0d27c1920 Parents: 4343982 Author: madhawa <madhaw...@gmail.com> Authored: Tue Jul 25 00:09:57 2017 +0530 Committer: madhawa <madhaw...@gmail.com> Committed: Tue Jul 25 00:09:57 2017 +0530 ---------------------------------------------------------------------- .../src/examples/avro/cassandraKey.json | 21 + .../src/examples/avro/cassandraRecord.json | 106 ++ .../avroSerialization/CassandraKey.java | 380 +++++ .../avroSerialization/CassandraRecord.java | 1293 ++++++++++++++++++ .../gora/cassandra/bean/CassandraKey.java | 21 +- .../gora/cassandra/bean/ClusterKeyField.java | 16 +- .../gora/cassandra/query/CassandraColumn.java | 51 - .../cassandra/query/CassandraResultSet.java | 4 + .../gora/cassandra/query/CassandraRow.java | 79 -- .../serializers/AvroCassandraUtils.java | 274 ++++ .../cassandra/serializers/AvroSerializer.java | 250 +++- .../serializers/CassandraQueryFactory.java | 327 ++++- .../serializers/CassandraSerializer.java | 47 +- .../cassandra/serializers/NativeSerializer.java | 43 +- .../gora/cassandra/store/CassandraMapping.java | 67 +- .../store/CassandraMappingBuilder.java | 32 +- .../gora/cassandra/store/CassandraStore.java | 2 +- .../test/conf/avro/gora-cassandra-mapping.xml | 49 +- .../compositeKey/gora-cassandra-mapping.xml | 31 +- .../src/test/conf/gora-cassandra-mapping.xml | 2 +- .../TestCassandraStoreWithCassandraKey.java | 210 +++ ...stCassandraStoreWithNativeSerialization.java | 4 +- 22 files changed, 2954 insertions(+), 355 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/examples/avro/cassandraKey.json ---------------------------------------------------------------------- diff --git a/gora-cassandra-cql/src/examples/avro/cassandraKey.json b/gora-cassandra-cql/src/examples/avro/cassandraKey.json new file mode 100644 index 0000000..6db3127 --- /dev/null +++ b/gora-cassandra-cql/src/examples/avro/cassandraKey.json @@ -0,0 +1,21 @@ +{ + "type": "record", + "name": "CassandraKey", + "default": null, + "namespace": "org.apache.gora.cassandra.example.generated.avroSerialization", + "fields": [ + { + "name": "url", + "type": [ + "null", + "string" + ], + "default": null + }, + { + "name": "timestamp", + "type": "long", + "default": 0 + } + ] +} http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/examples/avro/cassandraRecord.json ---------------------------------------------------------------------- diff --git a/gora-cassandra-cql/src/examples/avro/cassandraRecord.json b/gora-cassandra-cql/src/examples/avro/cassandraRecord.json new file mode 100644 index 0000000..bd741cd --- /dev/null +++ b/gora-cassandra-cql/src/examples/avro/cassandraRecord.json @@ -0,0 +1,106 @@ +{ + "type": "record", + "name": "CassandraRecord", + "default": null, + "namespace": "org.apache.gora.cassandra.example.generated.avroSerialization", + "fields": [ + { + "name": "dataString", + "type": "string", + "default": "" + }, + { + "name": "dataInt", + "type": "int", + "default": 0 + }, + { + "name": "dataLong", + "type": [ + "null", + "long" + ], + "default": null + }, + { + "name": "dataDouble", + "type": [ + "null", + "double" + ], + "default": null + }, + { + "name": "dataBytes", + "type": [ + "null", + "bytes" + ], + "default": null + }, + { + "name": "arrayInt", + "type": { + "type": "array", + "items": "int" + }, + "default": null + }, + { + "name": "arrayString", + "type": { + "type": "array", + "items": "string" + }, + "default": null + }, + { + "name": "arrayLong", + "type": { + "type": "array", + "items": "long" + }, + "default": null + }, + { + "name": "arrayDouble", + "type": { + "type": "array", + "items": "double" + }, + "default": null + }, + { + "name": "mapInt", + "type": { + "type": "map", + "values": "int" + }, + "default": {} + }, + { + "name": "mapString", + "type": { + "type": "map", + "values": "string" + }, + "default": {} + }, + { + "name": "mapLong", + "type": { + "type": "map", + "values": "long" + }, + "default": {} + }, + { + "name": "mapDouble", + "type": { + "type": "map", + "values": "double" + }, + "default": {} + } + ] +} http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraKey.java ---------------------------------------------------------------------- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraKey.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraKey.java new file mode 100644 index 0000000..ffe4aff --- /dev/null +++ b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraKey.java @@ -0,0 +1,380 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the" + *License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, software + *distributed under the License is distributed on an "AS IS" BASIS, + *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + *See the License for the specific language governing permissions and + *limitations under the License. + */ +package org.apache.gora.cassandra.example.generated.avroSerialization; + +public class CassandraKey extends org.apache.gora.persistency.impl.PersistentBase implements org.apache.avro.specific.SpecificRecord, org.apache.gora.persistency.Persistent { + public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"CassandraKey\",\"namespace\":\"org.apache.gora.cassandra.example.generated.avroSerialization\",\"fields\":[{\"name\":\"url\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"timestamp\",\"type\":\"long\",\"default\":0}],\"default\":null}"); + private static final long serialVersionUID = -2302778495178225103L; + /** Enum containing all data bean's fields. */ + public static enum Field { + URL(0, "url"), + TIMESTAMP(1, "timestamp"), + ; + /** + * Field's index. + */ + private int index; + + /** + * Field's name. + */ + private String name; + + /** + * Field's constructor + * @param index field's index. + * @param name field's name. + */ + Field(int index, String name) {this.index=index;this.name=name;} + + /** + * Gets field's index. + * @return int field's index. + */ + public int getIndex() {return index;} + + /** + * Gets field's name. + * @return String field's name. + */ + public String getName() {return name;} + + /** + * Gets field's attributes to string. + * @return String field's attributes to string. + */ + public String toString() {return name;} + }; + + public static final String[] _ALL_FIELDS = { + "url", + "timestamp", + }; + + /** + * Gets the total field count. + * @return int field count + */ + public int getFieldsCount() { + return CassandraKey._ALL_FIELDS.length; + } + + private java.lang.CharSequence url; + private long timestamp; + public org.apache.avro.Schema getSchema() { return SCHEMA$; } + // Used by DatumWriter. Applications should not call. + public java.lang.Object get(int field$) { + switch (field$) { + case 0: return url; + case 1: return timestamp; + default: throw new org.apache.avro.AvroRuntimeException("Bad index"); + } + } + + // Used by DatumReader. Applications should not call. + @SuppressWarnings(value="unchecked") + public void put(int field$, java.lang.Object value) { + switch (field$) { + case 0: url = (java.lang.CharSequence)(value); break; + case 1: timestamp = (java.lang.Long)(value); break; + default: throw new org.apache.avro.AvroRuntimeException("Bad index"); + } + } + + /** + * Gets the value of the 'url' field. + */ + public java.lang.CharSequence getUrl() { + return url; + } + + /** + * Sets the value of the 'url' field. + * @param value the value to set. + */ + public void setUrl(java.lang.CharSequence value) { + this.url = value; + setDirty(0); + } + + /** + * Checks the dirty status of the 'url' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isUrlDirty() { + return isDirty(0); + } + + /** + * Gets the value of the 'timestamp' field. + */ + public java.lang.Long getTimestamp() { + return timestamp; + } + + /** + * Sets the value of the 'timestamp' field. + * @param value the value to set. + */ + public void setTimestamp(java.lang.Long value) { + this.timestamp = value; + setDirty(1); + } + + /** + * Checks the dirty status of the 'timestamp' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isTimestampDirty() { + return isDirty(1); + } + + /** Creates a new CassandraKey RecordBuilder */ + public static org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder newBuilder() { + return new org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder(); + } + + /** Creates a new CassandraKey RecordBuilder by copying an existing Builder */ + public static org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder newBuilder(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder other) { + return new org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder(other); + } + + /** Creates a new CassandraKey RecordBuilder by copying an existing CassandraKey instance */ + public static org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder newBuilder(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey other) { + return new org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder(other); + } + + private static java.nio.ByteBuffer deepCopyToReadOnlyBuffer( + java.nio.ByteBuffer input) { + java.nio.ByteBuffer copy = java.nio.ByteBuffer.allocate(input.capacity()); + int position = input.position(); + input.reset(); + int mark = input.position(); + int limit = input.limit(); + input.rewind(); + input.limit(input.capacity()); + copy.put(input); + input.rewind(); + copy.rewind(); + input.position(mark); + input.mark(); + copy.position(mark); + copy.mark(); + input.position(position); + copy.position(position); + input.limit(limit); + copy.limit(limit); + return copy.asReadOnlyBuffer(); + } + + /** + * RecordBuilder for CassandraKey instances. + */ + public static class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase<CassandraKey> + implements org.apache.avro.data.RecordBuilder<CassandraKey> { + + private java.lang.CharSequence url; + private long timestamp; + + /** Creates a new Builder */ + private Builder() { + super(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.SCHEMA$); + } + + /** Creates a Builder by copying an existing Builder */ + private Builder(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder other) { + super(other); + } + + /** Creates a Builder by copying an existing CassandraKey instance */ + private Builder(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey other) { + super(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.SCHEMA$); + if (isValidValue(fields()[0], other.url)) { + this.url = (java.lang.CharSequence) data().deepCopy(fields()[0].schema(), other.url); + fieldSetFlags()[0] = true; + } + if (isValidValue(fields()[1], other.timestamp)) { + this.timestamp = (java.lang.Long) data().deepCopy(fields()[1].schema(), other.timestamp); + fieldSetFlags()[1] = true; + } + } + + /** Gets the value of the 'url' field */ + public java.lang.CharSequence getUrl() { + return url; + } + + /** Sets the value of the 'url' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder setUrl(java.lang.CharSequence value) { + validate(fields()[0], value); + this.url = value; + fieldSetFlags()[0] = true; + return this; + } + + /** Checks whether the 'url' field has been set */ + public boolean hasUrl() { + return fieldSetFlags()[0]; + } + + /** Clears the value of the 'url' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder clearUrl() { + url = null; + fieldSetFlags()[0] = false; + return this; + } + + /** Gets the value of the 'timestamp' field */ + public java.lang.Long getTimestamp() { + return timestamp; + } + + /** Sets the value of the 'timestamp' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder setTimestamp(long value) { + validate(fields()[1], value); + this.timestamp = value; + fieldSetFlags()[1] = true; + return this; + } + + /** Checks whether the 'timestamp' field has been set */ + public boolean hasTimestamp() { + return fieldSetFlags()[1]; + } + + /** Clears the value of the 'timestamp' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraKey.Builder clearTimestamp() { + fieldSetFlags()[1] = false; + return this; + } + + @Override + public CassandraKey build() { + try { + CassandraKey record = new CassandraKey(); + record.url = fieldSetFlags()[0] ? this.url : (java.lang.CharSequence) defaultValue(fields()[0]); + record.timestamp = fieldSetFlags()[1] ? this.timestamp : (java.lang.Long) defaultValue(fields()[1]); + return record; + } catch (Exception e) { + throw new org.apache.avro.AvroRuntimeException(e); + } + } + } + + public CassandraKey.Tombstone getTombstone(){ + return TOMBSTONE; + } + + public CassandraKey newInstance(){ + return newBuilder().build(); + } + + private static final Tombstone TOMBSTONE = new Tombstone(); + + public static final class Tombstone extends CassandraKey implements org.apache.gora.persistency.Tombstone { + + private Tombstone() { } + + /** + * Gets the value of the 'url' field. + */ + public java.lang.CharSequence getUrl() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'url' field. + * @param value the value to set. + */ + public void setUrl(java.lang.CharSequence value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'url' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isUrlDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'timestamp' field. + */ + public java.lang.Long getTimestamp() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'timestamp' field. + * @param value the value to set. + */ + public void setTimestamp(java.lang.Long value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'timestamp' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isTimestampDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + + } + + private static final org.apache.avro.io.DatumWriter + DATUM_WRITER$ = new org.apache.avro.specific.SpecificDatumWriter(SCHEMA$); + private static final org.apache.avro.io.DatumReader + DATUM_READER$ = new org.apache.avro.specific.SpecificDatumReader(SCHEMA$); + + /** + * Writes AVRO data bean to output stream in the form of AVRO Binary encoding format. This will transform + * AVRO data bean from its Java object form to it s serializable form. + * + * @param out java.io.ObjectOutput output stream to write data bean in serializable form + */ + @Override + public void writeExternal(java.io.ObjectOutput out) + throws java.io.IOException { + out.write(super.getDirtyBytes().array()); + DATUM_WRITER$.write(this, org.apache.avro.io.EncoderFactory.get() + .directBinaryEncoder((java.io.OutputStream) out, + null)); + } + + /** + * Reads AVRO data bean from input stream in it s AVRO Binary encoding format to Java object format. + * This will transform AVRO data bean from it s serializable form to deserialized Java object form. + * + * @param in java.io.ObjectOutput input stream to read data bean in serializable form + */ + @Override + public void readExternal(java.io.ObjectInput in) + throws java.io.IOException { + byte[] __g__dirty = new byte[getFieldsCount()]; + in.read(__g__dirty); + super.setDirtyBytes(java.nio.ByteBuffer.wrap(__g__dirty)); + DATUM_READER$.read(this, org.apache.avro.io.DecoderFactory.get() + .directBinaryDecoder((java.io.InputStream) in, + null)); + } + +} + http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraRecord.java ---------------------------------------------------------------------- diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraRecord.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraRecord.java new file mode 100644 index 0000000..4a92882 --- /dev/null +++ b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/avroSerialization/CassandraRecord.java @@ -0,0 +1,1293 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the" + *License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, software + *distributed under the License is distributed on an "AS IS" BASIS, + *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + *See the License for the specific language governing permissions and + *limitations under the License. + */ +package org.apache.gora.cassandra.example.generated.avroSerialization; + +public class CassandraRecord extends org.apache.gora.persistency.impl.PersistentBase implements org.apache.avro.specific.SpecificRecord, org.apache.gora.persistency.Persistent { + public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"CassandraRecord\",\"namespace\":\"org.apache.gora.cassandra.example.generated.avroSerialization\",\"fields\":[{\"name\":\"dataString\",\"type\":\"string\",\"default\":\"\"},{\"name\":\"dataInt\",\"type\":\"int\",\"default\":0},{\"name\":\"dataLong\",\"type\":[\"null\",\"long\"],\"default\":null},{\"name\":\"dataDouble\",\"type\":[\"null\",\"double\"],\"default\":null},{\"name\":\"dataBytes\",\"type\":[\"null\",\"bytes\"],\"default\":null},{\"name\":\"arrayInt\",\"type\":{\"type\":\"array\",\"items\":\"int\"},\"default\":null},{\"name\":\"arrayString\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"default\":null},{\"name\":\"arrayLong\",\"type\":{\"type\":\"array\",\"items\":\"long\"},\"default\":null},{\"name\":\"arrayDouble\",\"type\":{\"type\":\"array\",\"items\":\"double\"},\"default\":null},{\"name\":\"mapInt\",\"type\":{\"type\":\"map\",\"valu es\":\"int\"},\"default\":{}},{\"name\":\"mapString\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":{}},{\"name\":\"mapLong\",\"type\":{\"type\":\"map\",\"values\":\"long\"},\"default\":{}},{\"name\":\"mapDouble\",\"type\":{\"type\":\"map\",\"values\":\"double\"},\"default\":{}}],\"default\":null}"); + private static final long serialVersionUID = 5865822911454498901L; + /** Enum containing all data bean's fields. */ + public static enum Field { + DATA_STRING(0, "dataString"), + DATA_INT(1, "dataInt"), + DATA_LONG(2, "dataLong"), + DATA_DOUBLE(3, "dataDouble"), + DATA_BYTES(4, "dataBytes"), + ARRAY_INT(5, "arrayInt"), + ARRAY_STRING(6, "arrayString"), + ARRAY_LONG(7, "arrayLong"), + ARRAY_DOUBLE(8, "arrayDouble"), + MAP_INT(9, "mapInt"), + MAP_STRING(10, "mapString"), + MAP_LONG(11, "mapLong"), + MAP_DOUBLE(12, "mapDouble"), + ; + /** + * Field's index. + */ + private int index; + + /** + * Field's name. + */ + private String name; + + /** + * Field's constructor + * @param index field's index. + * @param name field's name. + */ + Field(int index, String name) {this.index=index;this.name=name;} + + /** + * Gets field's index. + * @return int field's index. + */ + public int getIndex() {return index;} + + /** + * Gets field's name. + * @return String field's name. + */ + public String getName() {return name;} + + /** + * Gets field's attributes to string. + * @return String field's attributes to string. + */ + public String toString() {return name;} + }; + + public static final String[] _ALL_FIELDS = { + "dataString", + "dataInt", + "dataLong", + "dataDouble", + "dataBytes", + "arrayInt", + "arrayString", + "arrayLong", + "arrayDouble", + "mapInt", + "mapString", + "mapLong", + "mapDouble", + }; + + /** + * Gets the total field count. + * @return int field count + */ + public int getFieldsCount() { + return CassandraRecord._ALL_FIELDS.length; + } + + private java.lang.CharSequence dataString; + private int dataInt; + private java.lang.Long dataLong; + private java.lang.Double dataDouble; + private java.nio.ByteBuffer dataBytes; + private java.util.List<java.lang.Integer> arrayInt; + private java.util.List<java.lang.CharSequence> arrayString; + private java.util.List<java.lang.Long> arrayLong; + private java.util.List<java.lang.Double> arrayDouble; + private java.util.Map<java.lang.CharSequence,java.lang.Integer> mapInt; + private java.util.Map<java.lang.CharSequence,java.lang.CharSequence> mapString; + private java.util.Map<java.lang.CharSequence,java.lang.Long> mapLong; + private java.util.Map<java.lang.CharSequence,java.lang.Double> mapDouble; + public org.apache.avro.Schema getSchema() { return SCHEMA$; } + // Used by DatumWriter. Applications should not call. + public java.lang.Object get(int field$) { + switch (field$) { + case 0: return dataString; + case 1: return dataInt; + case 2: return dataLong; + case 3: return dataDouble; + case 4: return dataBytes; + case 5: return arrayInt; + case 6: return arrayString; + case 7: return arrayLong; + case 8: return arrayDouble; + case 9: return mapInt; + case 10: return mapString; + case 11: return mapLong; + case 12: return mapDouble; + default: throw new org.apache.avro.AvroRuntimeException("Bad index"); + } + } + + // Used by DatumReader. Applications should not call. + @SuppressWarnings(value="unchecked") + public void put(int field$, java.lang.Object value) { + switch (field$) { + case 0: dataString = (java.lang.CharSequence)(value); break; + case 1: dataInt = (java.lang.Integer)(value); break; + case 2: dataLong = (java.lang.Long)(value); break; + case 3: dataDouble = (java.lang.Double)(value); break; + case 4: dataBytes = (java.nio.ByteBuffer)(value); break; + case 5: arrayInt = (java.util.List<java.lang.Integer>)((value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyListWrapper((java.util.List)value)); break; + case 6: arrayString = (java.util.List<java.lang.CharSequence>)((value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyListWrapper((java.util.List)value)); break; + case 7: arrayLong = (java.util.List<java.lang.Long>)((value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyListWrapper((java.util.List)value)); break; + case 8: arrayDouble = (java.util.List<java.lang.Double>)((value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyListWrapper((java.util.List)value)); break; + case 9: mapInt = (java.util.Map<java.lang.CharSequence,java.lang.Integer>)((value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)value)); break; + case 10: mapString = (java.util.Map<java.lang.CharSequence,java.lang.CharSequence>)((value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)value)); break; + case 11: mapLong = (java.util.Map<java.lang.CharSequence,java.lang.Long>)((value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)value)); break; + case 12: mapDouble = (java.util.Map<java.lang.CharSequence,java.lang.Double>)((value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)value)); break; + default: throw new org.apache.avro.AvroRuntimeException("Bad index"); + } + } + + /** + * Gets the value of the 'dataString' field. + */ + public java.lang.CharSequence getDataString() { + return dataString; + } + + /** + * Sets the value of the 'dataString' field. + * @param value the value to set. + */ + public void setDataString(java.lang.CharSequence value) { + this.dataString = value; + setDirty(0); + } + + /** + * Checks the dirty status of the 'dataString' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isDataStringDirty() { + return isDirty(0); + } + + /** + * Gets the value of the 'dataInt' field. + */ + public java.lang.Integer getDataInt() { + return dataInt; + } + + /** + * Sets the value of the 'dataInt' field. + * @param value the value to set. + */ + public void setDataInt(java.lang.Integer value) { + this.dataInt = value; + setDirty(1); + } + + /** + * Checks the dirty status of the 'dataInt' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isDataIntDirty() { + return isDirty(1); + } + + /** + * Gets the value of the 'dataLong' field. + */ + public java.lang.Long getDataLong() { + return dataLong; + } + + /** + * Sets the value of the 'dataLong' field. + * @param value the value to set. + */ + public void setDataLong(java.lang.Long value) { + this.dataLong = value; + setDirty(2); + } + + /** + * Checks the dirty status of the 'dataLong' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isDataLongDirty() { + return isDirty(2); + } + + /** + * Gets the value of the 'dataDouble' field. + */ + public java.lang.Double getDataDouble() { + return dataDouble; + } + + /** + * Sets the value of the 'dataDouble' field. + * @param value the value to set. + */ + public void setDataDouble(java.lang.Double value) { + this.dataDouble = value; + setDirty(3); + } + + /** + * Checks the dirty status of the 'dataDouble' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isDataDoubleDirty() { + return isDirty(3); + } + + /** + * Gets the value of the 'dataBytes' field. + */ + public java.nio.ByteBuffer getDataBytes() { + return dataBytes; + } + + /** + * Sets the value of the 'dataBytes' field. + * @param value the value to set. + */ + public void setDataBytes(java.nio.ByteBuffer value) { + this.dataBytes = value; + setDirty(4); + } + + /** + * Checks the dirty status of the 'dataBytes' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isDataBytesDirty() { + return isDirty(4); + } + + /** + * Gets the value of the 'arrayInt' field. + */ + public java.util.List<java.lang.Integer> getArrayInt() { + return arrayInt; + } + + /** + * Sets the value of the 'arrayInt' field. + * @param value the value to set. + */ + public void setArrayInt(java.util.List<java.lang.Integer> value) { + this.arrayInt = (value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyListWrapper(value); + setDirty(5); + } + + /** + * Checks the dirty status of the 'arrayInt' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isArrayIntDirty() { + return isDirty(5); + } + + /** + * Gets the value of the 'arrayString' field. + */ + public java.util.List<java.lang.CharSequence> getArrayString() { + return arrayString; + } + + /** + * Sets the value of the 'arrayString' field. + * @param value the value to set. + */ + public void setArrayString(java.util.List<java.lang.CharSequence> value) { + this.arrayString = (value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyListWrapper(value); + setDirty(6); + } + + /** + * Checks the dirty status of the 'arrayString' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isArrayStringDirty() { + return isDirty(6); + } + + /** + * Gets the value of the 'arrayLong' field. + */ + public java.util.List<java.lang.Long> getArrayLong() { + return arrayLong; + } + + /** + * Sets the value of the 'arrayLong' field. + * @param value the value to set. + */ + public void setArrayLong(java.util.List<java.lang.Long> value) { + this.arrayLong = (value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyListWrapper(value); + setDirty(7); + } + + /** + * Checks the dirty status of the 'arrayLong' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isArrayLongDirty() { + return isDirty(7); + } + + /** + * Gets the value of the 'arrayDouble' field. + */ + public java.util.List<java.lang.Double> getArrayDouble() { + return arrayDouble; + } + + /** + * Sets the value of the 'arrayDouble' field. + * @param value the value to set. + */ + public void setArrayDouble(java.util.List<java.lang.Double> value) { + this.arrayDouble = (value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyListWrapper(value); + setDirty(8); + } + + /** + * Checks the dirty status of the 'arrayDouble' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isArrayDoubleDirty() { + return isDirty(8); + } + + /** + * Gets the value of the 'mapInt' field. + */ + public java.util.Map<java.lang.CharSequence,java.lang.Integer> getMapInt() { + return mapInt; + } + + /** + * Sets the value of the 'mapInt' field. + * @param value the value to set. + */ + public void setMapInt(java.util.Map<java.lang.CharSequence,java.lang.Integer> value) { + this.mapInt = (value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyMapWrapper(value); + setDirty(9); + } + + /** + * Checks the dirty status of the 'mapInt' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isMapIntDirty() { + return isDirty(9); + } + + /** + * Gets the value of the 'mapString' field. + */ + public java.util.Map<java.lang.CharSequence,java.lang.CharSequence> getMapString() { + return mapString; + } + + /** + * Sets the value of the 'mapString' field. + * @param value the value to set. + */ + public void setMapString(java.util.Map<java.lang.CharSequence,java.lang.CharSequence> value) { + this.mapString = (value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyMapWrapper(value); + setDirty(10); + } + + /** + * Checks the dirty status of the 'mapString' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isMapStringDirty() { + return isDirty(10); + } + + /** + * Gets the value of the 'mapLong' field. + */ + public java.util.Map<java.lang.CharSequence,java.lang.Long> getMapLong() { + return mapLong; + } + + /** + * Sets the value of the 'mapLong' field. + * @param value the value to set. + */ + public void setMapLong(java.util.Map<java.lang.CharSequence,java.lang.Long> value) { + this.mapLong = (value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyMapWrapper(value); + setDirty(11); + } + + /** + * Checks the dirty status of the 'mapLong' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isMapLongDirty() { + return isDirty(11); + } + + /** + * Gets the value of the 'mapDouble' field. + */ + public java.util.Map<java.lang.CharSequence,java.lang.Double> getMapDouble() { + return mapDouble; + } + + /** + * Sets the value of the 'mapDouble' field. + * @param value the value to set. + */ + public void setMapDouble(java.util.Map<java.lang.CharSequence,java.lang.Double> value) { + this.mapDouble = (value instanceof org.apache.gora.persistency.Dirtyable) ? value : new org.apache.gora.persistency.impl.DirtyMapWrapper(value); + setDirty(12); + } + + /** + * Checks the dirty status of the 'mapDouble' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isMapDoubleDirty() { + return isDirty(12); + } + + /** Creates a new CassandraRecord RecordBuilder */ + public static org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder newBuilder() { + return new org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder(); + } + + /** Creates a new CassandraRecord RecordBuilder by copying an existing Builder */ + public static org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder newBuilder(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder other) { + return new org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder(other); + } + + /** Creates a new CassandraRecord RecordBuilder by copying an existing CassandraRecord instance */ + public static org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder newBuilder(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord other) { + return new org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder(other); + } + + private static java.nio.ByteBuffer deepCopyToReadOnlyBuffer( + java.nio.ByteBuffer input) { + java.nio.ByteBuffer copy = java.nio.ByteBuffer.allocate(input.capacity()); + int position = input.position(); + input.reset(); + int mark = input.position(); + int limit = input.limit(); + input.rewind(); + input.limit(input.capacity()); + copy.put(input); + input.rewind(); + copy.rewind(); + input.position(mark); + input.mark(); + copy.position(mark); + copy.mark(); + input.position(position); + copy.position(position); + input.limit(limit); + copy.limit(limit); + return copy.asReadOnlyBuffer(); + } + + /** + * RecordBuilder for CassandraRecord instances. + */ + public static class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase<CassandraRecord> + implements org.apache.avro.data.RecordBuilder<CassandraRecord> { + + private java.lang.CharSequence dataString; + private int dataInt; + private java.lang.Long dataLong; + private java.lang.Double dataDouble; + private java.nio.ByteBuffer dataBytes; + private java.util.List<java.lang.Integer> arrayInt; + private java.util.List<java.lang.CharSequence> arrayString; + private java.util.List<java.lang.Long> arrayLong; + private java.util.List<java.lang.Double> arrayDouble; + private java.util.Map<java.lang.CharSequence,java.lang.Integer> mapInt; + private java.util.Map<java.lang.CharSequence,java.lang.CharSequence> mapString; + private java.util.Map<java.lang.CharSequence,java.lang.Long> mapLong; + private java.util.Map<java.lang.CharSequence,java.lang.Double> mapDouble; + + /** Creates a new Builder */ + private Builder() { + super(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.SCHEMA$); + } + + /** Creates a Builder by copying an existing Builder */ + private Builder(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder other) { + super(other); + } + + /** Creates a Builder by copying an existing CassandraRecord instance */ + private Builder(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord other) { + super(org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.SCHEMA$); + if (isValidValue(fields()[0], other.dataString)) { + this.dataString = (java.lang.CharSequence) data().deepCopy(fields()[0].schema(), other.dataString); + fieldSetFlags()[0] = true; + } + if (isValidValue(fields()[1], other.dataInt)) { + this.dataInt = (java.lang.Integer) data().deepCopy(fields()[1].schema(), other.dataInt); + fieldSetFlags()[1] = true; + } + if (isValidValue(fields()[2], other.dataLong)) { + this.dataLong = (java.lang.Long) data().deepCopy(fields()[2].schema(), other.dataLong); + fieldSetFlags()[2] = true; + } + if (isValidValue(fields()[3], other.dataDouble)) { + this.dataDouble = (java.lang.Double) data().deepCopy(fields()[3].schema(), other.dataDouble); + fieldSetFlags()[3] = true; + } + if (isValidValue(fields()[4], other.dataBytes)) { + this.dataBytes = (java.nio.ByteBuffer) data().deepCopy(fields()[4].schema(), other.dataBytes); + fieldSetFlags()[4] = true; + } + if (isValidValue(fields()[5], other.arrayInt)) { + this.arrayInt = (java.util.List<java.lang.Integer>) data().deepCopy(fields()[5].schema(), other.arrayInt); + fieldSetFlags()[5] = true; + } + if (isValidValue(fields()[6], other.arrayString)) { + this.arrayString = (java.util.List<java.lang.CharSequence>) data().deepCopy(fields()[6].schema(), other.arrayString); + fieldSetFlags()[6] = true; + } + if (isValidValue(fields()[7], other.arrayLong)) { + this.arrayLong = (java.util.List<java.lang.Long>) data().deepCopy(fields()[7].schema(), other.arrayLong); + fieldSetFlags()[7] = true; + } + if (isValidValue(fields()[8], other.arrayDouble)) { + this.arrayDouble = (java.util.List<java.lang.Double>) data().deepCopy(fields()[8].schema(), other.arrayDouble); + fieldSetFlags()[8] = true; + } + if (isValidValue(fields()[9], other.mapInt)) { + this.mapInt = (java.util.Map<java.lang.CharSequence,java.lang.Integer>) data().deepCopy(fields()[9].schema(), other.mapInt); + fieldSetFlags()[9] = true; + } + if (isValidValue(fields()[10], other.mapString)) { + this.mapString = (java.util.Map<java.lang.CharSequence,java.lang.CharSequence>) data().deepCopy(fields()[10].schema(), other.mapString); + fieldSetFlags()[10] = true; + } + if (isValidValue(fields()[11], other.mapLong)) { + this.mapLong = (java.util.Map<java.lang.CharSequence,java.lang.Long>) data().deepCopy(fields()[11].schema(), other.mapLong); + fieldSetFlags()[11] = true; + } + if (isValidValue(fields()[12], other.mapDouble)) { + this.mapDouble = (java.util.Map<java.lang.CharSequence,java.lang.Double>) data().deepCopy(fields()[12].schema(), other.mapDouble); + fieldSetFlags()[12] = true; + } + } + + /** Gets the value of the 'dataString' field */ + public java.lang.CharSequence getDataString() { + return dataString; + } + + /** Sets the value of the 'dataString' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setDataString(java.lang.CharSequence value) { + validate(fields()[0], value); + this.dataString = value; + fieldSetFlags()[0] = true; + return this; + } + + /** Checks whether the 'dataString' field has been set */ + public boolean hasDataString() { + return fieldSetFlags()[0]; + } + + /** Clears the value of the 'dataString' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearDataString() { + dataString = null; + fieldSetFlags()[0] = false; + return this; + } + + /** Gets the value of the 'dataInt' field */ + public java.lang.Integer getDataInt() { + return dataInt; + } + + /** Sets the value of the 'dataInt' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setDataInt(int value) { + validate(fields()[1], value); + this.dataInt = value; + fieldSetFlags()[1] = true; + return this; + } + + /** Checks whether the 'dataInt' field has been set */ + public boolean hasDataInt() { + return fieldSetFlags()[1]; + } + + /** Clears the value of the 'dataInt' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearDataInt() { + fieldSetFlags()[1] = false; + return this; + } + + /** Gets the value of the 'dataLong' field */ + public java.lang.Long getDataLong() { + return dataLong; + } + + /** Sets the value of the 'dataLong' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setDataLong(java.lang.Long value) { + validate(fields()[2], value); + this.dataLong = value; + fieldSetFlags()[2] = true; + return this; + } + + /** Checks whether the 'dataLong' field has been set */ + public boolean hasDataLong() { + return fieldSetFlags()[2]; + } + + /** Clears the value of the 'dataLong' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearDataLong() { + dataLong = null; + fieldSetFlags()[2] = false; + return this; + } + + /** Gets the value of the 'dataDouble' field */ + public java.lang.Double getDataDouble() { + return dataDouble; + } + + /** Sets the value of the 'dataDouble' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setDataDouble(java.lang.Double value) { + validate(fields()[3], value); + this.dataDouble = value; + fieldSetFlags()[3] = true; + return this; + } + + /** Checks whether the 'dataDouble' field has been set */ + public boolean hasDataDouble() { + return fieldSetFlags()[3]; + } + + /** Clears the value of the 'dataDouble' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearDataDouble() { + dataDouble = null; + fieldSetFlags()[3] = false; + return this; + } + + /** Gets the value of the 'dataBytes' field */ + public java.nio.ByteBuffer getDataBytes() { + return dataBytes; + } + + /** Sets the value of the 'dataBytes' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setDataBytes(java.nio.ByteBuffer value) { + validate(fields()[4], value); + this.dataBytes = value; + fieldSetFlags()[4] = true; + return this; + } + + /** Checks whether the 'dataBytes' field has been set */ + public boolean hasDataBytes() { + return fieldSetFlags()[4]; + } + + /** Clears the value of the 'dataBytes' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearDataBytes() { + dataBytes = null; + fieldSetFlags()[4] = false; + return this; + } + + /** Gets the value of the 'arrayInt' field */ + public java.util.List<java.lang.Integer> getArrayInt() { + return arrayInt; + } + + /** Sets the value of the 'arrayInt' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setArrayInt(java.util.List<java.lang.Integer> value) { + validate(fields()[5], value); + this.arrayInt = value; + fieldSetFlags()[5] = true; + return this; + } + + /** Checks whether the 'arrayInt' field has been set */ + public boolean hasArrayInt() { + return fieldSetFlags()[5]; + } + + /** Clears the value of the 'arrayInt' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearArrayInt() { + arrayInt = null; + fieldSetFlags()[5] = false; + return this; + } + + /** Gets the value of the 'arrayString' field */ + public java.util.List<java.lang.CharSequence> getArrayString() { + return arrayString; + } + + /** Sets the value of the 'arrayString' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setArrayString(java.util.List<java.lang.CharSequence> value) { + validate(fields()[6], value); + this.arrayString = value; + fieldSetFlags()[6] = true; + return this; + } + + /** Checks whether the 'arrayString' field has been set */ + public boolean hasArrayString() { + return fieldSetFlags()[6]; + } + + /** Clears the value of the 'arrayString' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearArrayString() { + arrayString = null; + fieldSetFlags()[6] = false; + return this; + } + + /** Gets the value of the 'arrayLong' field */ + public java.util.List<java.lang.Long> getArrayLong() { + return arrayLong; + } + + /** Sets the value of the 'arrayLong' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setArrayLong(java.util.List<java.lang.Long> value) { + validate(fields()[7], value); + this.arrayLong = value; + fieldSetFlags()[7] = true; + return this; + } + + /** Checks whether the 'arrayLong' field has been set */ + public boolean hasArrayLong() { + return fieldSetFlags()[7]; + } + + /** Clears the value of the 'arrayLong' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearArrayLong() { + arrayLong = null; + fieldSetFlags()[7] = false; + return this; + } + + /** Gets the value of the 'arrayDouble' field */ + public java.util.List<java.lang.Double> getArrayDouble() { + return arrayDouble; + } + + /** Sets the value of the 'arrayDouble' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setArrayDouble(java.util.List<java.lang.Double> value) { + validate(fields()[8], value); + this.arrayDouble = value; + fieldSetFlags()[8] = true; + return this; + } + + /** Checks whether the 'arrayDouble' field has been set */ + public boolean hasArrayDouble() { + return fieldSetFlags()[8]; + } + + /** Clears the value of the 'arrayDouble' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearArrayDouble() { + arrayDouble = null; + fieldSetFlags()[8] = false; + return this; + } + + /** Gets the value of the 'mapInt' field */ + public java.util.Map<java.lang.CharSequence,java.lang.Integer> getMapInt() { + return mapInt; + } + + /** Sets the value of the 'mapInt' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setMapInt(java.util.Map<java.lang.CharSequence,java.lang.Integer> value) { + validate(fields()[9], value); + this.mapInt = value; + fieldSetFlags()[9] = true; + return this; + } + + /** Checks whether the 'mapInt' field has been set */ + public boolean hasMapInt() { + return fieldSetFlags()[9]; + } + + /** Clears the value of the 'mapInt' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearMapInt() { + mapInt = null; + fieldSetFlags()[9] = false; + return this; + } + + /** Gets the value of the 'mapString' field */ + public java.util.Map<java.lang.CharSequence,java.lang.CharSequence> getMapString() { + return mapString; + } + + /** Sets the value of the 'mapString' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setMapString(java.util.Map<java.lang.CharSequence,java.lang.CharSequence> value) { + validate(fields()[10], value); + this.mapString = value; + fieldSetFlags()[10] = true; + return this; + } + + /** Checks whether the 'mapString' field has been set */ + public boolean hasMapString() { + return fieldSetFlags()[10]; + } + + /** Clears the value of the 'mapString' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearMapString() { + mapString = null; + fieldSetFlags()[10] = false; + return this; + } + + /** Gets the value of the 'mapLong' field */ + public java.util.Map<java.lang.CharSequence,java.lang.Long> getMapLong() { + return mapLong; + } + + /** Sets the value of the 'mapLong' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setMapLong(java.util.Map<java.lang.CharSequence,java.lang.Long> value) { + validate(fields()[11], value); + this.mapLong = value; + fieldSetFlags()[11] = true; + return this; + } + + /** Checks whether the 'mapLong' field has been set */ + public boolean hasMapLong() { + return fieldSetFlags()[11]; + } + + /** Clears the value of the 'mapLong' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearMapLong() { + mapLong = null; + fieldSetFlags()[11] = false; + return this; + } + + /** Gets the value of the 'mapDouble' field */ + public java.util.Map<java.lang.CharSequence,java.lang.Double> getMapDouble() { + return mapDouble; + } + + /** Sets the value of the 'mapDouble' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder setMapDouble(java.util.Map<java.lang.CharSequence,java.lang.Double> value) { + validate(fields()[12], value); + this.mapDouble = value; + fieldSetFlags()[12] = true; + return this; + } + + /** Checks whether the 'mapDouble' field has been set */ + public boolean hasMapDouble() { + return fieldSetFlags()[12]; + } + + /** Clears the value of the 'mapDouble' field */ + public org.apache.gora.cassandra.example.generated.avroSerialization.CassandraRecord.Builder clearMapDouble() { + mapDouble = null; + fieldSetFlags()[12] = false; + return this; + } + + @Override + public CassandraRecord build() { + try { + CassandraRecord record = new CassandraRecord(); + record.dataString = fieldSetFlags()[0] ? this.dataString : (java.lang.CharSequence) defaultValue(fields()[0]); + record.dataInt = fieldSetFlags()[1] ? this.dataInt : (java.lang.Integer) defaultValue(fields()[1]); + record.dataLong = fieldSetFlags()[2] ? this.dataLong : (java.lang.Long) defaultValue(fields()[2]); + record.dataDouble = fieldSetFlags()[3] ? this.dataDouble : (java.lang.Double) defaultValue(fields()[3]); + record.dataBytes = fieldSetFlags()[4] ? this.dataBytes : (java.nio.ByteBuffer) defaultValue(fields()[4]); + record.arrayInt = fieldSetFlags()[5] ? this.arrayInt : (java.util.List<java.lang.Integer>) new org.apache.gora.persistency.impl.DirtyListWrapper((java.util.List)defaultValue(fields()[5])); + record.arrayString = fieldSetFlags()[6] ? this.arrayString : (java.util.List<java.lang.CharSequence>) new org.apache.gora.persistency.impl.DirtyListWrapper((java.util.List)defaultValue(fields()[6])); + record.arrayLong = fieldSetFlags()[7] ? this.arrayLong : (java.util.List<java.lang.Long>) new org.apache.gora.persistency.impl.DirtyListWrapper((java.util.List)defaultValue(fields()[7])); + record.arrayDouble = fieldSetFlags()[8] ? this.arrayDouble : (java.util.List<java.lang.Double>) new org.apache.gora.persistency.impl.DirtyListWrapper((java.util.List)defaultValue(fields()[8])); + record.mapInt = fieldSetFlags()[9] ? this.mapInt : (java.util.Map<java.lang.CharSequence,java.lang.Integer>) new org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)defaultValue(fields()[9])); + record.mapString = fieldSetFlags()[10] ? this.mapString : (java.util.Map<java.lang.CharSequence,java.lang.CharSequence>) new org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)defaultValue(fields()[10])); + record.mapLong = fieldSetFlags()[11] ? this.mapLong : (java.util.Map<java.lang.CharSequence,java.lang.Long>) new org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)defaultValue(fields()[11])); + record.mapDouble = fieldSetFlags()[12] ? this.mapDouble : (java.util.Map<java.lang.CharSequence,java.lang.Double>) new org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)defaultValue(fields()[12])); + return record; + } catch (Exception e) { + throw new org.apache.avro.AvroRuntimeException(e); + } + } + } + + public CassandraRecord.Tombstone getTombstone(){ + return TOMBSTONE; + } + + public CassandraRecord newInstance(){ + return newBuilder().build(); + } + + private static final Tombstone TOMBSTONE = new Tombstone(); + + public static final class Tombstone extends CassandraRecord implements org.apache.gora.persistency.Tombstone { + + private Tombstone() { } + + /** + * Gets the value of the 'dataString' field. + */ + public java.lang.CharSequence getDataString() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'dataString' field. + * @param value the value to set. + */ + public void setDataString(java.lang.CharSequence value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'dataString' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isDataStringDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'dataInt' field. + */ + public java.lang.Integer getDataInt() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'dataInt' field. + * @param value the value to set. + */ + public void setDataInt(java.lang.Integer value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'dataInt' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isDataIntDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'dataLong' field. + */ + public java.lang.Long getDataLong() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'dataLong' field. + * @param value the value to set. + */ + public void setDataLong(java.lang.Long value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'dataLong' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isDataLongDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'dataDouble' field. + */ + public java.lang.Double getDataDouble() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'dataDouble' field. + * @param value the value to set. + */ + public void setDataDouble(java.lang.Double value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'dataDouble' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isDataDoubleDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'dataBytes' field. + */ + public java.nio.ByteBuffer getDataBytes() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'dataBytes' field. + * @param value the value to set. + */ + public void setDataBytes(java.nio.ByteBuffer value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'dataBytes' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isDataBytesDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'arrayInt' field. + */ + public java.util.List<java.lang.Integer> getArrayInt() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'arrayInt' field. + * @param value the value to set. + */ + public void setArrayInt(java.util.List<java.lang.Integer> value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'arrayInt' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isArrayIntDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'arrayString' field. + */ + public java.util.List<java.lang.CharSequence> getArrayString() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'arrayString' field. + * @param value the value to set. + */ + public void setArrayString(java.util.List<java.lang.CharSequence> value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'arrayString' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isArrayStringDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'arrayLong' field. + */ + public java.util.List<java.lang.Long> getArrayLong() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'arrayLong' field. + * @param value the value to set. + */ + public void setArrayLong(java.util.List<java.lang.Long> value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'arrayLong' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isArrayLongDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'arrayDouble' field. + */ + public java.util.List<java.lang.Double> getArrayDouble() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'arrayDouble' field. + * @param value the value to set. + */ + public void setArrayDouble(java.util.List<java.lang.Double> value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'arrayDouble' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isArrayDoubleDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'mapInt' field. + */ + public java.util.Map<java.lang.CharSequence,java.lang.Integer> getMapInt() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'mapInt' field. + * @param value the value to set. + */ + public void setMapInt(java.util.Map<java.lang.CharSequence,java.lang.Integer> value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'mapInt' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isMapIntDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'mapString' field. + */ + public java.util.Map<java.lang.CharSequence,java.lang.CharSequence> getMapString() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'mapString' field. + * @param value the value to set. + */ + public void setMapString(java.util.Map<java.lang.CharSequence,java.lang.CharSequence> value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'mapString' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isMapStringDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'mapLong' field. + */ + public java.util.Map<java.lang.CharSequence,java.lang.Long> getMapLong() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'mapLong' field. + * @param value the value to set. + */ + public void setMapLong(java.util.Map<java.lang.CharSequence,java.lang.Long> value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'mapLong' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isMapLongDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + /** + * Gets the value of the 'mapDouble' field. + */ + public java.util.Map<java.lang.CharSequence,java.lang.Double> getMapDouble() { + throw new java.lang.UnsupportedOperationException("Get is not supported on tombstones"); + } + + /** + * Sets the value of the 'mapDouble' field. + * @param value the value to set. + */ + public void setMapDouble(java.util.Map<java.lang.CharSequence,java.lang.Double> value) { + throw new java.lang.UnsupportedOperationException("Set is not supported on tombstones"); + } + + /** + * Checks the dirty status of the 'mapDouble' field. A field is dirty if it represents a change that has not yet been written to the database. + * @param value the value to set. + */ + public boolean isMapDoubleDirty() { + throw new java.lang.UnsupportedOperationException("IsDirty is not supported on tombstones"); + } + + + } + + private static final org.apache.avro.io.DatumWriter + DATUM_WRITER$ = new org.apache.avro.specific.SpecificDatumWriter(SCHEMA$); + private static final org.apache.avro.io.DatumReader + DATUM_READER$ = new org.apache.avro.specific.SpecificDatumReader(SCHEMA$); + + /** + * Writes AVRO data bean to output stream in the form of AVRO Binary encoding format. This will transform + * AVRO data bean from its Java object form to it s serializable form. + * + * @param out java.io.ObjectOutput output stream to write data bean in serializable form + */ + @Override + public void writeExternal(java.io.ObjectOutput out) + throws java.io.IOException { + out.write(super.getDirtyBytes().array()); + DATUM_WRITER$.write(this, org.apache.avro.io.EncoderFactory.get() + .directBinaryEncoder((java.io.OutputStream) out, + null)); + } + + /** + * Reads AVRO data bean from input stream in it s AVRO Binary encoding format to Java object format. + * This will transform AVRO data bean from it s serializable form to deserialized Java object form. + * + * @param in java.io.ObjectOutput input stream to read data bean in serializable form + */ + @Override + public void readExternal(java.io.ObjectInput in) + throws java.io.IOException { + byte[] __g__dirty = new byte[getFieldsCount()]; + in.read(__g__dirty); + super.setDirtyBytes(java.nio.ByteBuffer.wrap(__g__dirty)); + DATUM_READER$.read(this, org.apache.avro.io.DecoderFactory.get() + .directBinaryDecoder((java.io.InputStream) in, + null)); + } + +} + http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java ---------------------------------------------------------------------- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java index ca9657b..37ec84e 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java @@ -31,28 +31,33 @@ public class CassandraKey{ private List<PartitionKeyField> partitionKeyFields; + private List<Field> fieldList; public CassandraKey(String name) { this.name = name; + this.fieldList = new ArrayList<>(); + this.partitionKeyFields = new ArrayList<>(); } public String getName() { - return name; + return this.name; } public List<ClusterKeyField> getClusterKeyFields() { - return clusterKeyFields; + return this.clusterKeyFields; } public List<PartitionKeyField> getPartitionKeyFields() { - return partitionKeyFields; + return this.partitionKeyFields; } public void addPartitionKeyField(PartitionKeyField partitionKeyField) { - if(this.partitionKeyFields == null) { - this.partitionKeyFields = new ArrayList<>(); - } this.partitionKeyFields.add(partitionKeyField); + if(partitionKeyField.isComposite()) { + this.fieldList.addAll(partitionKeyField.getFields()); + } else { + this.fieldList.add(partitionKeyField); + } } public void addClusterKeyField(ClusterKeyField clusterKeyField) { @@ -62,4 +67,8 @@ public class CassandraKey{ this.clusterKeyFields.add(clusterKeyField); } + public List<Field> getFieldList() { + return this.fieldList; + } + } http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java ---------------------------------------------------------------------- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java index 560b61c..ba4a743 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java @@ -20,7 +20,21 @@ package org.apache.gora.cassandra.bean; /** * This class represents Cassandra Clustering Key. */ -public class ClusterKeyField extends Field { +public class ClusterKeyField { + + public String getColumnName() { + return columnName; + } + + public void setColumnName(String columnName) { + this.columnName = columnName; + } + + private String columnName; + + public ClusterKeyField() { + + } public enum Order { DESC, http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java ---------------------------------------------------------------------- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java deleted file mode 100644 index e95b815..0000000 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraColumn.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.gora.cassandra.query; - -import org.apache.avro.Schema.Field; - -/** - * Created by madhawa on 7/1/17. - */ -public class CassandraColumn { - - public CassandraColumn(Field field, Object value) { - this.field = field; - this.name = field.name(); - this.value = value; - } - - public String getName() { - return name; - } - - public Field getField() { - return field; - } - - private String name; - - private Field field; - - public Object getValue() { - return value; - } - - private Object value; -} http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraResultSet.java ---------------------------------------------------------------------- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraResultSet.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraResultSet.java index c23a11c..1b4876e 100644 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraResultSet.java +++ b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraResultSet.java @@ -79,4 +79,8 @@ public class CassandraResultSet<K, T extends Persistent> extends ResultBase<K, T this.persistentObject.add(token); this.size++; } + + public void setLimit(long limit) { + this.limit = limit; + } } http://git-wip-us.apache.org/repos/asf/gora/blob/a51b719c/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraRow.java ---------------------------------------------------------------------- diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraRow.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraRow.java deleted file mode 100644 index 857e1b2..0000000 --- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraRow.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.gora.cassandra.query; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by madhawa on 7/1/17. - */ -public class CassandraRow<K> extends ArrayList<CassandraColumn> { - private static final long serialVersionUID = -7620939600192859652L; - private K key; - - public K getKey() { - return this.key; - } - - public void setKey(K key) { - this.key = key; - } - - /** - * Gets a specific CassandraColumn within a row using its name - * - * @param cassandraColumnName columnName - * @return CassandraColumn - */ - public CassandraColumn getCassandraColumn(String cassandraColumnName) { - for (CassandraColumn cColumn : this) { - if (cassandraColumnName.equals(cColumn.getName())) { - return cColumn; - } - } - return null; - } - - /** - * - * @return - */ - public String[] getFields() { - List<String> columnNames = new ArrayList<>(); - for (CassandraColumn cColumn : this) { - columnNames.add(cColumn.getName()); - } - String[] columnNameArray = new String[columnNames.size()]; - columnNameArray = columnNames.toArray(columnNameArray); - return columnNameArray; - } - - /** - * - * @return - */ - public Object[] getValues() { - List<Object> columnValues = new ArrayList<>(); - for (CassandraColumn cColumn : this) { - columnValues.add(cColumn.getValue()); - } - return columnValues.toArray(); - } -}