Restore merge exceptions and add structure factory method

This commit is contained in:
Thibaud Fabre
2016-10-19 11:50:04 +02:00
parent f5452eac1e
commit f79a78e4c5
2 changed files with 23 additions and 3 deletions

View File

@@ -205,7 +205,7 @@ class Field implements Typed
// type so we reject only those with different types.
if (($type = $other->getType()) !== $this->type) {
//throw new MergeException(sprintf("Field %s can't be merged, incompatible types (%s vs %s)", $name, $type, $this->type));
throw new MergeException(sprintf("Field %s can't be merged, incompatible types (%s vs %s)", $name, $type, $this->type));
}
if ($other->isPrivate() !== $this->is_private) {
@@ -217,7 +217,7 @@ class Field implements Typed
}
if ($other->getFacetValuesLimit() !== $this->facet) {
//throw new MergeException(sprintf("Field %s can't be merged, incompatible facet eligibility", $name));
throw new MergeException(sprintf("Field %s can't be merged, incompatible facet eligibility", $name));
}
$thesaurus_roots = null;

View File

@@ -46,7 +46,7 @@ final class GlobalStructure implements Structure
/**
* @param \databox[] $databoxes
* @return self
* @return GlobalStructure
*/
public static function createFromDataboxes(array $databoxes)
{
@@ -66,6 +66,26 @@ final class GlobalStructure implements Structure
return new self($fields, $flags, MetadataHelper::createTags());
}
/**
* @param \databox $databox
* @return GlobalStructure
*/
public static function createFromDatabox(\databox $databox)
{
$fields = [];
$flags = [];
foreach ($databox->get_meta_structure() as $fieldStructure) {
$fields[] = Field::createFromLegacyField($fieldStructure);
}
foreach ($databox->getStatusStructure() as $status) {
$flags[] = Flag::createFromLegacyStatus($status);
}
return new self($fields, $flags, MetadataHelper::createTags());
}
/**
* GlobalStructure constructor.
* @param Field[] $fields