@Override public EnumField caseEnumSchemaField(EnumSchemaField field) { Preconditions.checkArgument(field.getEncodingSignature() == 0, "encoding signature must be zero"); return new EnumField(field.getName(), field.getStorageId(), this.schema, field.isIndexed(), field.getIdentifiers()); }
@Override public Diffs caseEnumSchemaField(EnumSchemaField field) { return field.differencesFrom((EnumSchemaField)thatField); } @Override
@Override void readSubElements(XMLStreamReader reader, int formatVersion) throws XMLStreamException { while (this.expect(reader, true, XMLConstants.IDENTIFIER_TAG)) this.idents.add(reader.getElementText()); }
@Override public Void caseEnumSchemaField(EnumSchemaField field) { ObjectType.this.simpleFieldTypes.put(field.getStorageId(), new EnumFieldType(field.getIdentifiers())); return null; } @Override
@Override @SuppressWarnings("unchecked") void initialize(JSimpleDB jdb, SimpleSchemaField schemaField0) { super.initialize(jdb, schemaField0); final EnumSchemaField schemaField = (EnumSchemaField)schemaField0; schemaField.setType(null); // core API ignores "type" of Enum fields schemaField.getIdentifiers().clear(); for (Enum<?> value : EnumUtil.getValues((Class<Enum<?>>)this.getTypeToken().getRawType())) schemaField.getIdentifiers().add(value.name()); }
@Override public FieldType<?> caseEnumSchemaField(EnumSchemaField field) { return new EnumFieldType(field.getIdentifiers()); }
@Override EnumSchemaField toSchemaItem(JSimpleDB jdb) { final EnumSchemaField schemaField = new EnumSchemaField(); this.initialize(jdb, schemaField); return schemaField; }
@Override void validate() { super.validate(); if (this.getEncodingSignature() != 0) throw new IllegalArgumentException("invalid " + this + ": encoding signature must be zero"); try { EnumFieldType.validateIdentifiers(this.idents); } catch (IllegalArgumentException e) { throw new InvalidSchemaException("invalid " + this + ": " + e.getMessage(), e); } }