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); }
/** * 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); }