Files can now have mirrors. Implemented SMOMatcher service to attempt to automaticall...
[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 With_Mirrors(array $mirrors = null);
40 public function build();
41 }
42
43 abstract class AbstractFileStepByStepBuilder
44 {
45 /* @var $_simfileBuilder Domain\Entities\StepMania\ISimfileBuilder */
46 protected $_fileBuilder;
47
48 public function __construct(IFileBuilder $builder)
49 {
50 $this->_fileBuilder = $builder;
51 }
52 }
53
54 class FileStepByStepBuilder extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder
55 {
56 public function With_Hash($hash) {
57 $this->_fileBuilder->With_Hash($hash);
58 return new FileStepByStepBuilder_With_Hash($this->_fileBuilder);
59 }
60 }
61
62 class FileStepByStepBuilder_With_Hash extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_Hash
63 {
64 public function With_Path($path) {
65 $this->_fileBuilder->With_Path($path);
66 return new FileStepByStepBuilder_With_Path($this->_fileBuilder);
67 }
68 }
69
70 class FileStepByStepBuilder_With_Path extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_Path
71 {
72 public function With_Filename($filename) {
73 $this->_fileBuilder->With_Filename($filename);
74 return new FileStepByStepBuilder_With_Filename($this->_fileBuilder);
75 }
76 }
77
78 class FileStepByStepBuilder_With_Filename extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_Filename
79 {
80 public function With_Mimetype($mimetype) {
81 $this->_fileBuilder->With_Mimetype($mimetype);
82 return new FileStepByStepBuilder_With_Mimetype($this->_fileBuilder);
83 }
84 }
85
86 class FileStepByStepBuilder_With_Mimetype extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_Mimetype
87 {
88 public function With_Size($size) {
89 $this->_fileBuilder->With_Size($size);
90 return new FileStepByStepBuilder_With_Size($this->_fileBuilder);
91 }
92 }
93
94 class FileStepByStepBuilder_With_Size extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_Size
95 {
96 public function With_UploadDate($date) {
97 $this->_fileBuilder->With_UploadDate($date);
98 return new FileStepByStepBuilder_With_UploadDate($this->_fileBuilder);
99 }
100 }
101
102 class FileStepByStepBuilder_With_UploadDate extends AbstractFileStepByStepBuilder implements IFileStepByStepBuilder_With_UploadDate
103 {
104 public function With_Mirrors(array $mirrors = null) {
105 $this->_fileBuilder->With_Mirrors($mirrors);
106 return new FileStepByStepBuilder_With_UploadDate($this->_fileBuilder);
107 }
108
109 public function build() {
110 return $this->_fileBuilder
111 ->build();
112 }
113 }