-
-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathImportSpecification.php
More file actions
143 lines (121 loc) · 2.73 KB
/
ImportSpecification.php
File metadata and controls
143 lines (121 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?php
namespace ScriptFUSION\Porter\Specification;
use ScriptFUSION\Porter\Cache\CacheAdvice;
use ScriptFUSION\Porter\Provider\Resource\ProviderResource;
use ScriptFUSION\Porter\Transform\Transformer;
/**
* Specifies which resource to import and how the data should be transformed.
*/
class ImportSpecification
{
/**
* @var ProviderResource
*/
private $resource;
/**
* @var Transformer[]
*/
private $transformers;
/**
* @var mixed
*/
private $context;
/**
* @var CacheAdvice
*/
private $cacheAdvice;
public function __construct(ProviderResource $resource)
{
$this->resource = $resource;
$this->clearTransformers();
}
/**
* @return ProviderResource
*/
final public function getResource()
{
return $this->resource;
}
/**
* @return Transformer[]
*/
final public function getTransformers()
{
return $this->transformers;
}
/**
* Adds the specified transformer.
*
* @param Transformer $transformer Transformer.
*
* @return $this
*/
final public function addTransformer(Transformer $transformer)
{
if ($this->hasTransformer($transformer)) {
throw new DuplicateTransformerException('Transformer already added.');
}
$this->transformers[spl_object_hash($transformer)] = $transformer;
return $this;
}
/**
* Adds one or more transformers.
*
* @param Transformer[] $transformers Transformers.
*
* @return $this
*/
final public function addTransformers(array $transformers)
{
foreach ($transformers as $transformer) {
$this->addTransformer($transformer);
}
return $this;
}
/**
* @return $this
*/
final public function clearTransformers()
{
$this->transformers = [];
return $this;
}
private function hasTransformer(Transformer $transformer)
{
return isset($this->transformers[spl_object_hash($transformer)]);
}
/**
* @return mixed
*/
final public function getContext()
{
return $this->context;
}
/**
* @param mixed $context
*
* @return $this
*/
final public function setContext($context)
{
$this->context = $context;
return $this;
}
/**
* @return CacheAdvice
*/
final public function getCacheAdvice()
{
return $this->cacheAdvice;
}
/**
* @param CacheAdvice $cacheAdvice
*
* @return $this
*/
final public function setCacheAdvice(CacheAdvice $cacheAdvice)
{
$this->cacheAdvice = $cacheAdvice;
return $this;
}
}