/**
* DynamicField 생성
* * ConfigManager 를 이용해 설정 정보를 저장
* * FieldTypeManager 로 Dynamic Field Table 생성
*
* @param ConfigEntity $config insert config entity
* @param ColumnEntity $column join column entity
* @return void
*/
public function create(ConfigEntity $config, ColumnEntity $column = null)
{
$group = $config->get('group');
$id = $config->get('id');
if ($group == null || $id == null) {
throw new Exceptions\InvalidConfigException();
}
if ($this->configHandler->get($group, $id) !== null) {
throw new Exceptions\AlreadyExistException();
}
if ($this->configHandler->parent($group) == null) {
$this->configHandler->setParent($group);
}
if ($column === null) {
$column = $this->getDefaultJoinColumn();
}
$config->set('joinColumnName', $column->name);
$this->connection->beginTransaction();
$this->configHandler->add($config);
$type = $this->registerHandler->getType($this, $config->get('typeId'));
$type->setConfig($config);
$type->create($column);
$this->connection->commit();
}