class AbstractDRResourceProvider extends AbstractResourceProvider {

  public static ResourceProvider getResourceProvider(Resource.Type type,
                                                     IvoryService service) {
    switch (type.getInternalType()) {
      case DRFeed:
        return new FeedResourceProvider(service);
      case DRTargetCluster:
        return new TargetClusterResourceProvider(service);
      case DRInstance:
        return new InstanceResourceProvider(service);
      default:
        throw new IllegalArgumentException("Unknown type " + type);
    }
  }

  protected  AbstractDRResourceProvider(Set<String> propertyIds,
                                       Map<Resource.Type, String> keyPropertyIds,
                                       IvoryService ivoryService);

}