package com.revolsys.record.io; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.regex.Pattern; import com.revolsys.io.AbstractIoFactoryWithCoordinateSystem; import com.revolsys.record.io.format.directory.DirectoryRecordStore; import com.revolsys.record.schema.RecordStore; import com.revolsys.spring.resource.Resource; public abstract class AbstractRecordIoFactory extends AbstractIoFactoryWithCoordinateSystem implements RecordReaderFactory, RecordStoreFactory { private final List<Pattern> urlPatterns = new ArrayList<>(); public AbstractRecordIoFactory(final String name) { super(name); } @Override protected void addFileExtensionInternal(final String fileExtension) { super.addFileExtensionInternal(fileExtension); this.urlPatterns.add(Pattern.compile("(.+)[\\?|&]format=" + fileExtension + "(&.+)?")); } @Override protected void addMediaTypeAndFileExtension(final String mediaType, final String fileExtension) { super.addMediaTypeAndFileExtension(mediaType, fileExtension); } @Override public List<String> getRecordStoreFileExtensions() { return Collections.emptyList(); } @Override public Class<? extends RecordStore> getRecordStoreInterfaceClass( final Map<String, ? extends Object> connectionProperties) { return RecordStore.class; } @Override public List<Pattern> getUrlPatterns() { return this.urlPatterns; } @Override public RecordStore newRecordStore(final Map<String, ? extends Object> connectionProperties) { final String url = (String)connectionProperties.get("url"); final Resource resource = Resource.getResource(url); final File directory = resource.getFile(); final List<String> fileExtensions = getFileExtensions(); return new DirectoryRecordStore(directory, fileExtensions); } }