Package com.alvazan.orm.api.z8spi.meta

Source Code of com.alvazan.orm.api.z8spi.meta.TypedRow

package com.alvazan.orm.api.z8spi.meta;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.NavigableMap;
import java.util.TreeMap;

import com.alvazan.orm.api.z8spi.conv.ByteArray;
import com.alvazan.orm.api.z8spi.conv.StandardConverters;

public class TypedRow {

  private Object rowKey;
  private NavigableMap<ByteArray, TypedColumn> columns = new TreeMap<ByteArray, TypedColumn>();
  private DboTableMeta metaClass;
  private ViewInfo view;
  private List<byte[]> columnsToBeRemoved = new ArrayList<byte[]>();
 
  public TypedRow() {
  }
 
  public TypedRow(ViewInfo view, DboTableMeta metaClass) {
    this.view = view;
    this.metaClass = metaClass;
  }
 
  public TypedRow(int i) {}

  public void addColumn(DboColumnToManyMeta colMeta, byte[] fullName, byte[] namePrefix, byte[] fk, byte[] value, Long timestamp) {
    TypedColumn c = new TypedColumn(colMeta, namePrefix, fk, value, timestamp);
    ByteArray b = new ByteArray(fullName);
    columns.put(b, c);
  }

  public void addColumn(DboColumnEmbedSimpleMeta colMeta, byte[] fullName, byte[] namePrefix, byte[] fk, byte[] value, Long timestamp) {
    TypedColumn c = new TypedColumn(colMeta, namePrefix, fk, value, timestamp);
    ByteArray b = new ByteArray(fullName);
    columns.put(b, c);
  }

  public void addColumn(DboColumnToOneMeta colMeta, byte[] fullName, byte[] namePrefix, byte[] fk, byte[] value, Long timestamp) {
    TypedColumn c = new TypedColumn(colMeta, namePrefix, fk, value, timestamp);
    ByteArray b = new ByteArray(fullName);
    columns.put(b, c);
  }

  public void addColumn(DboColumnEmbedMeta colMeta, byte[] fullName, byte[] namePrefix, byte[] fk, byte[] value, Long timestamp) {
      TypedColumn c = new TypedColumn(colMeta, namePrefix, fk, value, timestamp);
      ByteArray b = new ByteArray(fullName);
      columns.put(b, c);
  }

  public void addColumn(DboColumnMeta colMeta,
      byte[] columnName, byte[] value, Long timestamp) {
    TypedColumn c = new TypedColumn(colMeta, columnName, value, timestamp);
    ByteArray b = new ByteArray(columnName);
    columns.put(b, c);
  }
 
  public void removeColumn(String name) {
    byte[] nameBytes = StandardConverters.convertToBytes(name);
    removeColumn(nameBytes);
  }

  public void removeColumn(byte[] name) {
    ByteArray b = new ByteArray(name);
    columns.remove(b);
    columnsToBeRemoved.add(name);
  }
 
  public void addColumn(byte[] name, byte[] value, Long timestamp) {
    ByteArray b = new ByteArray(name);
    TypedColumn c = new TypedColumn(null, name, value, timestamp);
    columns.put(b, c);
  }
 
  public void addColumn(String name, Object obj) {
    DboColumnMeta columnMeta = metaClass.getColumnMeta(name);
    byte[] nameBytes = StandardConverters.convertToBytes(name);
    ByteArray b = new ByteArray(nameBytes);
    if(columnMeta != null) {
      byte[] value = columnMeta.convertToStorage2(obj);
      TypedColumn c = new TypedColumn(columnMeta, nameBytes, value, null);
      columns.put(b, c);
      return;
    }
   
    byte[] value = StandardConverters.convertToBytes(obj);
    TypedColumn c = new TypedColumn(columnMeta, nameBytes, value, null);
    columns.put(b, c);   
  }
 
//  public void addColumn(String name, Object value) {
//    addColumn(name, value, null);
//  }
//  public void addColumn(DboColumnMeta meta, byte[] name, byte[] subName, byte[] value, Long timestamp) {
//    if(meta == null)
//      throw new IllegalArgumentException("must have meta");
//    TypedColumn col = new TypedColumn(meta, name, subName, value, timestamp);
//    String fullName = name+"."+subName;
//   
//    columns.put(fullName, col);
//  }
//
//  public void addColumn(String name, Object value, Long timestamp) {
//    DboColumnMeta colMeta = metaClass.getColumnMeta(name);
//    if(colMeta == null && !(value instanceof byte[]))
//      throw new IllegalArgumentException("Column="+name+" not found on this table AND your value was not byte[].  Use byte[] or pass in a column we know about");
//    TypedColumn col = new TypedColumn(colMeta, name, value, timestamp);
//    columns.put(name, col);
//  }
//
//  public void addColumnString(String name, String value) {
//    DboColumnMeta colMeta = metaClass.getColumnMeta(name);
//    if(colMeta == null)
//      throw new IllegalArgumentException("Column="+name+" not found on this table.  Use addColumn passing in byte[] instead if you want to save a column the schema doesn't know about");
//    Object val = colMeta.convertStringToType(value);
//    TypedColumn col = new TypedColumn(colMeta, name, val, null);
//    columns.put(name, col);
//  }
 
  public Object getRowKey() {
    return rowKey;
  }
  public void setRowKey(Object rowKey) {
    this.rowKey = rowKey;
  }
  public String getRowKeyString() {
    return metaClass.getIdColumnMeta().convertTypeToString(rowKey);
  }
  public void setRowKeyString(String key) {
    rowKey = metaClass.getIdColumnMeta().convertStringToType(key);
  }
 
  public TypedColumn getColumn(byte[] colName) {
    ByteArray b = new ByteArray(colName);
    return columns.get(b);
  }

  public TypedColumn getColumn(String colName) {
    byte[] nameBytes = StandardConverters.convertToBytes(colName);
    ByteArray b = new ByteArray(nameBytes);
    TypedColumn col = columns.get(b);
    if (col == null) {
      DboColumnMeta meta = metaClass.getColumnMeta(colName);
      if (meta != null && meta instanceof DboColumnToOneMeta) {
        DboColumnToOneMeta toOneMeta = (DboColumnToOneMeta) meta;
        col = toOneMeta.translateRow(this);
      }
    }
    return col;
  }

  public Collection<TypedColumn> getColumnsAsColl() {
    return columns.values();
  }

  public ViewInfo getView() {
    return view;
  }

  public void setMeta(DboTableMeta dboTableMeta) {
    this.metaClass = dboTableMeta;
  }

  public void setView(ViewInfo view2) {
    this.view = view2;
  }

  public List<byte[]> getColumnsToRemove() {
    return columnsToBeRemoved;
  }

}
TOP

Related Classes of com.alvazan.orm.api.z8spi.meta.TypedRow

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.