Пример #1
0
 /**
  * Populates container object (ColumnFamily, ColumnFamilySuper or SuperColumn)
  * @param mixed $data associative string array, array of cassandra_Column's or JSON string of key => values.
  * @return bool column values set without error
  */
 public function populate($data, $colAutoCreate = NULL)
 {
     if (is_string($data)) {
         $data = json_decode($data, TRUE);
     }
     if (is_array($data) && count($data)) {
         // Check depth, take first few keys as keyspace/columnfamily/key
         foreach ($data as $idx => $column) {
             if ($column instanceof cassandra_Column) {
                 $columnName = $this->typeConvert($column->name, UUID::UUID_FMT_STR);
                 if ($this->getAutoCreate($colAutoCreate) || array_key_exists($columnName, $this->_columns)) {
                     $this->_columns[$columnName] = PandraColumn::cast($column, $this);
                 }
                 // circular dependency?
             } elseif ($column instanceof cassandra_ColumnOrSuperColumn && !empty($column->column)) {
                 $columnName = $this->typeConvert($column->column->name, UUID::UUID_FMT_STR);
                 if ($this->getAutoCreate($colAutoCreate) || array_key_exists($columnName, $this->_columns)) {
                     $this->_columns[$columnName] = PandraColumn::cast($column->column, $this);
                 }
             } else {
                 $colExists = array_key_exists($idx, $this->_columns);
                 // Create a new named column object
                 if ($this->getAutoCreate($colAutoCreate) && !array_key_exists($idx, $this->_columns)) {
                     $this->addColumn($idx);
                 }
                 // Set Value
                 if (array_key_exists($idx, $this->_columns)) {
                     if ($this->_columns[$idx] instanceof PandraColumn) {
                         $this->_columns[$idx]->setValue($column);
                     }
                 }
             }
         }
     } else {
         return FALSE;
     }
     return empty($this->errors);
 }
Пример #2
0
 public function testCast()
 {
     $column = new cassandra_Column();
     $column->name = 'castedColumn';
     $column->value = 'THRIFT COLUMN VALUE';
     $pandraColumn = PandraColumn::cast($column, $this->parent);
     $this->assertEquals(get_class($pandraColumn), 'PandraColumn');
     $this->assertEquals($pandraColumn->getValue(), $column->value);
     // Test ColumnOrSuperColumn casting
     $sc = new cassandra_ColumnOrSuperColumn();
     $this->assertNull(PandraColumn::cast($sc));
     $sc->column = new cassandra_Column();
     $sc->column->name = 'new column';
     $sc->column->value = 'value';
     $sc->column->timestamp = PandraCore::getTime();
     $pandraColumn = PandraColumn::cast($sc);
     $this->assertEquals(get_class($pandraColumn), 'PandraColumn');
     $this->assertEquals($pandraColumn->getValue(), $sc->column->value);
 }
Пример #3
0
 /**
  * Casts from a cassandra_ColumnOrSuperColumn->column or cassandra_Column types, to PandraColumn
  * @param cassandra_Column $object source objct
  * @param PandraColumnContainer $parent parent container
  * @return PandraColumn new column object or NULL on empty cassandra_ColumnOrSuperColumn->column
  */
 public static function cast($object, PandraColumnContainer $parent = NULL)
 {
     if ($object instanceof cassandra_ColumnOrSuperColumn) {
         if (!empty($object->column->name)) {
             $object = $object->column;
         } else {
             return NULL;
         }
     } elseif (!$object instanceof cassandra_Column) {
         throw new RuntimeException('Cast expected cassandra_Column[OrSuperColumn], recieved ' . get_class($object));
     }
     $newObj = new PandraColumn($object->name);
     if ($parent !== NULL) {
         $newObj->setParent($parent);
     }
     $newObj->setValue($object->value);
     $newObj->bindTime($object->timestamp);
     return $newObj;
 }