use of com.revolsys.record.schema.RecordStoreSchemaElement in project com.revolsys.open by revolsys.
the class OgrRecordStore method refreshSchemaElements.
@Override
protected synchronized Map<PathName, ? extends RecordStoreSchemaElement> refreshSchemaElements(final RecordStoreSchema schema) {
final Map<PathName, RecordStoreSchemaElement> elementsByPath = new TreeMap<>();
if (!isClosed()) {
final DataSource dataSource = getDataSource();
if (dataSource != null) {
for (int layerIndex = 0; layerIndex < dataSource.GetLayerCount(); layerIndex++) {
final Layer layer = dataSource.GetLayer(layerIndex);
if (layer != null) {
try {
final RecordDefinitionImpl recordDefinition = newLayerRecordDefinition(schema, layer);
final PathName typePath = recordDefinition.getPathName();
final String layerName = layer.GetName();
this.layerNameToPathMap.put(layerName.toUpperCase(), typePath);
this.pathToLayerNameMap.put(typePath, layerName);
elementsByPath.put(typePath, recordDefinition);
} finally {
layer.delete();
}
}
}
}
}
return elementsByPath;
}
use of com.revolsys.record.schema.RecordStoreSchemaElement in project com.revolsys.open by revolsys.
the class AbstractJdbcRecordStore method refreshSchemaElements.
@Override
protected Map<PathName, ? extends RecordStoreSchemaElement> refreshSchemaElements(final RecordStoreSchema schema) {
final JdbcRecordStoreSchema jdbcSchema = (JdbcRecordStoreSchema) schema;
final JdbcRecordStoreSchema rootSchema = getRootSchema();
final PathName schemaPath = jdbcSchema.getPathName();
if (jdbcSchema == rootSchema) {
if (this.usesSchema) {
final Map<PathName, RecordStoreSchemaElement> schemas = new TreeMap<>();
final Set<String> databaseSchemaNames = getDatabaseSchemaNames();
for (final String dbSchemaName : databaseSchemaNames) {
final PathName childSchemaPath = schemaPath.newChild(dbSchemaName.toUpperCase());
RecordStoreSchema childSchema = schema.getSchema(childSchemaPath);
if (childSchema == null) {
childSchema = new JdbcRecordStoreSchema(rootSchema, childSchemaPath, dbSchemaName);
} else {
if (childSchema.isInitialized()) {
childSchema.refresh();
}
}
schemas.put(childSchemaPath, childSchema);
}
return schemas;
} else {
return refreshSchemaElementsDo(jdbcSchema, schemaPath);
}
} else {
return refreshSchemaElementsDo(jdbcSchema, schemaPath);
}
}
use of com.revolsys.record.schema.RecordStoreSchemaElement in project com.revolsys.open by revolsys.
the class DirectoryRecordStore method refreshSchemaElements.
@Override
protected Map<PathName, RecordStoreSchemaElement> refreshSchemaElements(final RecordStoreSchema schema) {
final Map<PathName, RecordStoreSchemaElement> elements = new TreeMap<>();
final String schemaPath = schema.getPath();
final PathName schemaPathName = schema.getPathName();
final File subDirectory;
if (schemaPath.equals("/")) {
subDirectory = this.directory;
} else {
subDirectory = new File(this.directory, schemaPath);
}
final FileFilter filter = new ExtensionFilenameFilter(this.fileExtensions);
final File[] files = subDirectory.listFiles();
if (files != null) {
for (final File file : files) {
if (filter.accept(file)) {
final PathResource resource = new PathResource(file);
final RecordDefinition recordDefinition = loadRecordDefinition(schema, schemaPath, resource);
if (recordDefinition != null) {
final PathName path = recordDefinition.getPathName();
elements.put(path, recordDefinition);
}
} else if (file.isDirectory()) {
final String name = file.getName();
final PathName childSchemaPath = schemaPathName.newChild(name);
RecordStoreSchema childSchema = schema.getSchema(childSchemaPath);
if (childSchema == null) {
childSchema = new RecordStoreSchema(schema, childSchemaPath);
} else {
if (!childSchema.isInitialized()) {
childSchema.refresh();
}
}
elements.put(childSchemaPath, childSchema);
}
}
}
return elements;
}
Aggregations