for (SchemaCompositeIndex compositeIndex : type.getSchemaCompositeIndexes().values()) { if (compositeIndexMap.put(compositeIndex.getName(), compositeIndex) != null) throw new IllegalArgumentException("schema model is invalid");
@Override SchemaObjectType toSchemaItem(JSimpleDB jdb) { final SchemaObjectType schemaObjectType = new SchemaObjectType(); this.initialize(jdb, schemaObjectType); for (JField field : this.jfields.values()) { final SchemaField schemaField = field.toSchemaItem(jdb); schemaObjectType.getSchemaFields().put(schemaField.getStorageId(), schemaField); } for (JCompositeIndex index : this.jcompositeIndexes.values()) { final SchemaCompositeIndex schemaIndex = index.toSchemaItem(jdb); schemaObjectType.getSchemaCompositeIndexes().put(index.getStorageId(), schemaIndex); } return schemaObjectType; }
private void doValidate() { // Validate object types and verify object type names are unique final TreeMap<String, SchemaObjectType> schemaObjectTypesByName = new TreeMap<>(); for (SchemaObjectType schemaObjectType : this.schemaObjectTypes.values()) { schemaObjectType.validate(); final String schemaObjectTypeName = schemaObjectType.getName(); final SchemaObjectType otherSchemaObjectType = schemaObjectTypesByName.put(schemaObjectTypeName, schemaObjectType); if (otherSchemaObjectType != null) throw new InvalidSchemaException("duplicate object name `" + schemaObjectTypeName + "'"); } // Collect all field storage ID's final TreeMap<Integer, AbstractSchemaItem> globalItemsByStorageId = new TreeMap<>(); for (SchemaObjectType schemaObjectType : this.schemaObjectTypes.values()) { for (SchemaField field : schemaObjectType.getSchemaFields().values()) { globalItemsByStorageId.put(field.getStorageId(), field); if (field instanceof ComplexSchemaField) { final ComplexSchemaField complexField = (ComplexSchemaField)field; for (SimpleSchemaField subField : complexField.getSubFields().values()) globalItemsByStorageId.put(subField.getStorageId(), subField); } } } // Verify object type, field, and index storage ID's are non-overlapping for (SchemaObjectType schemaObjectType : this.schemaObjectTypes.values()) { SchemaModel.verifyUniqueStorageId(globalItemsByStorageId, schemaObjectType); for (SchemaCompositeIndex index : schemaObjectType.getSchemaCompositeIndexes().values()) SchemaModel.verifyUniqueStorageId(globalItemsByStorageId, index); } }
for (SchemaCompositeIndex schemaIndex : schemaObjectType.getSchemaCompositeIndexes().values()) this.addCompositeIndex(this.schema, schemaIndex);
for (SchemaCompositeIndex index : objectType.getSchemaCompositeIndexes().values()) this.addStorage(schemaVersion, new CompositeIndex(this, schemaVersion, objectType, index));
for (SchemaCompositeIndex index : this.objType.getSchemaCompositeIndexes().values()) this.verifyCompositeIndexEntry(info, id, index, simpleFieldValues);