42 private static $INSTANCE;
49 private $entityDataObjects = [];
61 private function __construct()
64 $parserOutput = $parser->readDataProfiles();
68 $this->entityDataObjects = $this->processParserOutput($parserOutput);
80 if (!self::$INSTANCE) {
83 return self::$INSTANCE;
94 if (array_key_exists(
$name, $this->entityDataObjects)) {
95 return $this->extendDataObject($this->entityDataObjects[
$name]);
108 foreach ($this->entityDataObjects as $entityName => $entityObject) {
109 $this->entityDataObjects[$entityName] = $this->extendDataObject($entityObject);
111 return $this->entityDataObjects;
121 private function processParserOutput($parserOutput)
123 $entityDataObjects = [];
126 foreach ($rawEntities as
$name => $rawEntity) {
127 if (preg_match(
'/[^a-zA-Z0-9_]/',
$name)) {
133 $linkedEntities = [];
134 $uniquenessData = [];
136 $parentEntity =
null;
138 if (array_key_exists(self::_DATA, $rawEntity)) {
139 $data = $this->processDataElements($rawEntity);
140 $uniquenessData = $this->processUniquenessData($rawEntity);
143 if (array_key_exists(self::_REQUIRED_ENTITY, $rawEntity)) {
144 $linkedEntities = $this->processLinkedEntities($rawEntity);
147 if (array_key_exists(self::_ARRAY, $rawEntity)) {
149 foreach ($arrays as $array) {
150 $key = strtolower($array[self::_KEY]);
151 $data[$key] = $this->processArray($array[self::_ITEM],
$data, $key);
155 if (array_key_exists(self::_VAR, $rawEntity)) {
156 $vars = $this->processVarElements($rawEntity);
159 if (array_key_exists(self::_EXTENDS, $rawEntity)) {
163 $entityDataObject =
new EntityDataObject(
173 $entityDataObjects[$entityDataObject->getName()] = $entityDataObject;
176 return $entityDataObjects;
187 private function processArray($arrayItems,
$data, $key)
190 foreach ($arrayItems as
$item) {
203 private function processDataElements($entityData)
206 foreach ($entityData[self::_DATA] as $dataElement) {
207 $dataElementKey = strtolower($dataElement[self::_KEY]);
209 $dataValues[$dataElementKey] = $dataElementValue;
220 private function processUniquenessData($entityData)
222 $uniquenessValues = [];
223 foreach ($entityData[self::_DATA] as $dataElement) {
224 if (array_key_exists(self::_UNIQUE, $dataElement)) {
225 $dataElementKey = strtolower($dataElement[self::_KEY]);
226 $uniquenessValues[$dataElementKey] = $dataElement[
self::_UNIQUE];
229 return $uniquenessValues;
238 private function processLinkedEntities($entityData)
240 $linkedEntities = [];
241 foreach ($entityData[self::_REQUIRED_ENTITY] as $linkedEntity) {
245 $linkedEntities[$linkedEntityName] = $linkedEntityType;
247 return $linkedEntities;
256 private function processVarElements($entityData)
259 foreach ($entityData[self::_VAR] as $varElement) {
262 $vars[$varKey] = $varValue;
273 private function extendDataObject($dataObject)
275 if ($dataObject->getParentName() !=
null) {
276 return $this->extendUtil->extendEntity($dataObject);
static getObjectManager()
const DATA_NAME_ERROR_MSG
if(!isset($_GET['name'])) $name