Search in sources :

Example 11 with RecordStoreSchema

use of com.revolsys.record.schema.RecordStoreSchema in project com.revolsys.open by revolsys.

the class DirectoryRecordStore method getRecordDefinition.

@Override
public RecordDefinition getRecordDefinition(final RecordDefinition recordDefinition) {
    final RecordDefinition storeRecordDefinition = super.getRecordDefinition(recordDefinition);
    if (storeRecordDefinition == null && this.createMissingTables) {
        final PathName typePath = recordDefinition.getPathName();
        final PathName schemaPath = typePath.getParent();
        RecordStoreSchema schema = getSchema(schemaPath);
        if (schema == null && this.createMissingTables) {
            final RecordStoreSchema rootSchema = getRootSchema();
            schema = rootSchema.newSchema(schemaPath);
        }
        final File schemaDirectory = new File(this.directory, schemaPath.getPath());
        if (!schemaDirectory.exists()) {
            schemaDirectory.mkdirs();
        }
        final RecordDefinitionImpl newRecordDefinition = new RecordDefinitionImpl(schema, typePath);
        for (final FieldDefinition field : recordDefinition.getFields()) {
            final FieldDefinition newField = new FieldDefinition(field);
            newRecordDefinition.addField(newField);
        }
        schema.addElement(newRecordDefinition);
        return newRecordDefinition;
    }
    return storeRecordDefinition;
}
Also used : RecordStoreSchema(com.revolsys.record.schema.RecordStoreSchema) FieldDefinition(com.revolsys.record.schema.FieldDefinition) RecordDefinitionImpl(com.revolsys.record.schema.RecordDefinitionImpl) PathName(com.revolsys.io.PathName) File(java.io.File) RecordDefinition(com.revolsys.record.schema.RecordDefinition)

Example 12 with RecordStoreSchema

use of com.revolsys.record.schema.RecordStoreSchema 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;
}
Also used : RecordStoreSchema(com.revolsys.record.schema.RecordStoreSchema) PathResource(com.revolsys.spring.resource.PathResource) ExtensionFilenameFilter(com.revolsys.io.filter.ExtensionFilenameFilter) PathName(com.revolsys.io.PathName) TreeMap(java.util.TreeMap) FileFilter(java.io.FileFilter) File(java.io.File) RecordStoreSchemaElement(com.revolsys.record.schema.RecordStoreSchemaElement) RecordDefinition(com.revolsys.record.schema.RecordDefinition)

Aggregations

RecordStoreSchema (com.revolsys.record.schema.RecordStoreSchema)12 PathName (com.revolsys.io.PathName)11 VectorOfWString (com.revolsys.gis.esri.gdb.file.capi.swig.VectorOfWString)4 RecordDefinitionImpl (com.revolsys.record.schema.RecordDefinitionImpl)4 RecordStoreSchemaElement (com.revolsys.record.schema.RecordStoreSchemaElement)4 Geodatabase (com.revolsys.gis.esri.gdb.file.capi.swig.Geodatabase)3 FieldDefinition (com.revolsys.record.schema.FieldDefinition)3 TreeMap (java.util.TreeMap)3 DataType (com.revolsys.datatype.DataType)2 GeometryFactory (com.revolsys.geometry.model.GeometryFactory)2 FileGdbDomainCodeTable (com.revolsys.gis.esri.gdb.file.capi.FileGdbDomainCodeTable)2 CodeTable (com.revolsys.record.code.CodeTable)2 DEFeatureClass (com.revolsys.record.io.format.esri.gdb.xml.model.DEFeatureClass)2 DETable (com.revolsys.record.io.format.esri.gdb.xml.model.DETable)2 Field (com.revolsys.record.io.format.esri.gdb.xml.model.Field)2 SpatialReference (com.revolsys.record.io.format.esri.gdb.xml.model.SpatialReference)2 RecordDefinition (com.revolsys.record.schema.RecordDefinition)2 File (java.io.File)2 ArrayList (java.util.ArrayList)2 Table (com.revolsys.gis.esri.gdb.file.capi.swig.Table)1