Example usage for org.apache.cassandra.utils FBUtilities timestampMicros

List of usage examples for org.apache.cassandra.utils FBUtilities timestampMicros

Introduction

In this page you can find the example usage for org.apache.cassandra.utils FBUtilities timestampMicros.

Prototype

public static long timestampMicros() 

Source Link

Usage

From source file:com.perpetumobile.bit.orm.cassandra.CliMain.java

License:Apache License

private void executeDelete(Tree statement)
        throws TException, InvalidRequestException, UnavailableException, TimedOutException {
    if (!CliMain.isConnected() || !hasKeySpace())
        return;/*from www . j av  a  2s.  c  om*/

    Tree columnFamilySpec = statement.getChild(0);

    String columnFamily = CliCompiler.getColumnFamily(columnFamilySpec, currentCfDefs());
    CfDef cfDef = getCfDef(columnFamily);

    ByteBuffer key = getKeyAsBytes(columnFamily, columnFamilySpec.getChild(1));
    int columnSpecCnt = CliCompiler.numColumnSpecifiers(columnFamilySpec);

    byte[] superColumnName = null;
    byte[] columnName = null;
    boolean isSuper = cfDef.column_type.equals("Super");

    if ((columnSpecCnt < 0) || (columnSpecCnt > 2)) {
        sessionState.out.println("Invalid row, super column, or column specification.");
        return;
    }

    long startTime = System.nanoTime();

    Tree columnTree = (columnSpecCnt >= 1) ? columnFamilySpec.getChild(2) : null;

    Tree subColumnTree = (columnSpecCnt == 2) ? columnFamilySpec.getChild(3) : null;

    if (columnSpecCnt == 1) {
        assert columnTree != null;

        byte[] columnNameBytes = (columnTree.getType() == CliParser.FUNCTION_CALL)
                ? convertValueByFunction(columnTree, null, null).array()
                : columnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 0), cfDef);

        if (isSuper)
            superColumnName = columnNameBytes;
        else
            columnName = columnNameBytes;
    } else if (columnSpecCnt == 2) {
        assert columnTree != null;
        assert subColumnTree != null;

        // table.cf['key']['column']['column']
        superColumnName = (columnTree.getType() == CliParser.FUNCTION_CALL)
                ? convertValueByFunction(columnTree, null, null).array()
                : columnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 0), cfDef);

        columnName = (subColumnTree.getType() == CliParser.FUNCTION_CALL)
                ? convertValueByFunction(subColumnTree, null, null).array()
                : subColumnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 1), cfDef);
    }

    ColumnPath path = new ColumnPath(columnFamily);
    if (superColumnName != null)
        path.setSuper_column(superColumnName);

    if (columnName != null)
        path.setColumn(columnName);

    if (isCounterCF(cfDef)) {
        thriftClient.remove_counter(key, path, consistencyLevel);
    } else {
        thriftClient.remove(key, path, FBUtilities.timestampMicros(), consistencyLevel);
    }
    sessionState.out.println(String.format("%s removed.", (columnSpecCnt == 0) ? "row" : "cell"));
    elapsedTime(startTime);
}

From source file:com.perpetumobile.bit.orm.cassandra.CliMain.java

License:Apache License

private void executeSet(Tree statement) throws TException, InvalidRequestException, UnavailableException,
        TimedOutException, NoSuchFieldException, InstantiationException, IllegalAccessException {
    if (!CliMain.isConnected() || !hasKeySpace())
        return;/*from   w  ww. j ava 2 s  .c o m*/

    long startTime = System.nanoTime();
    // ^(NODE_COLUMN_ACCESS <cf> <key> <column>)
    Tree columnFamilySpec = statement.getChild(0);
    Tree keyTree = columnFamilySpec.getChild(1); // could be a function or regular text

    String columnFamily = CliCompiler.getColumnFamily(columnFamilySpec, currentCfDefs());
    CfDef cfDef = getCfDef(columnFamily);
    int columnSpecCnt = CliCompiler.numColumnSpecifiers(columnFamilySpec);
    String value = CliUtils.unescapeSQLString(statement.getChild(1).getText());
    Tree valueTree = statement.getChild(1);

    byte[] superColumnName = null;
    ByteBuffer columnName;

    // table.cf['key']
    if (columnSpecCnt == 0) {
        sessionState.err.println("No cell name specified, (type 'help;' or '?' for help on syntax).");
        return;
    }
    // table.cf['key']['column'] = 'value'
    else if (columnSpecCnt == 1) {
        // get the column name
        if (cfDef.column_type.equals("Super")) {
            sessionState.out.println("Column family " + columnFamily + " may only contain SuperColumns");
            return;
        }
        columnName = getColumnName(columnFamily, columnFamilySpec.getChild(2));
    }
    // table.cf['key']['super_column']['column'] = 'value'
    else {
        assert (columnSpecCnt == 2) : "serious parsing error (this is a bug).";

        superColumnName = getColumnName(columnFamily, columnFamilySpec.getChild(2)).array();
        columnName = getSubColumnName(columnFamily, columnFamilySpec.getChild(3));
    }

    ByteBuffer columnValueInBytes;

    switch (valueTree.getType()) {
    case CliParser.FUNCTION_CALL:
        columnValueInBytes = convertValueByFunction(valueTree, cfDef, columnName, true);
        break;
    default:
        columnValueInBytes = columnValueAsBytes(columnName, columnFamily, value);
    }

    ColumnParent parent = new ColumnParent(columnFamily);
    if (superColumnName != null)
        parent.setSuper_column(superColumnName);

    Column columnToInsert = new Column(columnName).setValue(columnValueInBytes)
            .setTimestamp(FBUtilities.timestampMicros());

    // children count = 3 mean that we have ttl in arguments
    if (statement.getChildCount() == 3) {
        String ttl = statement.getChild(2).getText();

        try {
            columnToInsert.setTtl(Integer.parseInt(ttl));
        } catch (NumberFormatException e) {
            sessionState.err.println(String.format("TTL '%s' is invalid, should be a positive integer.", ttl));
            return;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    // do the insert
    thriftClient.insert(getKeyAsBytes(columnFamily, keyTree), parent, columnToInsert, consistencyLevel);
    sessionState.out.println("Value inserted.");
    elapsedTime(startTime);
}