[ 
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)

Reply via email to