public List deleteTableVersions()

in src/main/java/software/aws/glue/tableversions/utils/GlueUtil.java [195:243]


	public List<TableVersionStatus> deleteTableVersions(AWSGlue glueClient, List<Integer> listofVersionsToDelete,
			String tableName, String databaseName) {

		// This code deletes 100 versions at a time. So, it breaks the input list into
		// smaller
		// Lists of size 100.
		List<TableVersionStatus> versionsNotDeleted = new ArrayList<TableVersionStatus>();
		List<List<Integer>> listofSmallerLists = Lists.partition(listofVersionsToDelete, 100);

		for (List<Integer> smallerList : listofSmallerLists) {
			List<String> versionIdSmallerList = new ArrayList<String>();
			for (Integer versionId : smallerList) {
				versionIdSmallerList.add(Integer.toString(versionId));
			}
			// Batch Delete Table versions 100 items at a time.
			if (versionIdSmallerList.size() >= 1) {

				// BatchDeleteTableVersionRequest
				BatchDeleteTableVersionRequest batchDeleteTableVersionRequest = new BatchDeleteTableVersionRequest();
				batchDeleteTableVersionRequest.setDatabaseName(databaseName);
				batchDeleteTableVersionRequest.setTableName(tableName);
				batchDeleteTableVersionRequest.setVersionIds(versionIdSmallerList);

				// execute batchDelete operation
				BatchDeleteTableVersionResult batchDeleteTableVersionResult = glueClient
						.batchDeleteTableVersion(batchDeleteTableVersionRequest);

				// Check the result and re-process rejected records
				batchDeleteTableVersionResult.getSdkHttpMetadata().getHttpStatusCode();
				if (batchDeleteTableVersionResult.getErrors().isEmpty()) {
					System.out.printf(
							"Up to 100 table versions deleted successfully for table '%s' under database '%s' \n",
							tableName, databaseName);
				} else {
					List<TableVersionError> tableVersionErrors = batchDeleteTableVersionResult.getErrors();
					for (TableVersionError tvError : tableVersionErrors) {
						TableVersionStatus tvStatus = new TableVersionStatus();
						tvStatus.setDatabaseName(databaseName);
						tvStatus.setDeleted(false);
						tvStatus.setTableName(tvError.getTableName());
						tvStatus.setVersionId(tvError.getVersionId());
						versionsNotDeleted.add(tvStatus);
					}
				}
			}
			versionIdSmallerList.clear();
		}
		return versionsNotDeleted;
	}