[
https://issues.apache.org/jira/browse/GORA-698?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17599999#comment-17599999
]
ASF GitHub Bot commented on GORA-698:
-------------------------------------
kamaci commented on code in PR #273:
URL: https://github.com/apache/gora/pull/273#discussion_r962204734
##########
gora-geode/src/main/java/org/apache/gora/geode/store/GeodeStore.java:
##########
@@ -0,0 +1,190 @@
+package org.apache.gora.geode.store;
+
+import org.apache.geode.cache.*;
+import org.apache.geode.cache.client.ClientCache;
+import org.apache.geode.cache.client.ClientCacheFactory;
+import org.apache.gora.geode.query.GeodeQuery;
+import org.apache.gora.geode.query.GeodeResult;
+import org.apache.gora.persistency.impl.PersistentBase;
+import org.apache.gora.query.PartitionQuery;
+import org.apache.gora.query.Query;
+import org.apache.gora.query.Result;
+import org.apache.gora.query.impl.PartitionQueryImpl;
+import org.apache.gora.store.impl.DataStoreBase;
+import org.apache.gora.util.GoraException;
+
+import java.io.IOException;
+import java.util.*;
+import java.util.concurrent.ConcurrentSkipListSet;
+
+import static org.apache.geode.cache.RegionShortcut.REPLICATE;
+import static org.apache.gora.geode.store.GeodeStoreParameters.*;
+
+
+public class GeodeStore<K, T extends PersistentBase> extends DataStoreBase<K,
T> {
+
+ private ClientCache clientCache;
+ private Region<K, T> region;
+ private Properties geodeProperties;
+
+
+ private CacheFactory cacheFactory;
+
+ @Override
+ public void initialize(Class<K> keyClass, Class<T> persistentClass,
Properties properties) throws GoraException {
+ super.initialize(keyClass, persistentClass, properties);
+ String geodeHostName = (String) properties.get(GEODE_SERVER_HOST);
+ int portNumber = Integer.parseInt((String)
properties.get(GEODE_SERVER_PORT));
+ clientCache = new ClientCacheFactory().addPoolLocator(geodeHostName,
portNumber).create();
+ String userName = properties.getProperty(GEODE_USERNAME);
+ String password = properties.getProperty(GEODE_PASSWORD);
+ geodeProperties = properties;
+
+ Properties clientProperties =
clientCache.getDistributedSystem().getProperties();
+ if (userName != null) {
+ clientProperties.setProperty("security-username", userName);
+ clientProperties.setProperty("security-password", password);
+ }
+ cacheFactory = new CacheFactory(clientProperties);
+ }
+
+ @Override
+ /*
+ Schema Name can be assigned via Property file using
@PREFERRED_SCHEMA_NAME, or else PersistentClass name is used as the default
schema name.
+ */
+ public String getSchemaName() {
+ String preferredSchemaName =
properties.getProperty(PREFERRED_SCHEMA_NAME);
+ if (preferredSchemaName == null) {
+ return persistentClass.getSimpleName();
+ }
+ return preferredSchemaName;
+ }
+
+ @Override
+ public void createSchema() throws GoraException {
+ try {
+ Cache cache = cacheFactory.create();
+ String regionShortCut =
geodeProperties.getProperty(GEODE_REGION_SHORTCUT);
+ RegionFactory<K,T> regionFactory;
+ if (regionShortCut != null) {
+ regionFactory =
cache.createRegionFactory(RegionShortcut.valueOf(regionShortCut));
+ } else {
+ regionFactory = cache.createRegionFactory(REPLICATE);
+ }
+ region = regionFactory.create(getSchemaName());
+ } catch (Exception e) {
+ throw new GoraException(e);
+ }
+ }
+
+ @Override
+ public void deleteSchema() {
+ region.destroyRegion();
+ }
+
+ @Override
+ public boolean schemaExists() {
+ Properties properties =
clientCache.getDistributedSystem().getProperties();
+ CacheFactory factory = new CacheFactory(properties);
+ Cache cache = factory.create();
+ Region<K, T> rf = cache.getRegion(getSchemaName());
+ return rf != null;
+ }
+
+ @Override
+ public boolean exists(K key) {
+ for (K existingKey : region.getInterestList()) {
+ if (existingKey.equals(key)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public T get(K key, String[] fields) {
+ return region.get(key);
+ }
+
+ @Override
+ public void put(K key, T obj) {
+ region.put(key, obj);
+ }
+
+ @Override
+ public boolean delete(K key) {
+ region.destroy(key);
+ return true;
+ }
+
+ @Override
+ public long deleteByQuery(Query<K, T> query) throws GoraException {
+ try {
+ long deletedRows = 0;
+ Result<K, T> result = query.execute();
+ while (result.next()) {
+ if (delete(result.getKey())) {
+ deletedRows++;
+ }
+ }
+ LOG.info("Geode datastore deleted {} rows from Persistent
datastore.", deletedRows);
+ return deletedRows;
+ } catch (Exception e) {
+ throw new GoraException(e);
+ }
+ }
+
+ @Override
+ public Result<K, T> execute(Query<K, T> query) {
+
Review Comment:
remove extra space
> Add GEODE Support
> -----------------
>
> Key: GORA-698
> URL: https://issues.apache.org/jira/browse/GORA-698
> Project: Apache Gora
> Issue Type: New Feature
> Reporter: Himanshu
> Priority: Major
>
> [1]https://geode.apache.org/
--
This message was sent by Atlassian Jira
(v8.20.10#820010)