package com.revolsys.record.io.format.json;
import java.util.HashMap;
import java.util.Map;
import com.revolsys.io.map.MapObjectFactory;
import com.revolsys.properties.BaseObjectWithProperties;
import com.revolsys.record.schema.RecordDefinition;
import com.revolsys.record.schema.RecordDefinitionFactory;
import com.revolsys.spring.resource.ClassPathResource;
import com.revolsys.spring.resource.Resource;
public class JsonResourceRecordDefinitionFactory extends BaseObjectWithProperties
implements RecordDefinitionFactory {
private final Map<String, RecordDefinition> recordDefinitionMap = new HashMap<>();
public JsonResourceRecordDefinitionFactory(final Resource resource, final String... fileNames) {
// for (final Resource childResource : resource.getChildren((fileName) -> {
// return fileName.endsWith(".json");
// })) {
// final RecordDefinition recordDefinition = MapObjectFactory.toObject(childResource);
// final String name = recordDefinition.getPath();
// this.recordDefinitionMap.put(name, recordDefinition);
// }
for (final String fileName : fileNames) {
final Resource childResource = resource.createRelative(fileName);
final RecordDefinition recordDefinition = MapObjectFactory.toObject(childResource);
final String name = recordDefinition.getPath();
this.recordDefinitionMap.put(name, recordDefinition);
}
}
public JsonResourceRecordDefinitionFactory(final String locationPattern,
final String... fileNames) {
this(new ClassPathResource(locationPattern), fileNames);
}
@Override
public RecordDefinition getRecordDefinition(final String typePath) {
return this.recordDefinitionMap.get(typePath);
}
}