package com.revolsys.record.io;
import java.nio.file.Path;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import com.revolsys.io.IoFactory;
import com.revolsys.io.file.Paths;
import com.revolsys.record.schema.RecordStore;
public interface RecordStoreFactory extends IoFactory {
default boolean canOpenPath(final Path path) {
if (isAvailable()) {
final String fileNameExtension = Paths.getFileNameExtension(path);
return getRecordStoreFileExtensions().contains(fileNameExtension);
} else {
return false;
}
}
default boolean canOpenUrl(final String url) {
if (isAvailable()) {
for (final Pattern pattern : getUrlPatterns()) {
if (pattern.matcher(url).matches()) {
return true;
}
}
}
return false;
}
default List<String> getRecordStoreFileExtensions() {
return Collections.emptyList();
}
Class<? extends RecordStore> getRecordStoreInterfaceClass(
Map<String, ? extends Object> connectionProperties);
List<Pattern> getUrlPatterns();
RecordStore newRecordStore(Map<String, ? extends Object> connectionProperties);
default Map<String, Object> parseUrl(final String url) {
return Collections.emptyMap();
}
default String toUrl(final Map<String, Object> urlParameters) {
return null;
}
}