in java/core/src/main/java/com/aliyun/openservices/tablestore/agent/util/TablestoreHelper.java [513:574]
public static <T> void batchDelete(SyncClient client, String tableName, Iterator<T> iterator) {
List<RowChange> rowChanges = new ArrayList<>();
while (iterator.hasNext()) {
T item = iterator.next();
if (item instanceof Session) {
Session session = (Session) item;
rowChanges.add(
new RowDeleteChange(
tableName,
PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn(Session.SESSION_USER_ID, PrimaryKeyValue.fromString(session.getUserId()))
.addPrimaryKeyColumn(Session.SESSION_SESSION_ID, PrimaryKeyValue.fromString(session.getSessionId()))
.build()
)
);
} else if (item instanceof Message) {
Message message = (Message) item;
rowChanges.add(
new RowDeleteChange(
tableName,
PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn(Message.MESSAGE_SESSION_ID, PrimaryKeyValue.fromString(message.getSessionId()))
.addPrimaryKeyColumn(Message.MESSAGE_CREATE_TIME, PrimaryKeyValue.fromLong(message.getCreateTime()))
.addPrimaryKeyColumn(Message.MESSAGE_MESSAGE_ID, PrimaryKeyValue.fromString(message.getMessageId()))
.build()
)
);
} else if (item instanceof Document) {
Document document = (Document) item;
rowChanges.add(
new RowDeleteChange(
tableName,
PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn(Document.DOCUMENT_DOCUMENT_ID, PrimaryKeyValue.fromString(document.getDocumentId()))
.addPrimaryKeyColumn(Document.DOCUMENT_TENANT_ID, PrimaryKeyValue.fromString(document.getTenantId()))
.build()
)
);
} else if (item instanceof DocumentHit) {
DocumentHit documentHit = (DocumentHit) item;
Document document = documentHit.getDocument();
rowChanges.add(
new RowDeleteChange(
tableName,
PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn(Document.DOCUMENT_DOCUMENT_ID, PrimaryKeyValue.fromString(document.getDocumentId()))
.addPrimaryKeyColumn(Document.DOCUMENT_TENANT_ID, PrimaryKeyValue.fromString(document.getTenantId()))
.build()
)
);
} else {
throw Exceptions.illegalArgument("unsupported item type:%s, detail:%s", item.getClass(), item);
}
if (rowChanges.size() == 200) {
batchWrite(client, rowChanges);
rowChanges.clear();
}
}
if (!rowChanges.isEmpty()) {
batchWrite(client, rowChanges);
}
}