Search in sources :

Example 11 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class JsonWriter method writeValueAsJson.

public static void writeValueAsJson(JsonGenerator generator, Object value, String pdxField) throws JsonGenerationException, IOException {
    if (value == null) {
        generator.writeNull();
    } else if (value.getClass().equals(Boolean.class)) {
        boolean b = (Boolean) value;
        generator.writeBoolean(b);
    } else if (value.getClass().equals(Byte.class)) {
        Byte b = (Byte) value;
        generator.writeNumber(b);
    } else if (value.getClass().equals(Short.class)) {
        Short b = (Short) value;
        generator.writeNumber(b);
    } else if (value.getClass().equals(Integer.class)) {
        int i = (Integer) value;
        generator.writeNumber(i);
    } else if (value.getClass().equals(Long.class)) {
        long i = (Long) value;
        generator.writeNumber(i);
    } else if (value.getClass().equals(BigInteger.class)) {
        BigInteger i = (BigInteger) value;
        generator.writeNumber(i);
    } else if (value.getClass().equals(Float.class)) {
        float i = (Float) value;
        generator.writeNumber(i);
    } else if (value.getClass().equals(BigDecimal.class)) {
        BigDecimal i = (BigDecimal) value;
        generator.writeNumber(i);
    } else if (value.getClass().equals(Double.class)) {
        double d = (Double) value;
        generator.writeNumber(d);
    } else if (value.getClass().equals(String.class)) {
        String s = (String) value;
        generator.writeString(s);
    } else if (value.getClass().isArray()) {
        writeArrayAsJson(generator, value, pdxField);
    } else if (value.getClass().equals(Link.class)) {
        writeLinkAsJson(generator, (Link) value, pdxField);
    // } else if (value.getClass().equals(Date.class)) {
    // generator.writeObject((Date) value);
    } else if (value.getClass().equals(EnumInfo.class)) {
        /*
       * try { generator.writeString(((EnumInfo)value).getEnum().name()); } catch
       * (ClassNotFoundException e) { throw new
       * IllegalStateException("PdxInstance returns unknwon pdxfield " + pdxField + " for type " +
       * value); }
       */
        generator.writeString(value.toString());
    } else if (value.getClass().equals(PdxInstanceEnumInfo.class)) {
        generator.writeString(value.toString());
    } else {
        if (value instanceof Struct) {
            writeStructAsJson(generator, (StructImpl) value);
        } else if (value instanceof PdxInstance) {
            writePdxInstanceAsJson(generator, (PdxInstance) value);
        } else if (value instanceof Collection) {
            writeCollectionAsJson(generator, (Collection<?>) value);
        } else if (value instanceof Map) {
            writeMapAsJson(generator, (Map) value, pdxField);
        } else {
            generator.writeObject(value);
        }
    }
}
Also used : PdxInstanceEnumInfo(org.apache.geode.pdx.internal.EnumInfo.PdxInstanceEnumInfo) EnumInfo(org.apache.geode.pdx.internal.EnumInfo) BigDecimal(java.math.BigDecimal) Struct(org.apache.geode.cache.query.Struct) BigInteger(java.math.BigInteger) PdxInstance(org.apache.geode.pdx.PdxInstance) BigInteger(java.math.BigInteger) Collection(java.util.Collection) Map(java.util.Map)

Example 12 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class ZRangeByScoreExecutor method getKeys.

