You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gora.apache.org by le...@apache.org on 2017/08/23 22:16:42 UTC
[11/13] gora git commit: Rename gora-cassandra-cql module into
gora-cassandra module
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java
deleted file mode 100644
index b831c97..0000000
--- a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/ComplexTypes.java
+++ /dev/null
@@ -1,199 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.nativeSerialization;
-
-import com.datastax.driver.mapping.annotations.Column;
-import com.datastax.driver.mapping.annotations.PartitionKey;
-import com.datastax.driver.mapping.annotations.Table;
-import com.datastax.driver.mapping.annotations.Transient;
-import org.apache.avro.Schema;
-import org.apache.gora.persistency.Persistent;
-import org.apache.gora.persistency.Tombstone;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-
-/**
- * Sample class for test native cassandra persistent.
- */
-@Table(keyspace = "nativeTestKeySpace", name = "documents",
- readConsistency = "QUORUM",
- writeConsistency = "QUORUM",
- caseSensitiveKeyspace = false,
- caseSensitiveTable = true)
-public class ComplexTypes implements Persistent {
-
- @Column
- private List<String> listDataType;
- @Column
- private Map<String, String> mapDataType;
- @Column
- private String[] stringArrayDataType;
- @Column
- private int[] intArrayDataType;
- @Column
- private Set<String> setDataType;
- @PartitionKey
- @Column
- private String id;
- @Column
- private List<UUID> listUUIDDataType;
-
- public ComplexTypes(String id) {
- this.id = id;
- }
-
- public ComplexTypes() {
- }
-
- public List<UUID> getListUUIDDataType() {
- return listUUIDDataType;
- }
-
- public void setListUUIDDataType(List<UUID> listUUIDDataType) {
- this.listUUIDDataType = listUUIDDataType;
- }
-
- public List<String> getListDataType() {
- return listDataType;
- }
-
- public void setListDataType(List<String> listDataType) {
- this.listDataType = listDataType;
- }
-
- public Map<String, String> getMapDataType() {
- return mapDataType;
- }
-
- public void setMapDataType(Map<String, String> mapDataType) {
- this.mapDataType = mapDataType;
- }
-
- public String[] getStringArrayDataType() {
- return stringArrayDataType;
- }
-
- public void setStringArrayDataType(String[] stringArrayDataType) {
- this.stringArrayDataType = stringArrayDataType;
- }
-
- public int[] getIntArrayDataType() {
- return intArrayDataType;
- }
-
- public void setIntArrayDataType(int[] intArrayDataType) {
- this.intArrayDataType = intArrayDataType;
- }
-
- public Set<String> getSetDataType() {
- return setDataType;
- }
-
- public void setSetDataType(Set<String> setDataType) {
- this.setDataType = setDataType;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- @Transient
- @Override
- public void clear() {
-
- }
-
- @Transient
- @Override
- public boolean isDirty(int fieldIndex) {
- return false;
- }
-
- @Transient
- @Override
- public boolean isDirty(String field) {
- return false;
- }
-
- @Transient
- @Override
- public void setDirty() {
-
- }
-
- @Transient
- @Override
- public void setDirty(int fieldIndex) {
-
- }
-
- @Transient
- @Override
- public void clearDirty(int fieldIndex) {
-
- }
-
- @Transient
- @Override
- public void clearDirty(String field) {
-
- }
-
- @Transient
- @Override
- public Tombstone getTombstone() {
- return null;
- }
-
- @Transient
- @Override
- public List<Schema.Field> getUnmanagedFields() {
- return null;
- }
-
- @Transient
- @Override
- public Persistent newInstance() {
- return new ComplexTypes();
- }
-
- @Transient
- @Override
- public boolean isDirty() {
- return false;
- }
-
- @Transient
- @Override
- public void setDirty(String field) {
-
- }
-
- @Transient
- @Override
- public void clearDirty() {
-
- }
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Customer.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Customer.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Customer.java
deleted file mode 100644
index 59bed36..0000000
--- a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Customer.java
+++ /dev/null
@@ -1,75 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.nativeSerialization;
-
-import com.datastax.driver.mapping.annotations.Field;
-import com.datastax.driver.mapping.annotations.UDT;
-
-import java.util.UUID;
-
-@UDT(name = "customer", keyspace = "nativeTestKeySpace")
-public class Customer {
-
- @Field(name = "id")
- private String id;
- @Field(name = "name")
- private String name;
- @Field
- private UUID age;
- @Field(name = "coupon_code")
- private String couponCode;
- @Field(name = "address")
- private String address;
-
- public Customer() {
-
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getCouponCode() {
- return couponCode;
- }
-
- public void setCouponCode(String couponCode) {
- this.couponCode = couponCode;
- }
-
- public String getAddress() {
- return address;
- }
-
- public void setAddress(String address) {
- this.address = address;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Document.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Document.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Document.java
deleted file mode 100644
index 77961e4..0000000
--- a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/Document.java
+++ /dev/null
@@ -1,136 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.nativeSerialization;
-
-import com.datastax.driver.mapping.annotations.Column;
-import com.datastax.driver.mapping.annotations.PartitionKey;
-import com.datastax.driver.mapping.annotations.Table;
-import com.datastax.driver.mapping.annotations.Transient;
-import org.apache.avro.Schema;
-import org.apache.gora.persistency.Persistent;
-import org.apache.gora.persistency.Tombstone;
-
-import java.util.List;
-
-@Table(keyspace = "nativeTestKeySpace", name = "documents",
- readConsistency = "QUORUM",
- writeConsistency = "QUORUM",
- caseSensitiveKeyspace = false,
- caseSensitiveTable = false)
-public class Document implements Persistent {
- @Column
- Customer customer;
- @PartitionKey
- @Column
- String defaultId;
-
- public String getDefaultId() {
- return defaultId;
- }
-
- public void setDefaultId(String defaultId) {
- this.defaultId = defaultId;
- }
-
- public Customer getCustomer() {
- return customer;
- }
-
- public void setCustomer(Customer customer) {
- this.customer = customer;
- }
-
- @Transient
- @Override
- public void clear() {
-
- }
-
- @Transient
- @Override
- public boolean isDirty(int fieldIndex) {
- return false;
- }
-
- @Transient
- @Override
- public boolean isDirty(String field) {
- return false;
- }
-
- @Transient
- @Override
- public void setDirty() {
-
- }
-
- @Transient
- @Override
- public void setDirty(int fieldIndex) {
-
- }
-
- @Transient
- @Override
- public void clearDirty(int fieldIndex) {
-
- }
-
- @Transient
- @Override
- public void clearDirty(String field) {
-
- }
-
- @Transient
- @Override
- public Tombstone getTombstone() {
- return null;
- }
-
- @Transient
- @Override
- public List<Schema.Field> getUnmanagedFields() {
- return null;
- }
-
- @Transient
- @Override
- public Persistent newInstance() {
- return new Document();
- }
-
- @Transient
- @Override
- public boolean isDirty() {
- return false;
- }
-
- @Transient
- @Override
- public void setDirty(String field) {
-
- }
-
- @Transient
- @Override
- public void clearDirty() {
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java b/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java
deleted file mode 100644
index 74b425e..0000000
--- a/gora-cassandra-cql/src/examples/java/org/apache/gora/cassandra/example/generated/nativeSerialization/User.java
+++ /dev/null
@@ -1,159 +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.example.generated.nativeSerialization;
-
-import com.datastax.driver.mapping.annotations.Column;
-import com.datastax.driver.mapping.annotations.PartitionKey;
-import com.datastax.driver.mapping.annotations.Table;
-import com.datastax.driver.mapping.annotations.Transient;
-import org.apache.avro.Schema;
-import org.apache.gora.persistency.Persistent;
-import org.apache.gora.persistency.Tombstone;
-
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-
-/**
- * Sample class for native cassandra persistent example.
- */
-@Table(keyspace = "nativeTestKeySpace", name = "users",
- readConsistency = "QUORUM",
- writeConsistency = "QUORUM",
- caseSensitiveKeyspace = false,
- caseSensitiveTable = false)
-public class User implements Persistent {
- @PartitionKey
- @Column(name = "user_id")
- private UUID userId;
- @Column(name = "name")
- private String name;
- @Column(name = "dob")
- private Date dateOfBirth;
-
- public User() {
-
- }
-
- public User(UUID userId, String name, Date dateOfBirth) {
- this.userId = userId;
- this.name = name;
- this.dateOfBirth = dateOfBirth;
- }
-
- public UUID getUserId() {
- return userId;
- }
-
- public void setUserId(UUID userId) {
- this.userId = userId;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Date getDateOfBirth() {
- return dateOfBirth;
- }
-
- public void setDateOfBirth(Date dateOfBirth) {
- this.dateOfBirth = dateOfBirth;
- }
-
- @Transient
- @Override
- public void clear() {
-
- }
-
- @Transient
- @Override
- public boolean isDirty(int fieldIndex) {
- return false;
- }
-
- @Transient
- @Override
- public boolean isDirty(String field) {
- return false;
- }
-
- @Transient
- @Override
- public void setDirty() {
-
- }
-
- @Transient
- @Override
- public void setDirty(int fieldIndex) {
-
- }
-
- @Transient
- @Override
- public void clearDirty(int fieldIndex) {
-
- }
-
- @Transient
- @Override
- public void clearDirty(String field) {
-
- }
-
- @Transient
- @Override
- public Tombstone getTombstone() {
- return null;
- }
-
- @Transient
- @Override
- public List<Schema.Field> getUnmanagedFields() {
- return null;
- }
-
- @Transient
- @Override
- public Persistent newInstance() {
- return new User();
- }
-
- @Transient
- @Override
- public boolean isDirty() {
- return false;
- }
-
- @Transient
- @Override
- public void setDirty(String field) {
-
- }
-
- @Transient
- @Override
- public void clearDirty() {
-
- }
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/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
deleted file mode 100644
index d3f3b1d..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/CassandraKey.java
+++ /dev/null
@@ -1,91 +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.bean;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * This Class represents the Cassandra Key.
- */
-public class CassandraKey {
-
- private String name;
-
- private List<ClusterKeyField> clusterKeyFields;
-
- 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 this.name;
- }
-
- public List<ClusterKeyField> getClusterKeyFields() {
- return this.clusterKeyFields;
- }
-
- public List<PartitionKeyField> getPartitionKeyFields() {
- return this.partitionKeyFields;
- }
-
- public void addPartitionKeyField(PartitionKeyField partitionKeyField) {
- this.partitionKeyFields.add(partitionKeyField);
- if (partitionKeyField.isComposite()) {
- this.fieldList.addAll(partitionKeyField.getFields());
- } else {
- this.fieldList.add(partitionKeyField);
- }
- }
-
- public void addClusterKeyField(ClusterKeyField clusterKeyField) {
- if (this.clusterKeyFields == null) {
- this.clusterKeyFields = new ArrayList<>();
- }
- this.clusterKeyFields.add(clusterKeyField);
- }
-
- public String[] getFieldNames() {
- List<String> fieldNames = new ArrayList<>(fieldList.size());
- for (Field field : fieldList) {
- fieldNames.add(field.getFieldName());
- }
- String[] fieldNameArray = new String[fieldNames.size()];
- return fieldNames.toArray(fieldNameArray);
- }
-
- public Field getFieldFromFieldName(String fieldName) {
- for (Field field1 : fieldList) {
- if (field1.getFieldName().equalsIgnoreCase(fieldName)) {
- return field1;
- }
- }
- return null;
- }
-
- public List<Field> getFieldList() {
- return this.fieldList;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/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
deleted file mode 100644
index 7e23c75..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/ClusterKeyField.java
+++ /dev/null
@@ -1,54 +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.bean;
-
-/**
- * This class represents Cassandra Clustering Key.
- */
-public class ClusterKeyField {
-
- private String columnName;
-
- private Order order;
-
- public ClusterKeyField() {
-
- }
-
- public String getColumnName() {
- return columnName;
- }
-
- public void setColumnName(String columnName) {
- this.columnName = columnName;
- }
-
- public Order getOrder() {
- return order;
- }
-
- public void setOrder(Order order) {
- this.order = order;
- }
-
- public enum Order {
- DESC,
- ASC,
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/Field.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/Field.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/Field.java
deleted file mode 100644
index b5015a1..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/Field.java
+++ /dev/null
@@ -1,70 +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.bean;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * This Class represents the Cassandra Column.
- */
-public class Field {
-
- private String fieldName;
-
- private String columnName;
-
- private String type;
-
- private Map<String, String> properties;
-
- public Field() {
- properties = new HashMap<>(2);
- }
-
- public void addProperty(String key, String value) {
- properties.put(key, value);
- }
-
- public String getFieldName() {
- return fieldName;
- }
-
- public void setFieldName(String fieldName) {
- this.fieldName = fieldName;
- }
-
- public String getColumnName() {
- return columnName;
- }
-
- public void setColumnName(String columnName) {
- this.columnName = columnName;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getProperty(String key) {
- return this.properties.get(key);
- }
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java
deleted file mode 100644
index 8a7ca5f..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/KeySpace.java
+++ /dev/null
@@ -1,84 +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.bean;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * This class represents the Cassandra Keyspace.
- */
-public class KeySpace {
-
- private String name;
-
- private PlacementStrategy placementStrategy;
-
- private boolean durableWritesEnabled;
-
- private int replicationFactor;
-
- private Map<String, Integer> dataCenters;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public boolean isDurableWritesEnabled() {
- return durableWritesEnabled;
- }
-
- public void setDurableWritesEnabled(boolean durableWritesEnabled) {
- this.durableWritesEnabled = durableWritesEnabled;
- }
-
- public PlacementStrategy getPlacementStrategy() {
- return placementStrategy;
- }
-
- public void setPlacementStrategy(PlacementStrategy placementStrategy) {
- this.placementStrategy = placementStrategy;
- if (placementStrategy.equals(PlacementStrategy.NetworkTopologyStrategy) && this.dataCenters == null) {
- this.dataCenters = new HashMap<>();
- }
- }
-
- public int getReplicationFactor() {
- return replicationFactor;
- }
-
- public void setReplicationFactor(int replicationFactor) {
- this.replicationFactor = replicationFactor;
- }
-
- public Map<String, Integer> getDataCenters() {
- return dataCenters;
- }
-
- public void addDataCenter(String key, Integer value) {
- this.dataCenters.put(key, value);
- }
-
- public enum PlacementStrategy {
- SimpleStrategy,
- NetworkTopologyStrategy,
- }
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/PartitionKeyField.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/PartitionKeyField.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/PartitionKeyField.java
deleted file mode 100644
index be91d40..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/bean/PartitionKeyField.java
+++ /dev/null
@@ -1,50 +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.bean;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * This class represents Cassandra Partition Key.
- */
-public class PartitionKeyField extends Field {
-
- private boolean isComposite;
-
- private List<Field> fields;
-
- public boolean isComposite() {
- return isComposite;
- }
-
- public void setComposite(boolean composite) {
- isComposite = composite;
- if (isComposite && fields == null) {
- fields = new ArrayList<>();
- }
- }
-
- public void addField(Field field) {
- this.fields.add(field);
- }
-
- public List<Field> getFields() {
- return fields;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java
deleted file mode 100644
index cd0a5d2..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/compiler/GoraCassandraNativeCompiler.java
+++ /dev/null
@@ -1,326 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.compiler;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.gora.cassandra.bean.Field;
-import org.apache.gora.cassandra.store.CassandraMapping;
-import org.apache.gora.cassandra.store.CassandraMappingBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.nio.charset.Charset;
-import java.util.List;
-import java.util.Locale;
-
-/**
- * This class generate Java classes for Cassandra Native Serialization.
- * <p>
- * Generate specific Java classes for defined Gora cassandra mapping.
- * Different from the @see org.apache.gora.compiler.GoraCompiler,
- * which uses an .avsc or .json schema definition, this compiler
- * expects an XML mapping file as input.
- */
-public class GoraCassandraNativeCompiler {
-
- private static final Logger log = LoggerFactory.getLogger(GoraCassandraNativeCompiler.class);
-
- private Writer out;
- private File dest;
-
- GoraCassandraNativeCompiler(File dest) {
- this.dest = dest;
- }
-
- /**
- * Start point of the compiler program
- *
- * @param args the schema file to be compiled and where this should be written
- */
- public static void main(String[] args) {
- try {
- if (args.length < 2) {
- log.error("Usage: Compiler <mapping file> <output dir>");
- System.exit(1);
- }
- compileSchema(new File(args[0]), new File(args[1]));
- } catch (Exception e) {
- log.error("Something went wrong. Please check the input file.", e.getMessage());
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Generates Java classes for a mapping.
- */
- private static void compileSchema(File src, File dest) throws Exception {
- log.info("Compiling {} to {}", src, dest);
- GoraCassandraNativeCompiler compiler = new GoraCassandraNativeCompiler(dest);
- List<CassandraMapping> mappings = readMappingFile(src);
- for (CassandraMapping mapping : mappings) {
- compiler.compile(mapping);
- }
- }
-
- private static List<CassandraMapping> readMappingFile(File src) throws Exception {
- List<CassandraMapping> mappings = new CassandraMappingBuilder().readMappingFile(src);
- return mappings;
- }
-
- /**
- * Returns the string received with the first letter in uppercase
- *
- * @param name to be converted
- * @return camelCase String
- */
- static String cap(String name) {
- return name.substring(0, 1).toUpperCase(Locale.getDefault())
- + name.substring(1, name.length());
- }
-
- /**
- * Method in charge of compiling a specific table using a key schema and a set
- * of attributes
- *
- * @param mapping Cassandra Mapping
- */
- private void compile(CassandraMapping mapping) {
- String fullQualifiedName = mapping.getProperty("name");
- String tableName = mapping.getCoreName();
- String packageName = fullQualifiedName.substring(0, fullQualifiedName.lastIndexOf("."));
- String className = fullQualifiedName.substring(packageName.length() + 1, fullQualifiedName.length());
- String keySpace = mapping.getKeySpace().getName();
-
- try {
- startFile(className, packageName);
- setHeaders(packageName);
- line(0, "");
- line(0, "@Table(keyspace = \"" + keySpace + "\", name = \"" + tableName + "\"," +
- "readConsistency = \"QUORUM\"," +
- "writeConsistency = \"QUORUM\"," +
- "caseSensitiveKeyspace = false," +
- "caseSensitiveTable = false)");
- line(0, "public class " + className + " implements Persistent {");
- for (Field field : mapping.getFieldList()) {
- processFields(field);
- processGetterAndSetters(field);
- line(2, "");
- }
-
- setDefaultMethods(2, className);
- line(0, "}");
- out.flush();
- out.close();
- } catch (IOException e) {
- log.error("Error while compiling table {}", className, e.getMessage());
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Sets the necessary imports for the generated java class to work
- *
- * @param namespace Namespace
- * @throws IOException
- */
- private void setHeaders(String namespace) throws IOException {
- if (namespace != null) {
- line(0, "package " + namespace + ";\n");
- }
- line(0, "import java.util.List;");
- line(0, "import java.util.Set;");
- line(0, "import java.util.Map;");
- line(0, "import java.util.UUID;");
- line(0, "import java.math.BigDecimal;");
- line(0, "import java.math.BigInteger;");
- line(0, "import java.net.InetAddress;");
- line(0, "import java.nio.ByteBuffer;");
- line(0, "import java.util.Date;");
- line(0, "");
- line(0, "import org.apache.avro.Schema.Field;");
- line(0, "import org.apache.gora.persistency.Persistent;");
- line(0, "import org.apache.gora.persistency.Tombstone;");
- line(0, "import com.datastax.driver.mapping.annotations.Column;");
- line(0, "import com.datastax.driver.mapping.annotations.PartitionKey;");
- line(0, "import com.datastax.driver.mapping.annotations.Table;");
- line(0, "import com.datastax.driver.mapping.annotations.Transient;");
- }
-
- /**
- * Starts the java generated class file
- *
- * @param name Class name
- * @throws IOException
- */
- private void startFile(String name, String packageName) throws IOException {
- String fullDest = FilenameUtils.normalize
- (dest.getAbsolutePath() + File.separatorChar + packageName.replace('.', File.separatorChar));
- File dir = new File(fullDest);
- if (!dir.exists())
- if (!dir.mkdirs())
- throw new IOException("Unable to create " + dir);
- name = cap(name) + ".java";
- out = new OutputStreamWriter(new FileOutputStream(new File(dir, name)), Charset.defaultCharset());
- }
-
- /**
- * Creates default methods inherited from upper classes
- *
- * @param pIden of spaces used for indentation
- * @param className class Name
- * @throws IOException
- */
- private void setDefaultMethods(int pIden, String className) throws IOException {
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public void clear() { }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public boolean isDirty() { return false; }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public boolean isDirty(int fieldIndex) { return false; }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public boolean isDirty(String field) { return false; }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public void setDirty() { }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public void setDirty(int fieldIndex) { }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public void setDirty(String field) { }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public void clearDirty(int fieldIndex) { }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public void clearDirty(String field) { }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public void clearDirty() { }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public Tombstone getTombstone() { return null; }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public List<Field> getUnmanagedFields() { return null; }");
- line(pIden, "@Transient");
- line(pIden, "@Override");
- line(pIden, "public Persistent newInstance() { return new " + className + "(); }");
- }
-
- private void processFields(Field field) throws IOException {
- String fieldName = field.getFieldName();
- String columnName = field.getColumnName();
- if (Boolean.parseBoolean(field.getProperty("primarykey"))) {
- line(2, "@PartitionKey");
- }
- line(2, "@Column(name = \"" + columnName + "\")");
- line(2, "private " + getDataType(field.getType(), false) + " " + fieldName + ";");
- }
-
- private void processGetterAndSetters(Field field) throws IOException {
- String dataType = getDataType(field.getType(), false);
- line(2, "public " + dataType + " get" + cap(field.getFieldName()) + "() {");
- line(2, "return " + field.getFieldName() + ";");
- line(2, "}");
- line(2, "public void set" + cap(field.getFieldName()) + "(" + dataType + " field) {");
- line(2, field.getFieldName() + " = field;");
- line(2, "}");
- }
-
- private String getDataType(String dbType, boolean isInner) {
- if (dbType.equalsIgnoreCase("uuid")) {
- return "UUID";
- } else if (dbType.equalsIgnoreCase("text") || dbType.equalsIgnoreCase("ascii") || dbType.equalsIgnoreCase("varchar")) {
- return "String";
- } else if (dbType.equalsIgnoreCase("timestamp")) {
- return "Date";
- } else if (dbType.startsWith("list")) {
- String innerType = dbType.substring(dbType.indexOf("<") + 1, dbType.indexOf(">"));
- return "List<" + getDataType(innerType, true) + ">";
- } else if (dbType.startsWith("set")) {
- String innerType = dbType.substring(dbType.indexOf("<") + 1, dbType.indexOf(">"));
- return "Set<" + getDataType(innerType, true) + ">";
- } else if (dbType.startsWith("map")) {
- String innerTypes = dbType.substring(dbType.indexOf("<") + 1, dbType.indexOf(">"));
- String[] types = innerTypes.split(",");
- return "Map<" + getDataType(types[0], true) + "," + getDataType(types[1], true) + ">";
- } else if (dbType.equalsIgnoreCase("blob")) {
- return "ByteBuffer";
- } else if (dbType.equalsIgnoreCase("int")) {
- if (isInner) {
- return "Integer";
- } else {
- return "int";
- }
- } else if (dbType.equalsIgnoreCase("float")) {
- if (isInner) {
- return "Float";
- } else {
- return "float";
- }
- } else if (dbType.equalsIgnoreCase("double")) {
- if (isInner) {
- return "Double";
- } else {
- return "double";
- }
- } else if (dbType.equalsIgnoreCase("decimal")) {
- return "BigDecimal";
- } else if (dbType.equalsIgnoreCase("bigint") || dbType.equalsIgnoreCase("counter")) {
- return "Long";
- } else if (dbType.equalsIgnoreCase("boolean")) {
- if (isInner) {
- return "Boolean";
- } else {
- return "boolean";
- }
- } else if (dbType.equalsIgnoreCase("varint")) {
- return "BigInteger";
- } else if (dbType.equalsIgnoreCase("inet")) {
- return "InetAddress";
- } else if (dbType.contains("frozen")) {
- throw new RuntimeException("Compiler Doesn't support user define types");
- }
- throw new RuntimeException("Invalid Cassandra DataType");
- }
-
- /**
- * Writes a line within the output stream
- *
- * @param indent Number of spaces used for indentation
- * @param text Text to be written
- * @throws IOException
- */
- private void line(int indent, String text) throws IOException {
- for (int i = 0; i < indent; i++) {
- out.append(" ");
- }
- out.append(text);
- out.append("\n");
- }
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/package-info.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/package-info.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/package-info.java
deleted file mode 100644
index 3ad9186..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/package-info.java
+++ /dev/null
@@ -1,21 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
- */
-
-/**
- * This package contains Casandra datastore related all classes.
- */
-package org.apache.gora.cassandra;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java
deleted file mode 100644
index e24822d..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraQuery.java
+++ /dev/null
@@ -1,108 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.gora.filter.Filter;
-import org.apache.gora.persistency.Persistent;
-import org.apache.gora.query.Query;
-import org.apache.gora.query.ws.impl.QueryWSBase;
-import org.apache.gora.store.DataStore;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Cassandra specific implementation of the {@link Query} interface.
- */
-public class CassandraQuery<K, T extends Persistent> extends QueryWSBase<K, T> {
-
- private Filter<K, T> filter;
-
- private boolean localFilterEnabled = true;
-
- private Map<String, Object> updateFields = new HashMap<>();
-
- public CassandraQuery(DataStore<K, T> dataStore) {
- super(dataStore);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Filter<K, T> getFilter() {
- return filter;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setFilter(Filter<K, T> filter) {
- this.filter = filter;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isLocalFilterEnabled() {
- return localFilterEnabled;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setLocalFilterEnabled(boolean enable) {
- localFilterEnabled = enable;
- }
-
- /**
- * This method adds Update field with the relevant Value
- *
- * @param field field Name
- * @param newValue New Value of the field
- */
- public void addUpdateField(String field, Object newValue) {
- updateFields.put(field, newValue);
- }
-
- /**
- * This method returns the updated field value of the particular field.
- *
- * @param key Field Name
- * @return Object value
- */
- public Object getUpdateFieldValue(String key) {
- return updateFields.get(key);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String[] getFields() {
- if (updateFields.size() == 0) {
- return super.getFields();
- } else {
- String[] updateFieldsArray = new String[updateFields.size()];
- return updateFields.keySet().toArray(updateFieldsArray);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/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
deleted file mode 100644
index 4e44d0d..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/CassandraResultSet.java
+++ /dev/null
@@ -1,121 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.gora.persistency.Persistent;
-import org.apache.gora.query.Query;
-import org.apache.gora.query.impl.ResultBase;
-import org.apache.gora.store.DataStore;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * CassandraResult specific implementation of the {@link org.apache.gora.query.Result}
- * interface.
- */
-public class CassandraResultSet<K, T extends Persistent> extends ResultBase<K, T> {
-
- private List<T> persistentObject = new ArrayList<T>();
-
- private List<K> persistentKey = new ArrayList<K>();
-
- private int size = 0;
-
- private int position = 0;
-
- /**
- * Constructor of the Cassandra Result
- * @param dataStore Cassandra Data Store
- * @param query Cassandra Query
- */
- public CassandraResultSet(DataStore<K, T> dataStore, Query<K, T> query) {
- super(dataStore, query);
- }
-
- /**
- * {@inheritDoc}
- *
- * @return
- * @throws IOException
- */
- @Override
- protected boolean nextInner() throws IOException {
- if (offset < size) {
- persistent = persistentObject.get(position);
- key = persistentKey.get(position);
- position++;
- return true;
- }
- return false;
- }
-
- /**
- * {@inheritDoc}
- *
- * @return
- * @throws IOException
- * @throws InterruptedException
- */
- @Override
- public float getProgress() throws IOException, InterruptedException {
- return ((float) position) / size;
- }
-
- /**
- * {@inheritDoc}
- *
- * @return
- */
- @Override
- public T get() {
- return super.get();
- }
-
- /**
- * {@inheritDoc}
- *
- * @return
- */
- @Override
- public K getKey() {
- return super.getKey();
- }
-
- /**
- * This method adds Result Element into result lists, So when user retrieves values from the Result these objects will be passed.
- *
- * @param key key
- * @param token persistent Object
- */
- public void addResultElement(K key, T token) {
- this.persistentKey.add(key);
- this.persistentObject.add(token);
- this.size++;
- }
-
- @Override
- /**
- * Returns whether the limit for the query is reached.
- * @return true if result limit is reached
- */
- protected boolean isLimitReached() {
- return (limit > 0 && offset >= limit) || (offset >= size);
- }
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/package-info.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/package-info.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/package-info.java
deleted file mode 100644
index 275c8d9..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/query/package-info.java
+++ /dev/null
@@ -1,22 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
- */
-
-/**
- * This package contains all the Cassandra store query representation class as well as Result set representing class
- * when query is executed over the Cassandra dataStore.
- */
-package org.apache.gora.cassandra.query;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroCassandraUtils.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroCassandraUtils.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroCassandraUtils.java
deleted file mode 100644
index 9c33bf6..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroCassandraUtils.java
+++ /dev/null
@@ -1,354 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.serializers;
-
-import org.apache.avro.Schema;
-import org.apache.avro.util.Utf8;
-import org.apache.gora.cassandra.bean.CassandraKey;
-import org.apache.gora.cassandra.bean.Field;
-import org.apache.gora.cassandra.store.CassandraMapping;
-import org.apache.gora.hbase.util.HBaseByteInterface;
-import org.apache.gora.persistency.Persistent;
-import org.apache.gora.persistency.impl.DirtyListWrapper;
-import org.apache.gora.persistency.impl.DirtyMapWrapper;
-import org.apache.gora.persistency.impl.PersistentBase;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.net.InetAddress;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-/**
- * This class is Utils class for Avro serialization.
- */
-class AvroCassandraUtils {
-
- /**
- * Default schema index with value "0" used when AVRO Union data types are stored.
- */
- private static final int DEFAULT_UNION_SCHEMA = 0;
-
- private static final Logger LOG = LoggerFactory.getLogger(AvroCassandraUtils.class);
-
- static void processKeys(CassandraMapping cassandraMapping, Object key, List<String> keys, List<Object> values) {
- CassandraKey cassandraKey = cassandraMapping.getCassandraKey();
- if (cassandraKey != null) {
- if (key instanceof PersistentBase) {
- PersistentBase keyBase = (PersistentBase) key;
- for (Schema.Field field : keyBase.getSchema().getFields()) {
- Field mappedField = cassandraKey.getFieldFromFieldName(field.name());
- if (mappedField != null) {
- keys.add(field.name());
- Object value = keyBase.get(field.pos());
- value = getFieldValueFromAvroBean(field.schema(), field.schema().getType(), value, mappedField);
- values.add(value);
- } else {
- LOG.debug("Ignoring field {}, Since field couldn't find in the {} mapping", new Object[]{field.name(), cassandraMapping.getPersistentClass()});
- }
- }
- } else {
- LOG.error("Key bean isn't extended by {} .", new Object[]{cassandraMapping.getKeyClass(), PersistentBase.class});
- }
- } else {
- keys.add(cassandraMapping.getInlinedDefinedPartitionKey().getFieldName());
- values.add(key);
- }
- }
-
- /**
- * For every field within an object, we pass in a field schema, Type and value.
- * This enables us to process fields (based on their characteristics)
- * preparing them for persistence.
- *
- * @param fieldSchema the associated field schema
- * @param type the field type
- * @param fieldValue the field value.
- * @return field value
- */
- static Object getFieldValueFromAvroBean(Schema fieldSchema, Schema.Type type, Object fieldValue, Field field) {
- switch (type) {
- // Record can be persist with two ways, udt and bytes
- case RECORD:
- if (field.getType().contains("blob")) {
- try {
- byte[] serializedBytes = HBaseByteInterface.toBytes(fieldValue, fieldSchema);
- fieldValue = ByteBuffer.wrap(serializedBytes);
- } catch (IOException e) {
- LOG.error("Error occurred when serializing {} field. {}", new Object[]{field.getFieldName(), e.getMessage()});
- }
- } else {
- throw new RuntimeException("Unsupported Data Type for Record, Currently Supported Data Types are blob and UDT for Records");
- }
- break;
- case MAP:
- Schema valueSchema = fieldSchema.getValueType();
- Schema.Type valuetype = valueSchema.getType();
- Map<String, Object> map = new HashMap<>();
- for (Map.Entry<CharSequence, ?> e : ((Map<CharSequence, ?>) fieldValue).entrySet()) {
- String mapKey = e.getKey().toString();
- Object mapValue = e.getValue();
- mapValue = getFieldValueFromAvroBean(valueSchema, valuetype, mapValue, field);
- map.put(mapKey, mapValue);
- }
- fieldValue = map;
- break;
- case ARRAY:
- valueSchema = fieldSchema.getElementType();
- valuetype = valueSchema.getType();
- ArrayList<Object> list = new ArrayList<>();
- for (Object item : (Collection<?>) fieldValue) {
- Object value = getFieldValueFromAvroBean(valueSchema, valuetype, item, field);
- list.add(value);
- }
- fieldValue = list;
- break;
- case UNION:
- // storing the union selected schema, the actual value will
- // be stored as soon as we get break out.
- if (fieldValue != null) {
- int schemaPos = getUnionSchema(fieldValue, fieldSchema);
- Schema unionSchema = fieldSchema.getTypes().get(schemaPos);
- Schema.Type unionType = unionSchema.getType();
- fieldValue = getFieldValueFromAvroBean(unionSchema, unionType, fieldValue, field);
- }
- break;
- case STRING:
- fieldValue = fieldValue.toString();
- break;
- default:
- break;
- }
- return fieldValue;
- }
-
- /**
- * Given an object and the object schema this function obtains,
- * from within the UNION schema, the position of the type used.
- * If no data type can be inferred then we return a default value
- * of position 0.
- *
- * @param pValue Object
- * @param pUnionSchema avro Schema
- * @return the unionSchemaPosition.
- */
- private static int getUnionSchema(Object pValue, Schema pUnionSchema) {
- int unionSchemaPos = 0;
-// String valueType = pValue.getClass().getSimpleName();
- for (Schema currentSchema : pUnionSchema.getTypes()) {
- Schema.Type schemaType = currentSchema.getType();
- if (pValue instanceof CharSequence && schemaType.equals(Schema.Type.STRING))
- return unionSchemaPos;
- else if (pValue instanceof ByteBuffer && schemaType.equals(Schema.Type.BYTES))
- return unionSchemaPos;
- else if (pValue instanceof Integer && schemaType.equals(Schema.Type.INT))
- return unionSchemaPos;
- else if (pValue instanceof Long && schemaType.equals(Schema.Type.LONG))
- return unionSchemaPos;
- else if (pValue instanceof Double && schemaType.equals(Schema.Type.DOUBLE))
- return unionSchemaPos;
- else if (pValue instanceof Float && schemaType.equals(Schema.Type.FLOAT))
- return unionSchemaPos;
- else if (pValue instanceof Boolean && schemaType.equals(Schema.Type.BOOLEAN))
- return unionSchemaPos;
- else if (pValue instanceof Map && schemaType.equals(Schema.Type.MAP))
- return unionSchemaPos;
- else if (pValue instanceof List && schemaType.equals(Schema.Type.ARRAY))
- return unionSchemaPos;
- else if (pValue instanceof Persistent && schemaType.equals(Schema.Type.RECORD))
- return unionSchemaPos;
- else if (pValue != null && ByteBuffer.class.isAssignableFrom(pValue.getClass()) && schemaType.equals(Schema.Type.STRING))
- return unionSchemaPos;
- else if (pValue != null && ByteBuffer.class.isAssignableFrom(pValue.getClass()) && schemaType.equals(Schema.Type.INT))
- return unionSchemaPos;
- else if (pValue != null && ByteBuffer.class.isAssignableFrom(pValue.getClass()) && schemaType.equals(Schema.Type.LONG))
- return unionSchemaPos;
- else if (pValue != null && ByteBuffer.class.isAssignableFrom(pValue.getClass()) && schemaType.equals(Schema.Type.DOUBLE))
- return unionSchemaPos;
- else if (pValue != null && ByteBuffer.class.isAssignableFrom(pValue.getClass()) && schemaType.equals(Schema.Type.FLOAT))
- return unionSchemaPos;
- else if (pValue != null && ByteBuffer.class.isAssignableFrom(pValue.getClass()) && schemaType.equals(Schema.Type.RECORD))
- return unionSchemaPos;
- unionSchemaPos++;
- }
- // if we weren't able to determine which data type it is, then we return the default
- return DEFAULT_UNION_SCHEMA;
- }
-
- static Object getAvroFieldValue(Object value, Schema schema) {
- Object result;
- switch (schema.getType()) {
-
- case MAP:
- Map<String, Object> rawMap = (Map<String, Object>) value;
- Map<Utf8, Object> utf8ObjectHashMap = new HashMap<>();
- if (rawMap == null) {
- result = new DirtyMapWrapper(utf8ObjectHashMap);
- break;
- }
- for (Map.Entry<?, ?> e : rawMap.entrySet()) {
- Schema innerSchema = schema.getValueType();
- Object obj = getAvroFieldValue(e.getValue(), innerSchema);
- if (e.getKey().getClass().getSimpleName().equalsIgnoreCase("Utf8")) {
- utf8ObjectHashMap.put((Utf8) e.getKey(), obj);
- } else {
- utf8ObjectHashMap.put(new Utf8((String) e.getKey()), obj);
- }
- }
- result = new DirtyMapWrapper<>(utf8ObjectHashMap);
- break;
-
- case ARRAY:
- List<Object> rawList = (List<Object>) value;
- List<Object> objectArrayList = new ArrayList<>();
- if (rawList == null) {
- return new DirtyListWrapper(objectArrayList);
- }
- for (Object item : rawList) {
- Object obj = getAvroFieldValue(item, schema.getElementType());
- objectArrayList.add(obj);
- }
- result = new DirtyListWrapper<>(objectArrayList);
- break;
-
- case RECORD:
- if (value != null && ByteBuffer.class.isAssignableFrom(value.getClass())) {
- ByteBuffer buffer = (ByteBuffer) value;
- byte[] arr = new byte[buffer.remaining()];
- buffer.get(arr);
- try {
- result = (PersistentBase) HBaseByteInterface.fromBytes(schema, arr);
- } catch (IOException e) {
- LOG.error("Error occurred while deserialize the Record. :" + e.getMessage());
- result = null;
- }
- } else {
- result = (PersistentBase) value;
- }
- break;
-
- case UNION:
- int index = getUnionSchema(value, schema);
- Schema resolvedSchema = schema.getTypes().get(index);
- result = getAvroFieldValue(value, resolvedSchema);
- break;
-
- case ENUM:
- result = org.apache.gora.util.AvroUtils.getEnumValue(schema, (String) value);
- break;
-
- case BYTES:
- if (ByteBuffer.class.isAssignableFrom(value.getClass())) {
- result = value;
- } else {
- result = ByteBuffer.wrap((byte[]) value);
- }
- break;
-
- case STRING:
- if (value instanceof org.apache.avro.util.Utf8) {
- result = value;
- } else if (ByteBuffer.class.isAssignableFrom(value.getClass())) {
- result = new Utf8(((ByteBuffer) value).array());
- } else {
- result = new Utf8((String) value);
- }
- break;
-
- case INT:
- if (ByteBuffer.class.isAssignableFrom(value.getClass())) {
- result = ((ByteBuffer) value).getInt();
- } else {
- result = value;
- }
- break;
-
- case FLOAT:
- if (ByteBuffer.class.isAssignableFrom(value.getClass())) {
- result = ((ByteBuffer) value).getFloat();
- } else {
- result = value;
- }
- break;
-
- case DOUBLE:
- if (ByteBuffer.class.isAssignableFrom(value.getClass())) {
- result = ((ByteBuffer) value).getDouble();
- } else {
- result = value;
- }
- break;
-
- case LONG:
- if (ByteBuffer.class.isAssignableFrom(value.getClass())) {
- result = ((ByteBuffer) value).getLong();
- } else {
- result = value;
- }
- break;
-
- default:
- result = value;
- }
- return result;
- }
-
- static Class getRelevantClassForCassandraDataType(String dataType) {
- switch (dataType) {
- case "ascii":
- case "text":
- case "varchar":
- return String.class;
- case "blob":
- return ByteBuffer.class;
- case "int":
- return Integer.class;
- case "double":
- return Double.class;
- case "bigint":
- case "counter":
- return Long.class;
- case "decimal":
- return BigDecimal.class;
- case "float":
- return Float.class;
- case "boolean":
- return Boolean.class;
- case "inet":
- return InetAddress.class;
- case "varint":
- return BigInteger.class;
- case "uuid":
- return UUID.class;
- case "timestamp":
- return Date.class;
- default:
- throw new RuntimeException("Invalid Cassandra DataType");
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/gora/blob/89683c74/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java
----------------------------------------------------------------------
diff --git a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java b/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java
deleted file mode 100644
index 204ae52..0000000
--- a/gora-cassandra-cql/src/main/java/org/apache/gora/cassandra/serializers/AvroSerializer.java
+++ /dev/null
@@ -1,446 +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.serializers;
-
-import com.datastax.driver.core.AbstractGettableData;
-import com.datastax.driver.core.ColumnDefinitions;
-import com.datastax.driver.core.ConsistencyLevel;
-import com.datastax.driver.core.DataType;
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.Row;
-import com.datastax.driver.core.SimpleStatement;
-import com.datastax.driver.core.UDTValue;
-import com.datastax.driver.core.UserType;
-import org.apache.avro.Schema;
-import org.apache.avro.specific.SpecificData;
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.gora.cassandra.bean.CassandraKey;
-import org.apache.gora.cassandra.bean.Field;
-import org.apache.gora.cassandra.query.CassandraResultSet;
-import org.apache.gora.cassandra.store.CassandraClient;
-import org.apache.gora.cassandra.store.CassandraMapping;
-import org.apache.gora.persistency.Persistent;
-import org.apache.gora.persistency.impl.PersistentBase;
-import org.apache.gora.query.Query;
-import org.apache.gora.query.Result;
-import org.apache.gora.store.DataStore;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This class contains the operations relates to Avro Serialization.
- */
-class AvroSerializer<K, T extends PersistentBase> extends CassandraSerializer {
-
-
- private static final Logger LOG = LoggerFactory.getLogger(AvroSerializer.class);
-
- private DataStore<K, T> cassandraDataStore;
-
- private Schema persistentSchema;
-
- AvroSerializer(CassandraClient cassandraClient, DataStore<K, T> dataStore, CassandraMapping mapping) {
- super(cassandraClient, dataStore.getKeyClass(), dataStore.getPersistentClass(), mapping);
- if (PersistentBase.class.isAssignableFrom(dataStore.getPersistentClass())) {
- persistentSchema = ((PersistentBase) dataStore.getBeanFactory().getCachedPersistent()).getSchema();
- } else {
- persistentSchema = null;
- }
- this.cassandraDataStore = dataStore;
- try {
- analyzePersistent();
- } catch (Exception e) {
- throw new RuntimeException("Error occurred while analyzing the persistent class, :" + e.getMessage());
- }
- }
-
- /**
- * {@inheritDoc}
- *
- * @throws Exception
- */
- protected void analyzePersistent() throws Exception {
- userDefineTypeMaps = new HashMap<>();
- for (Field field : mapping.getFieldList()) {
- String fieldType = field.getType();
- if (fieldType.contains("frozen")) {
- String udtType = fieldType.substring(fieldType.indexOf("<") + 1, fieldType.indexOf(">"));
- if (PersistentBase.class.isAssignableFrom(persistentClass)) {
- Schema fieldSchema = persistentSchema.getField(field.getFieldName()).schema();
- if (fieldSchema.getType().equals(Schema.Type.UNION)) {
- for (Schema currentSchema : fieldSchema.getTypes()) {
- if (currentSchema.getType().equals(Schema.Type.RECORD)) {
- fieldSchema = currentSchema;
- break;
- }
- }
- }
- String createQuery = CassandraQueryFactory.getCreateUDTTypeForAvro(mapping, udtType, fieldSchema);
- userDefineTypeMaps.put(udtType, createQuery);
- } else {
- throw new RuntimeException("Unsupported Class for User Define Types, Please use PersistentBase class. field : " + udtType);
- }
- }
- }
- }
-
- /**
- * {@inheritDoc}
- *
- * @param query
- * @return
- */
- @Override
- public boolean updateByQuery(Query query) {
- List<Object> objectArrayList = new ArrayList<>();
- String cqlQuery = CassandraQueryFactory.getUpdateByQueryForAvro(mapping, query, objectArrayList, persistentSchema);
- ResultSet results;
- SimpleStatement statement;
- if (objectArrayList.size() == 0) {
- statement = new SimpleStatement(cqlQuery);
- } else {
- statement = new SimpleStatement(cqlQuery, objectArrayList.toArray());
- }
- if (writeConsistencyLevel != null) {
- statement.setConsistencyLevel(ConsistencyLevel.valueOf(writeConsistencyLevel));
- }
- results = client.getSession().execute(statement);
- return results.wasApplied();
- }
-
- /**
- * {@inheritDoc}
- *
- * @param key
- * @param fields
- * @return
- */
- @Override
- public Persistent get(Object key, String[] fields) {
- if (fields == null) {
- fields = getFields();
- }
- ArrayList<String> cassandraKeys = new ArrayList<>();
- ArrayList<Object> cassandraValues = new ArrayList<>();
- AvroCassandraUtils.processKeys(mapping, key, cassandraKeys, cassandraValues);
- String cqlQuery = CassandraQueryFactory.getSelectObjectWithFieldsQuery(mapping, fields, cassandraKeys);
- SimpleStatement statement = new SimpleStatement(cqlQuery, cassandraValues.toArray());
- if (readConsistencyLevel != null) {
- statement.setConsistencyLevel(ConsistencyLevel.valueOf(readConsistencyLevel));
- }
- ResultSet resultSet = this.client.getSession().execute(statement);
- Iterator<Row> iterator = resultSet.iterator();
- ColumnDefinitions definitions = resultSet.getColumnDefinitions();
- T obj = null;
- if (iterator.hasNext()) {
- obj = cassandraDataStore.newPersistent();
- AbstractGettableData row = (AbstractGettableData) iterator.next();
- populateValuesToPersistent(row, definitions, obj, fields);
- }
- return obj;
- }
-
- /**
- * {@inheritDoc}
- *
- * @param key
- * @param persistent
- */
- @Override
- public void put(Object key, Persistent persistent) {
- if (persistent instanceof PersistentBase) {
- if (persistent.isDirty()) {
- PersistentBase persistentBase = (PersistentBase) persistent;
- ArrayList<String> fields = new ArrayList<>();
- ArrayList<Object> values = new ArrayList<>();
- AvroCassandraUtils.processKeys(mapping, key, fields, values);
- for (Schema.Field f : persistentBase.getSchema().getFields()) {
- String fieldName = f.name();
- Field field = mapping.getFieldFromFieldName(fieldName);
- if (field == null) {
- LOG.debug("Ignoring {} adding field, {} field can't find in {} mapping", new Object[]{fieldName, fieldName, persistentClass});
- continue;
- }
- if (persistent.isDirty(f.pos()) || mapping.getInlinedDefinedPartitionKey().equals(mapping.getFieldFromFieldName(fieldName))) {
- Object value = persistentBase.get(f.pos());
- String fieldType = field.getType();
- if (fieldType.contains("frozen")) {
- fieldType = fieldType.substring(fieldType.indexOf("<") + 1, fieldType.indexOf(">"));
- UserType userType = client.getSession().getCluster().getMetadata().getKeyspace(mapping.getKeySpace().getName()).getUserType(fieldType);
- UDTValue udtValue = userType.newValue();
- Schema udtSchema = f.schema();
- if (udtSchema.getType().equals(Schema.Type.UNION)) {
- for (Schema schema : udtSchema.getTypes()) {
- if (schema.getType().equals(Schema.Type.RECORD)) {
- udtSchema = schema;
- break;
- }
- }
- }
- PersistentBase udtObjectBase = (PersistentBase) value;
- for (Schema.Field udtField : udtSchema.getFields()) {
- Object udtFieldValue = AvroCassandraUtils.getFieldValueFromAvroBean(udtField.schema(), udtField.schema().getType(), udtObjectBase.get(udtField.name()), field);
- if (udtField.schema().getType().equals(Schema.Type.MAP)) {
- udtValue.setMap(udtField.name(), (Map) udtFieldValue);
- } else if (udtField.schema().getType().equals(Schema.Type.ARRAY)) {
- udtValue.setList(udtField.name(), (List) udtFieldValue);
- } else {
- udtValue.set(udtField.name(), udtFieldValue, (Class) udtFieldValue.getClass());
- }
- }
- value = udtValue;
- } else {
- value = AvroCassandraUtils.getFieldValueFromAvroBean(f.schema(), f.schema().getType(), value, field);
- }
- values.add(value);
- fields.add(fieldName);
- }
- }
- String cqlQuery = CassandraQueryFactory.getInsertDataQuery(mapping, fields);
- SimpleStatement statement = new SimpleStatement(cqlQuery, values.toArray());
- if (writeConsistencyLevel != null) {
- statement.setConsistencyLevel(ConsistencyLevel.valueOf(writeConsistencyLevel));
- }
- client.getSession().execute(statement);
- } else {
- LOG.info("Ignored putting persistent bean {} in the store as it is neither "
- + "new, neither dirty.", new Object[]{persistent});
- }
- } else {
- LOG.error("{} Persistent bean isn't extended by {} .", new Object[]{this.persistentClass, PersistentBase.class});
- }
- }
-
- /**
- * {@inheritDoc}
- *
- * @param key
- * @return
- */
- @Override
- public Persistent get(Object key) {
- ArrayList<String> cassandraKeys = new ArrayList<>();
- ArrayList<Object> cassandraValues = new ArrayList<>();
- AvroCassandraUtils.processKeys(mapping, key, cassandraKeys, cassandraValues);
- String cqlQuery = CassandraQueryFactory.getSelectObjectQuery(mapping, cassandraKeys);
- SimpleStatement statement = new SimpleStatement(cqlQuery, cassandraValues.toArray());
- if (readConsistencyLevel != null) {
- statement.setConsistencyLevel(ConsistencyLevel.valueOf(readConsistencyLevel));
- }
- ResultSet resultSet = client.getSession().execute(statement);
- Iterator<Row> iterator = resultSet.iterator();
- ColumnDefinitions definitions = resultSet.getColumnDefinitions();
- T obj = null;
- if (iterator.hasNext()) {
- obj = cassandraDataStore.newPersistent();
- AbstractGettableData row = (AbstractGettableData) iterator.next();
- populateValuesToPersistent(row, definitions, obj, mapping.getFieldNames());
- }
- return obj;
- }
-
- /**
- * This method wraps result set data in to DataEntry and creates a list of DataEntry.
- **/
- private void populateValuesToPersistent(AbstractGettableData row, ColumnDefinitions columnDefinitions, PersistentBase base, String[] fields) {
- Object paramValue;
- for (String fieldName : fields) {
- Schema.Field avroField = base.getSchema().getField(fieldName);
- Field field = mapping.getFieldFromFieldName(fieldName);
- //to ignore unspecified fields in the mapping
- if (field == null || avroField == null) {
- continue;
- }
- Schema fieldSchema = avroField.schema();
- String columnName = field.getColumnName();
- paramValue = getValue(row, columnDefinitions.getType(columnName), columnName, fieldSchema);
- Object value = AvroCassandraUtils.getAvroFieldValue(paramValue, fieldSchema);
- base.put(avroField.pos(), value);
- }
- }
-
- private Object getValue(AbstractGettableData row, DataType columnType, String columnName, Schema schema) {
- Object paramValue;
- String dataType;
- switch (columnType.getName()) {
- case ASCII:
- paramValue = row.getString(columnName);
- break;
- case BIGINT:
- paramValue = row.isNull(columnName) ? null : row.getLong(columnName);
- break;
- case BLOB:
- paramValue = row.isNull(columnName) ? null : row.getBytes(columnName);
- break;
- case BOOLEAN:
- paramValue = row.isNull(columnName) ? null : row.getBool(columnName);
- break;
- case COUNTER:
- paramValue = row.isNull(columnName) ? null : row.getLong(columnName);
- break;
- case DECIMAL:
- paramValue = row.isNull(columnName) ? null : row.getDecimal(columnName);
- break;
- case DOUBLE:
- paramValue = row.isNull(columnName) ? null : row.getDouble(columnName);
- break;
- case FLOAT:
- paramValue = row.isNull(columnName) ? null : row.getFloat(columnName);
- break;
- case INET:
- paramValue = row.isNull(columnName) ? null : row.getInet(columnName).toString();
- break;
- case INT:
- paramValue = row.isNull(columnName) ? null : row.getInt(columnName);
- break;
- case TEXT:
- paramValue = row.getString(columnName);
- break;
- case TIMESTAMP:
- paramValue = row.isNull(columnName) ? null : row.getDate(columnName);
- break;
- case UUID:
- paramValue = row.isNull(columnName) ? null : row.getUUID(columnName);
- break;
- case VARCHAR:
- paramValue = row.getString(columnName);
- break;
- case VARINT:
- paramValue = row.isNull(columnName) ? null : row.getVarint(columnName);
- break;
- case TIMEUUID:
- paramValue = row.isNull(columnName) ? null : row.getUUID(columnName);
- break;
- case LIST:
- dataType = columnType.getTypeArguments().get(0).toString();
- paramValue = row.isNull(columnName) ? null : row.getList(columnName, AvroCassandraUtils.getRelevantClassForCassandraDataType(dataType));
- break;
- case SET:
- dataType = columnType.getTypeArguments().get(0).toString();
- paramValue = row.isNull(columnName) ? null : row.getList(columnName, AvroCassandraUtils.getRelevantClassForCassandraDataType(dataType));
- break;
- case MAP:
- dataType = columnType.getTypeArguments().get(1).toString();
- // Avro supports only String for keys
- paramValue = row.isNull(columnName) ? null : row.getMap(columnName, String.class, AvroCassandraUtils.getRelevantClassForCassandraDataType(dataType));
- break;
- case UDT:
- paramValue = row.isNull(columnName) ? null : row.getUDTValue(columnName);
- if (paramValue != null) {
- try {
- PersistentBase udtObject = (PersistentBase) SpecificData.newInstance(Class.forName(schema.getFullName()), schema);
- for (Schema.Field f : udtObject.getSchema().getFields()) {
- DataType dType = ((UDTValue) paramValue).getType().getFieldType(f.name());
- Object fieldValue = getValue((UDTValue) paramValue, dType, f.name(), f.schema());
- udtObject.put(f.pos(), fieldValue);
- }
- paramValue = udtObject;
- } catch (ClassNotFoundException e) {
- throw new RuntimeException("Error occurred while populating data to " + schema.getFullName() + " : " + e.getMessage());
- }
- }
- break;
- case TUPLE:
- paramValue = row.isNull(columnName) ? null : row.getTupleValue(columnName).toString();
- break;
- case CUSTOM:
- paramValue = row.isNull(columnName) ? null : row.getBytes(columnName);
- break;
- default:
- paramValue = row.getString(columnName);
- break;
- }
- return paramValue;
- }
-
- /**
- * {@inheritDoc}
- *
- * @param key
- * @return
- */
- @Override
- public boolean delete(Object key) {
- ArrayList<String> cassandraKeys = new ArrayList<>();
- ArrayList<Object> cassandraValues = new ArrayList<>();
- AvroCassandraUtils.processKeys(mapping, key, cassandraKeys, cassandraValues);
- String cqlQuery = CassandraQueryFactory.getDeleteDataQuery(mapping, cassandraKeys);
- SimpleStatement statement = new SimpleStatement(cqlQuery, cassandraValues.toArray());
- if (writeConsistencyLevel != null) {
- statement.setConsistencyLevel(ConsistencyLevel.valueOf(writeConsistencyLevel));
- }
- ResultSet resultSet = client.getSession().execute(statement);
- return resultSet.wasApplied();
- }
-
- /**
- * {@inheritDoc}
- *
- * @param dataStore
- * @param query
- * @return
- */
- @Override
- public Result execute(DataStore dataStore, Query query) {
- List<Object> objectArrayList = new ArrayList<>();
- String[] fields = query.getFields();
- if (fields != null) {
- fields = (String[]) ArrayUtils.addAll(fields, mapping.getAllKeys());
- } else {
- fields = mapping.getAllFieldsIncludingKeys();
- }
- CassandraResultSet<K, T> cassandraResult = new CassandraResultSet<>(dataStore, query);
- String cqlQuery = CassandraQueryFactory.getExecuteQuery(mapping, query, objectArrayList, fields);
- ResultSet results;
- SimpleStatement statement;
- if (objectArrayList.size() == 0) {
- statement = new SimpleStatement(cqlQuery);
- } else {
- statement = new SimpleStatement(cqlQuery, objectArrayList.toArray());
- }
- if (readConsistencyLevel != null) {
- statement.setConsistencyLevel(ConsistencyLevel.valueOf(readConsistencyLevel));
- }
- results = client.getSession().execute(statement);
- Iterator<Row> iterator = results.iterator();
- ColumnDefinitions definitions = results.getColumnDefinitions();
- T obj;
- K keyObject;
- CassandraKey cassandraKey = mapping.getCassandraKey();
- while (iterator.hasNext()) {
- AbstractGettableData row = (AbstractGettableData) iterator.next();
- obj = cassandraDataStore.newPersistent();
- keyObject = cassandraDataStore.newKey();
- populateValuesToPersistent(row, definitions, obj, fields);
- if (cassandraKey != null) {
- populateValuesToPersistent(row, definitions, (PersistentBase) keyObject, cassandraKey.getFieldNames());
- } else {
- Field key = mapping.getInlinedDefinedPartitionKey();
- keyObject = (K) getValue(row, definitions.getType(key.getColumnName()), key.getColumnName(), null);
- }
- cassandraResult.addResultElement(keyObject, obj);
- }
- return cassandraResult;
- }
-
-}