1f22a6be77d4ad21491712f363576653ab28e685
[rock.divinelegy.git] / Domain / Entities / FileStepByStepBuilder.php
1 <?php
2
3 namespace Domain\Entities;
4
5 use Domain\Entities\IFileBuilder;
6
7 interface IFileStepByStepBuilder
8 {
9 public function With_Hash($hash);
10 }
11
12 interface IFileStepByStepBuilder_With_Hash
13 {
14 public function With_Path($path);
15 }
16
17 interface IFileStepByStepBuilder_With_Path
18 {
19 public function With_Filename($filename); //TODO: Make user object
20 }
21
22 interface IFileStepByStepBuilder_With_Filename
23 {
24 public function With_Mimetype($mimetype);
25 }
26
27 interface IFileStepByStepBuilder_With_Mimetype
28 {
29 public function With_Size($size);
30 }
31
32 interface IFileStepByStepBuilder_With_Size
33 {
34 public function With_UploadDate($date);
35 }
36
37 interface IFileStepByStepBuilder_With_UploadDate
38 {
39 public function build();
40 }
41
42 abstract class AbstractFileStepByStepBuilder
43 {
44 /* @var $_simfileBuilder Domain\Entities\StepMania\ISimfileBuilder */
45 protected $_fileBuilder;
46
47 public function __construct(IFileBuilder $builder)
48 {
49 $this->_fileBuilder = $builder;
50 }
51 }
52
53 class FileStepByStepBuilder extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder
54 {
55 public function With_Hash($hash) {
56 $this->_fileBuilder->With_Hash($hash);
57 return new FileStepByStepBuilder_With_Hash($this->_fileBuilder);
58 }
59 }
60
61 class FileStepByStepBuilder_With_Hash extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_Hash
62 {
63 public function With_Path($path) {
64 $this->_fileBuilder->With_Path($path);
65 return new FileStepByStepBuilder_With_Path($this->_fileBuilder);
66 }
67 }
68
69 class FileStepByStepBuilder_With_Path extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_Path
70 {
71 public function With_Filename($filename) {
72 $this->_fileBuilder->With_Filename($filename);
73 return new FileStepByStepBuilder_With_Filename($this->_fileBuilder);
74 }
75 }
76
77 class FileStepByStepBuilder_With_Filename extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_Filename
78 {
79 public function With_Mimetype($mimetype) {
80 $this->_fileBuilder->With_Mimetype($mimetype);
81 return new FileStepByStepBuilder_With_Mimetype($this->_fileBuilder);
82 }
83 }
84
85 class FileStepByStepBuilder_With_Mimetype extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_Mimetype
86 {
87 public function With_Size($size) {
88 $this->_fileBuilder->With_Size($size);
89 return new FileStepByStepBuilder_With_Size($this->_fileBuilder);
90 }
91 }
92
93 class FileStepByStepBuilder_With_Size extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_Size
94 {
95 public function With_UploadDate($date) {
96 $this->_fileBuilder->With_UploadDate($date);
97 return new FileStepByStepBuilder_With_UploadDate($this->_fileBuilder);
98 }
99 }
100
101 class FileStepByStepBuilder_With_UploadDate extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_UploadDate
102 {
103 public function build() {
104 return $this->_fileBuilder
105 ->build();
106 }
107 }