private Collection<?> getKeys(ByteArrayWrapper key, Region<ByteArrayWrapper, DoubleWrapper> keyRegion, ExecutionHandlerContext context, double start, double stop, boolean startInclusive, boolean stopInclusive, int offset, int limit) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException {
    if (start == Double.POSITIVE_INFINITY || stop == Double.NEGATIVE_INFINITY || start > stop || (start == stop && (!startInclusive || !stopInclusive)))
        return null;
    if (start == Double.NEGATIVE_INFINITY && stop == Double.POSITIVE_INFINITY)
        return new HashSet(keyRegion.entrySet());
    Query query;
    Object[] params;
    if (isReverse()) {
        if (startInclusive) {
            if (stopInclusive) {
                query = getQuery(key, SortedSetQuery.ZREVRBSSTISI, context);
            } else {
                query = getQuery(key, SortedSetQuery.ZREVRBSSTI, context);
            }
        } else {
            if (stopInclusive) {
                query = getQuery(key, SortedSetQuery.ZREVRBSSI, context);
            } else {
                query = getQuery(key, SortedSetQuery.ZREVRBS, context);
            }
        }
        params = new Object[] { start, stop, INFINITY_LIMIT };
    } else {
        if (startInclusive) {
            if (stopInclusive) {
                query = getQuery(key, SortedSetQuery.ZRBSSTISI, context);
            } else {
                query = getQuery(key, SortedSetQuery.ZRBSSTI, context);
            }
        } else {
            if (stopInclusive) {
                query = getQuery(key, SortedSetQuery.ZRBSSI, context);
            } else {
                query = getQuery(key, SortedSetQuery.ZRBS, context);
            }
        }
        params = new Object[] { start, stop, INFINITY_LIMIT };
    }
    if (limit > 0)
        params[params.length - 1] = (limit + offset);
    SelectResults<?> results = (SelectResults<?>) query.execute(params);
    if (offset < results.size())
        return (Collection<Struct>) results.asList().subList(offset, results.size());
    else
        return null;
}
Also used : SelectResults(org.apache.geode.cache.query.SelectResults) Query(org.apache.geode.cache.query.Query) SortedSetQuery(org.apache.geode.redis.internal.executor.SortedSetQuery) HashSet(java.util.HashSet) Struct(org.apache.geode.cache.query.Struct)

Example 13 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class ZRemRangeByRankExecutor method executeCommand.

@Override
public void executeCommand(Command command, ExecutionHandlerContext context) {
    List<byte[]> commandElems = command.getProcessedCommand();
    if (commandElems.size() < 4) {
        command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ArityDef.ZREMRANGEBYRANK));
        return;
    }
    ByteArrayWrapper key = command.getKey();
    checkDataType(key, RedisDataType.REDIS_SORTEDSET, context);
    Region<ByteArrayWrapper, DoubleWrapper> keyRegion = getRegion(context, key);
    if (keyRegion == null) {
        command.setResponse(Coder.getIntegerResponse(context.getByteBufAllocator(), NONE_REMOVED));
        return;
    }
    int startRank;
    int stopRank;
    try {
        startRank = Coder.bytesToInt(commandElems.get(2));
        stopRank = Coder.bytesToInt(commandElems.get(3));
    } catch (NumberFormatException e) {
        command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ERROR_NOT_NUMERIC));
        return;
    }
    int sSetSize = keyRegion.size();
    startRank = getBoundedStartIndex(startRank, sSetSize);
    stopRank = getBoundedEndIndex(stopRank, sSetSize);
    if (stopRank > sSetSize - 1)
        stopRank = sSetSize - 1;
    if (startRank > stopRank) {
        command.setResponse(Coder.getIntegerResponse(context.getByteBufAllocator(), 0));
        return;
    }
    int numRemoved = 0;
    List<?> removeList = null;
    try {
        if (startRank == 0 && stopRank == sSetSize - 1) {
            numRemoved = keyRegion.size();
            context.getRegionProvider().removeKey(key);
        } else {
            removeList = getRemoveKeys(context, key, startRank, stopRank);
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    if (removeList != null) {
        for (Object entry : removeList) {
            ByteArrayWrapper removeKey;
            if (entry instanceof Entry)
                removeKey = (ByteArrayWrapper) ((Entry<?, ?>) entry).getKey();
            else
                removeKey = (ByteArrayWrapper) ((Struct) entry).getFieldValues()[0];
            Object oldVal = keyRegion.remove(removeKey);
            if (oldVal != null)
                numRemoved++;
        }
        if (keyRegion.isEmpty())
            context.getRegionProvider().removeKey(key);
    }
    command.setResponse(Coder.getIntegerResponse(context.getByteBufAllocator(), numRemoved));
}
Also used : Entry(org.apache.geode.cache.Region.Entry) ByteArrayWrapper(org.apache.geode.redis.internal.ByteArrayWrapper) DoubleWrapper(org.apache.geode.redis.internal.DoubleWrapper) Struct(org.apache.geode.cache.query.Struct)

Example 14 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class LRangeExecutor method executeCommand.

@Override
public void executeCommand(Command command, ExecutionHandlerContext context) {
    List<byte[]> commandElems = command.getProcessedCommand();
    if (commandElems.size() < 4) {
        command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ArityDef.LRANGE));
        return;
    }
    ByteArrayWrapper key = command.getKey();
    byte[] startArray = commandElems.get(2);
    byte[] stopArray = commandElems.get(3);
    int redisStart;
    int redisStop;
    checkDataType(key, RedisDataType.REDIS_LIST, context);
    Region<Integer, ByteArrayWrapper> keyRegion = getRegion(context, key);
    if (keyRegion == null) {
        command.setResponse(Coder.getEmptyArrayResponse(context.getByteBufAllocator()));
        return;
    }
    int listSize = keyRegion.size() - LIST_EMPTY_SIZE;
    if (listSize == 0) {
        command.setResponse(Coder.getEmptyArrayResponse(context.getByteBufAllocator()));
        return;
    }
    try {
        redisStart = Coder.bytesToInt(startArray);
        redisStop = Coder.bytesToInt(stopArray);
    } catch (NumberFormatException e) {
        command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ERROR_NOT_NUMERIC));
        return;
    }
    redisStart = getBoundedStartIndex(redisStart, listSize);
    redisStop = getBoundedEndIndex(redisStop, listSize);
    if (redisStart > redisStop) {
        command.setResponse(Coder.getEmptyArrayResponse(context.getByteBufAllocator()));
        return;
    }
    redisStart = Math.min(redisStart, listSize - 1);
    redisStop = Math.min(redisStop, listSize - 1);
    List<Struct> range;
    try {
        range = getRange(context, key, redisStart, redisStop, keyRegion);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    if (range == null)
        command.setResponse(Coder.getEmptyArrayResponse(context.getByteBufAllocator()));
    else
        command.setResponse(Coder.getBulkStringArrayResponseOfValues(context.getByteBufAllocator(), range));
}
Also used : ByteArrayWrapper(org.apache.geode.redis.internal.ByteArrayWrapper) Struct(org.apache.geode.cache.query.Struct)

