protected void store(String... fields) throws FactoryException {
    DataTypeFactory thisDataTypeFactory = this.getDataTypeFactory();
    Identifier identifierCategory = new IdentifierImpl(fields[0]);
    Identifier identifierAttribute = new IdentifierImpl(fields[1]);
    Identifier identifierDataType = new IdentifierImpl(fields[2]);
    String issuer = fields.length == 5 ? fields[3] : null;
    String value = fields[fields.length - 1];

    DataType<?> dataType = thisDataTypeFactory.getDataType(identifierDataType);
    if (dataType == null) {
      logger.error("Unknown data type " + identifierDataType.stringValue());
      return;
    }

    AttributeValue<?> attributeValue = null;
    try {
      attributeValue = dataType.createAttributeValue(value);
    } catch (DataTypeException ex) {
      throw new FactoryException("DataTypeException creating AttributeValue", ex);
    }
    Attribute attribute =
        new StdMutableAttribute(
            identifierCategory, identifierAttribute, attributeValue, issuer, false);
    this.listAttributes.add(attribute);
  }
 protected DataTypeFactory getDataTypeFactory() throws FactoryException {
   if (this.dataTypeFactory == null) {
     this.dataTypeFactory = DataTypeFactory.newInstance();
   }
   return this.dataTypeFactory;
 }