Package com.alvazan.orm.impl.meta.data

Source Code of com.alvazan.orm.impl.meta.data.MetaCommonField

package com.alvazan.orm.impl.meta.data;

import java.lang.reflect.Field;
import java.util.List;

import com.alvazan.orm.api.z5api.NoSqlSession;
import com.alvazan.orm.api.z8spi.Row;
import com.alvazan.orm.api.z8spi.action.Column;
import com.alvazan.orm.api.z8spi.conv.Converter;
import com.alvazan.orm.api.z8spi.conv.StandardConverters;
import com.alvazan.orm.api.z8spi.conv.StorageTypeEnum;
import com.alvazan.orm.api.z8spi.meta.DboColumnCommonMeta;
import com.alvazan.orm.api.z8spi.meta.DboColumnMeta;
import com.alvazan.orm.api.z8spi.meta.DboTableMeta;
import com.alvazan.orm.api.z8spi.meta.IndexData;
import com.alvazan.orm.api.z8spi.meta.InfoForIndex;
import com.alvazan.orm.api.z8spi.meta.ReflectionUtil;
import com.alvazan.orm.api.z8spi.meta.RowToPersist;

public class MetaCommonField<OWNER> extends MetaAbstractField<OWNER> {
 
  private Converter converter;
  private DboColumnCommonMeta metaDbo = new DboColumnCommonMeta();
 
  public DboColumnMeta getMetaDbo() {
    return metaDbo;
  }
 
  @Override
  public String toString() {
    return "MetaCommonField [field='" + field.getDeclaringClass().getName()+"."+field.getName()+"(field type=" +field.getType()+ "), columnName=" + columnName + "]";
  }
 
  public void translateFromColumn(Row row, OWNER entity, NoSqlSession session) {
    Column column = row.getColumn(getMetaDbo().getColumnNameAsBytes());
   
    if(column == null) {
      column = new Column();
    }
   
    Object value = converter.convertFromNoSql(column.getValue());
    ReflectionUtil.putFieldValue(entity, field, value);
  }
  @Override
  public void translateToColumn(InfoForIndex<OWNER> info) {
    OWNER entity = info.getEntity();
    RowToPersist row = info.getRow();
   
    Column col = new Column();
    row.getColumns().add(col);

    Object value = ReflectionUtil.fetchFieldValue(entity, field);
    byte[] byteVal = translateValue(value);
    byte[] colBytes = StandardConverters.convertToBytes(columnName);
    col.setName(colBytes);
    col.setValue(byteVal);
   
    StorageTypeEnum storageType = metaDbo.getStorageType();
    addIndexInfo(info, value, byteVal, storageType);
    removeIndexInfo(info, value, byteVal, storageType);
  }
 
  @Override
  public Object fetchField(Object entity) {
    return ReflectionUtil.fetchFieldValue(entity, field);
  }

  @Override
  public String translateToString(Object fieldsValue) {
    return converter.convertTypeToString(fieldsValue);
  }
 
  @Override
  public void removingEntity(InfoForIndex<OWNER> info, List<IndexData> indexRemoves, byte[] pk) {
    removingThisEntity(info, indexRemoves, pk);
  }
 
  @Override
  public byte[] translateValue(Object value) {
    return converter.convertToNoSql(value);
  }
 
  public void setup(DboTableMeta tableMeta, Field field2, String colName, Converter converter, boolean isIndexed, boolean isPartitioned, boolean byKeyOnly) {
    metaDbo.setup(tableMeta, colName, field2.getType(), isIndexed, isPartitioned, byKeyOnly);
    super.setup(field2, colName);
    this.converter = converter;
  }

  @Override
  protected Object unwrapIfNeeded(Object value) {
    return value; //no need to unwrap common fields
  }

}
TOP

Related Classes of com.alvazan.orm.impl.meta.data.MetaCommonField

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.