I think uploading packs is more or less working. I nutted out a few bugs in a lot...
[rock.divinelegy.git] / Domain / Entities / StepMania / PackStepByStepBuilder.php
1 <?php
2
3 namespace Domain\Entities\StepMania;
4
5 use Domain\Entities\StepMania\IPackBuilder;
6 use Domain\Entities\IUser;
7 use Domain\Entities\IFile;
8
9 interface IPackStepByStepBuilder
10 {
11 public function With_Title($title);
12 }
13
14 interface IPackStepByStepBuilder_With_Title
15 {
16 public function With_Uploader(IUser $user);
17 }
18
19 interface IPackStepByStepBuilder_With_Uploader
20 {
21 public function With_Simfiles(array $simfiles);
22 }
23
24 interface IPackStepByStepBuilder_With_Simfiles
25 {
26 public function With_Banner(IFile $banner);
27 public function With_File(IFile $file);
28 public function build();
29 }
30
31 abstract class AbstractPackStepByStepBuilder
32 {
33 /* @var $_simfileBuilder Domain\Entities\StepMania\ISimfileBuilder */
34 protected $_packBuilder;
35
36 public function __construct(IPackBuilder $builder)
37 {
38 $this->_packBuilder = $builder;
39 }
40 }
41
42
43 class PackStepByStepBuilder extends AbstractPackStepByStepBuilder implements IPackStepByStepBuilder
44 {
45 public function With_Title($title)
46 {
47 $this->_packBuilder->With_Title($title);
48 return new PackStepByStepBuilder_With_Title($this->_packBuilder);
49 }
50 }
51
52 class PackStepByStepBuilder_With_Title extends AbstractPackStepByStepBuilder implements IPackStepByStepBuilder_With_Title
53 {
54 public function With_Uploader(IUser $user)
55 {
56 $this->_packBuilder->With_Uploader($user);
57 return new PackStepByStepBuilder_With_Uploader($this->_packBuilder);
58 }
59 }
60
61 class PackStepByStepBuilder_With_Uploader extends AbstractPackStepByStepBuilder implements IPackStepByStepBuilder_With_Uploader
62 {
63 public function With_Simfiles(array $simfiles)
64 {
65 $this->_packBuilder->With_Simfiles($simfiles);
66 return new PackStepByStepBuilder_With_Simfiles($this->_packBuilder);
67 }
68 }
69
70 class PackStepByStepBuilder_With_Simfiles extends AbstractPackStepByStepBuilder implements IPackStepByStepBuilder_With_Simfiles
71 {
72 public function With_Banner(IFile $banner)
73 {
74 $this->_packBuilder->With_Banner($banner);
75 return $this;
76 }
77
78 public function With_File(Ifile $file)
79 {
80 $this->_packBuilder->With_File($file);
81 return $this;
82 }
83
84 public function build()
85 {
86 return $this->_packBuilder
87 ->build();
88 }
89 }