public List getPartitionEvents()

in xtable-core/src/main/java/org/apache/xtable/hudi/catalog/HudiCatalogPartitionSyncTool.java [419:449]


  public List<CatalogPartitionEvent> getPartitionEvents(
      HoodieTableMetaClient metaClient,
      List<CatalogPartition> partitionsInCatalog,
      List<String> writtenPartitionsOnStorage,
      Set<String> droppedPartitionsOnStorage) {
    Map<String, String> paths = getPartitionValuesToPathMapping(partitionsInCatalog);

    List<CatalogPartitionEvent> events = new ArrayList<>();
    for (String storagePartition : writtenPartitionsOnStorage) {
      Path storagePartitionPath =
          FSUtils.getPartitionPath(metaClient.getBasePathV2(), storagePartition);
      String fullStoragePartitionPath =
          Path.getPathWithoutSchemeAndAuthority(storagePartitionPath).toUri().getPath();
      List<String> storagePartitionValues =
          partitionValuesExtractor.extractPartitionValuesInPath(storagePartition);

      if (droppedPartitionsOnStorage.contains(storagePartition)) {
        events.add(CatalogPartitionEvent.newPartitionDropEvent(storagePartition));
      } else {
        if (!storagePartitionValues.isEmpty()) {
          String storageValue = String.join(", ", storagePartitionValues);
          if (!paths.containsKey(storageValue)) {
            events.add(CatalogPartitionEvent.newPartitionAddEvent(storagePartition));
          } else if (!paths.get(storageValue).equals(fullStoragePartitionPath)) {
            events.add(CatalogPartitionEvent.newPartitionUpdateEvent(storagePartition));
          }
        }
      }
    }
    return events;
  }