Example 15 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class LRemExecutor method getRemoveList.

private List<Struct> getRemoveList(ExecutionHandlerContext context, ByteArrayWrapper key, ByteArrayWrapper value, int count) throws Exception {
    Object[] params;
    Query query;
    if (count > 0) {
        query = getQuery(key, ListQuery.LREMG, context);
        params = new Object[] { value, Integer.valueOf(count) };
    } else if (count < 0) {
        query = getQuery(key, ListQuery.LREML, context);
        params = new Object[] { value, Integer.valueOf(-count) };
    } else {
        query = getQuery(key, ListQuery.LREME, context);
        params = new Object[] { value };
    }
    SelectResults<Struct> results = (SelectResults<Struct>) query.execute(params);
    if (results == null || results.isEmpty()) {
        return null;
    }
    return results.asList();
}
Also used : SelectResults(org.apache.geode.cache.query.SelectResults) Query(org.apache.geode.cache.query.Query) ListQuery(org.apache.geode.redis.internal.executor.ListQuery) Struct(org.apache.geode.cache.query.Struct)

Aggregations

Struct (org.apache.geode.cache.query.Struct)115 SelectResults (org.apache.geode.cache.query.SelectResults)81 QueryService (org.apache.geode.cache.query.QueryService)70 Test (org.junit.Test)68 Region (org.apache.geode.cache.Region)67 Query (org.apache.geode.cache.query.Query)57 Iterator (java.util.Iterator)54 Portfolio (org.apache.geode.cache.query.data.Portfolio)46 DefaultQuery (org.apache.geode.cache.query.internal.DefaultQuery)30 ObjectType (org.apache.geode.cache.query.types.ObjectType)30 CompiledSelect (org.apache.geode.cache.query.internal.CompiledSelect)27 StructType (org.apache.geode.cache.query.types.StructType)26 HashSet (java.util.HashSet)19 List (java.util.List)17 PortfolioPdx (org.apache.geode.cache.query.data.PortfolioPdx)17 CacheException (org.apache.geode.cache.CacheException)16 IntegrationTest (org.apache.geode.test.junit.categories.IntegrationTest)16 ArrayList (java.util.ArrayList)15 Host (org.apache.geode.test.dunit.Host)14 VM (org.apache.geode.test.dunit.VM)14