类com.amazonaws.services.dynamodbv2.model.GlobalSecondaryIndexDescription源码实例Demo

下面列出了怎么用com.amazonaws.services.dynamodbv2.model.GlobalSecondaryIndexDescription的API类实例代码及写法,或者点击链接到github查看源代码。

private static boolean areGsisSameConfiguration(final List<GlobalSecondaryIndexDescription> g1,
        final List<GlobalSecondaryIndexDescription> g2) {
    if (g1 == null) {
        return g2 == null;
    }
    if (g1.size() != g2.size()) {
        return false;
    }
    // make copy of the lists because we don't want to mutate the lists
    final ArrayList<GlobalSecondaryIndexDescription> g1clone = new ArrayList<>(g1.size());
    g1clone.addAll(g1);
    final ArrayList<GlobalSecondaryIndexDescription> g2clone = new ArrayList<>(g2.size());
    g1clone.addAll(g2);

    for (final GlobalSecondaryIndexDescription gi1 : g1) {
        for (final GlobalSecondaryIndexDescription  gi2 : g2) {
            if (areGsisSameConfiguration(gi1, gi2)) {
                g1clone.remove(gi1);
                g2clone.remove(gi2);
                break;
            }
        }
    }
    return g1clone.isEmpty() || g2clone.isEmpty();
}
 
private static boolean areGsisSameConfiguration(final GlobalSecondaryIndexDescription g1, final GlobalSecondaryIndexDescription g2) {
    if (g1 == null ^ g2 == null) {
        return false;
    }
    if (g1 == g2) {
        return true;
    }
    final EqualsBuilder builder = new EqualsBuilder();
    builder.append(g1.getIndexName(), g2.getIndexName());
    builder.append(g1.getKeySchema(), g2.getKeySchema());
    builder.append(g1.getProjection().getProjectionType(), g2.getProjection().getProjectionType());
    builder.append(g1.getProvisionedThroughput().getReadCapacityUnits(), g2.getProvisionedThroughput().getReadCapacityUnits());
    builder.append(g1.getProvisionedThroughput().getWriteCapacityUnits(), g2.getProvisionedThroughput().getWriteCapacityUnits());

    final Set<String> projectionNonKeyAttributesG1 =
        new HashSet<>(Optional.ofNullable(g1.getProjection().getNonKeyAttributes()).orElse(Collections.emptyList()));
    final Set<String> projectionNonKeyAttributesG2 =
        new HashSet<>(Optional.ofNullable(g2.getProjection().getNonKeyAttributes()).orElse(Collections.emptyList()));
    builder.append(projectionNonKeyAttributesG1, projectionNonKeyAttributesG2);

    return builder.build();
}
 
源代码3 项目: billow   文件: DynamoTable.java
public DynamoTable(Table table) {
    table.describe();
    tableName = table.getTableName();
    attributeDefinitions = table.getDescription().getAttributeDefinitions().toString();
    tableStatus = table.getDescription().getTableStatus();
    keySchema = table.getDescription().getKeySchema().toString();
    creationDateTime = new DateTime(table.getDescription().getCreationDateTime());
    numberOfDecreasesToday = table.getDescription().getProvisionedThroughput().getNumberOfDecreasesToday();
    readCapacityUnits = table.getDescription().getProvisionedThroughput().getReadCapacityUnits();
    writeCapacityUnits = table.getDescription().getProvisionedThroughput().getWriteCapacityUnits();
    tableSizeBytes = table.getDescription().getTableSizeBytes();
    itemCount = table.getDescription().getItemCount();
    tableArn = table.getDescription().getTableArn();
    provisionedThroughput = table.getDescription().getProvisionedThroughput().toString();
    globalSecondaryIndexes = new ArrayList<>();

    if (table.getDescription().getGlobalSecondaryIndexes() != null) {
        for (GlobalSecondaryIndexDescription gsiDesc : table
            .getDescription()
            .getGlobalSecondaryIndexes()) {
            globalSecondaryIndexes.add(new DynamoGSI(gsiDesc));
        }
    }
}
 
源代码4 项目: billow   文件: DynamoTable.java
public DynamoGSI(GlobalSecondaryIndexDescription desc) {
    gsiName = desc.getIndexName();
    readCapacityUnits = desc.getProvisionedThroughput().getReadCapacityUnits();
    writeCapacityUnits = desc.getProvisionedThroughput().getWriteCapacityUnits();
    itemCount = desc.getItemCount();
    indexSizeBytes = desc.getIndexSizeBytes();
    indexStatus = desc.getIndexStatus();
    backfilling = desc.getBackfilling();
    indexArn = desc.getIndexArn();
}
 
public void waitForTableCreation(final String tableName, final boolean verifyIndexesList,
    final List<LocalSecondaryIndexDescription> expectedLsiList, final List<GlobalSecondaryIndexDescription> expectedGsiList) throws BackendException {
    boolean successFlag = false;
    int retryCount = 0;
    while (!successFlag && retryCount < maxRetries) {
        try {
            boolean areAllGsisActive = true;
            final TableDescription td = describeTable(tableName);
            if (verifyIndexesList) {
                final Set<LocalSecondaryIndexDescription> expectedLSIs = new HashSet<LocalSecondaryIndexDescription>();
                if (expectedLsiList != null) {
                    expectedLSIs.addAll(expectedLsiList);
                }
                final Set<LocalSecondaryIndexDescription> actualLSIs = new HashSet<LocalSecondaryIndexDescription>();
                if (td.getLocalSecondaryIndexes() != null) {
                    actualLSIs.addAll(td.getLocalSecondaryIndexes());
                }
                // the lsi list should be there even if the table is in creating state
                if (!(expectedLsiList == null && td.getLocalSecondaryIndexes() == null || expectedLSIs.equals(actualLSIs))) {
                    throw new PermanentBackendException("LSI list is not as expected during table creation. expectedLsiList="
                        + expectedLsiList.toString() + "; table description=" + td.toString());
                }

                // ignore the status of all GSIs since they will mess up .equals()
                if (td.getGlobalSecondaryIndexes() != null) {
                    for (final GlobalSecondaryIndexDescription gDesc : td.getGlobalSecondaryIndexes()) {
                        if (!isTableAcceptingWrites(gDesc.getIndexStatus())) {
                            areAllGsisActive = false;
                            break;
                        }
                    }
                }

                // the gsi list should be there even if the table is in creating state
                if (!areGsisSameConfiguration(expectedGsiList, td.getGlobalSecondaryIndexes())) {
                    throw new PermanentBackendException("GSI list is not as expected during table creation. expectedGsiList="
                        + expectedGsiList.toString() + "; table description=" + td.toString());
                }
            }
            successFlag = isTableAcceptingWrites(td.getTableStatus()) && areAllGsisActive;
        } catch (BackendNotFoundException ignore) {
            successFlag = false;
        }

        if (!successFlag) {
            interruptibleSleep(CONTROL_PLANE_RETRY_DELAY_MS);
        }
        retryCount++;
    }
    if (!successFlag) {
        throw new PermanentBackendException("Table creation not completed for table " + tableName + " after retrying "
                + this.maxRetries + " times for a duration of " + CONTROL_PLANE_RETRY_DELAY_MS * this.maxRetries + " ms");
    }
}
 
 类方法
 同包方法