public boolean deletePartitions()

in src/main/java/com/amazonaws/gdcreplication/util/GlueUtil.java [489:543]


	public boolean deletePartitions(AWSGlue glue, String catalogId, String databaseName, String tableName,
			List<Partition> partitionsToDelete) {

		boolean partitionsDeleted = false;

		BatchDeletePartitionRequest batchDeletePartitionRequest = new BatchDeletePartitionRequest();
		batchDeletePartitionRequest.setCatalogId(catalogId);
		batchDeletePartitionRequest.setDatabaseName(databaseName);
		batchDeletePartitionRequest.setTableName(tableName);

		// Prepare a List of PartitionValueList
		List<PartitionValueList> listOfPartitionValueList = new ArrayList<PartitionValueList>();

		// For each Partition, get its values, add create a PartitionValueList, and add
		// them to List of PartitionValueList
		for (Partition p : partitionsToDelete) {
			PartitionValueList pvList = new PartitionValueList();
			pvList.setValues(p.getValues());
			listOfPartitionValueList.add(pvList);
		}

		System.out.println("Size of List of PartitionValueList: " + listOfPartitionValueList.size());
		List<List<PartitionValueList>> listofSmallerLists = Lists.partition(listOfPartitionValueList, 25);
		for (List<PartitionValueList> smallerList : listofSmallerLists) {
			// Add List of PartitionValueList to BatchDeletePartitionRequest
			batchDeletePartitionRequest.setPartitionsToDelete(smallerList);
			try {
				BatchDeletePartitionResult batchDeletePartitionResult = glue
						.batchDeletePartition(batchDeletePartitionRequest);
				int statusCode = batchDeletePartitionResult.getSdkHttpMetadata().getHttpStatusCode();
				List<PartitionError> partErrors = batchDeletePartitionResult.getErrors();
				if (statusCode == 200 && partErrors.size() == 0) {
					System.out.printf("%d partitions from table '%s' of database '%s' were deleted. \n",
							smallerList.size(), tableName, databaseName);
					partitionsDeleted = true;
				} else {
					System.out.printf(
							"Not all partitions were deleted. Status Code: %d, Number of partition errors: %d \n",
							statusCode, partErrors.size());

					for (PartitionError pe : partErrors) {
						System.out.println("Partition Error Message: " + pe.getErrorDetail().getErrorMessage());
						List<String> pv = pe.getPartitionValues();
						for (String v : pv) {
							System.out.println("Partition value: " + v);
						}
					}
				}
			} catch (Exception e) {
				System.out.println("Exception in deleting partitions.");
				e.printStackTrace();
			}
		}
		return partitionsDeleted;
	}