Changeset 1867
- Timestamp:
- 09/27/08 15:07:07 (3 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
framework/trunk/src/main/php/net/stubbles/ipo/request/broker/annotations/stubDateFilterAnnotation.php
r1866 r1867 8 8 * @version $Id$ 9 9 */ 10 stubClassLoader::load('net::stubbles::reflection::annotations::stubAnnotation', 11 'net::stubbles::ipo::request::broker::annotations::stubAbstractFilterAnnotation', 10 stubClassLoader::load('net::stubbles::ipo::request::broker::annotations::stubAbstractFilterAnnotation', 12 11 'net::stubbles::ipo::request::filter::stubDateFilter', 13 12 'net::stubbles::ipo::request::filter::stubPeriodFilterDecorator', 14 'net::stubbles::lang::types::stubDate' 13 'net::stubbles::lang::types::stubDate', 14 'net::stubbles::reflection::stubBaseReflectionClass', 15 'net::stubbles::reflection::annotations::stubAnnotation' 15 16 ); 16 17 /** … … 29 30 protected $minDate; 30 31 /** 32 * minimum date provider class 33 * 34 * @var stubBaseReflectionClass 35 */ 36 protected $minDateProviderClass; 37 /** 38 * minimum date provider method 39 * 40 * @var string 41 */ 42 protected $minDateProviderMethod = 'getMinDate'; 43 /** 31 44 * the error id to use in case min date validation fails 32 45 * … … 40 53 */ 41 54 protected $maxDate; 55 /** 56 * maximum date provider class 57 * 58 * @var stubBaseReflectionClass 59 */ 60 protected $maxDateProviderClass; 61 /** 62 * maximum date provider method 63 * 64 * @var string 65 */ 66 protected $maxDateProviderMethod = 'getMaxDate'; 42 67 /** 43 68 * the error id to use in case max date validation fails … … 68 93 69 94 /** 95 * sets the minimum date provider class 96 * 97 * @param stubBaseReflectionClass $minDateProviderClass 98 */ 99 public function setMinDateProviderClass(stubBaseReflectionClass $minDateProviderClass) 100 { 101 $this->minDateProviderClass = $minDateProviderClass; 102 } 103 104 /** 105 * sets the minimum date provider method 106 * 107 * @param string $minDateProviderMethod 108 */ 109 public function setMinDateProviderMethod($minDateProviderMethod) 110 { 111 $this->minDateProviderMethod = $minDateProviderMethod; 112 } 113 114 /** 70 115 * sets the error id to use in case min date validation fails 71 116 * … … 92 137 93 138 /** 139 * sets the maximum date provider class 140 * 141 * @param stubBaseReflectionClass $maxDateProviderClass 142 */ 143 public function setMaxDateProviderClass(stubBaseReflectionClass $maxDateProviderClass) 144 { 145 $this->maxDateProviderClass = $maxDateProviderClass; 146 } 147 148 /** 149 * sets the maximum date provider method 150 * 151 * @param string $maxDateProviderMethod 152 */ 153 public function setMaxDateProviderMethod($maxDateProviderMethod) 154 { 155 $this->maxDateProviderMethod = $maxDateProviderMethod; 156 } 157 158 /** 94 159 * sets the error id to use in case max date validation fails 95 160 * … … 119 184 { 120 185 $filter = new stubDateFilter($this->createRVEFactory()); 186 if (null == $this->minDate && null !== $this->minDateProviderClass) { 187 $this->setMinDate($this->getDateFromProvider($this->minDateProviderClass, $this->minDateProviderMethod)); 188 } 189 if (null == $this->maxDate && null !== $this->maxDateProviderClass) { 190 $this->setMaxDate($this->getDateFromProvider($this->maxDateProviderClass, $this->maxDateProviderMethod)); 191 } 192 121 193 if (null !== $this->minDate || null !== $this->maxDate) { 122 194 $filter = new stubPeriodFilterDecorator($filter, $this->createRVEFactory()); … … 136 208 return $filter; 137 209 } 210 211 /** 212 * retrieves date from provider 213 * 214 * @param stubBaseReflectionClass $providerClass 215 * @param string $providerMethod 216 * @return int|string|stubDate 217 */ 218 protected function getDateFromProvider(stubBaseReflectionClass $providerClass, $providerMethod) 219 { 220 $method = $providerClass->getMethod($providerMethod); 221 if ($method->isStatic() === true) { 222 return $method->invoke(null); 223 } 224 225 return $method->invoke($providerClass->newInstance()); 226 } 138 227 } 139 228 ?> framework/trunk/src/test/php/net/stubbles/ipo/request/broker/annotations/stubDateFilterAnnotationTestCase.php
r1866 r1867 10 10 stubClassLoader::load('net::stubbles::ipo::request::broker::annotations::stubDateFilterAnnotation'); 11 11 /** 12 * Helper class for the test. 13 * 14 * @package stubbles 15 * @subpackage ipo_request_broker_annotations_test 16 */ 17 class DateProvider extends stubBaseObject 18 { 19 /** 20 * returns min data in a static way 21 * 22 * @return stubDate 23 */ 24 public static function getMinDate() 25 { 26 return stubDate::now(); 27 } 28 29 /** 30 * returns min data in a dynamic way 31 * 32 * @return stubDate 33 */ 34 public function getMinDateNonStatic() 35 { 36 return stubDate::now(); 37 } 38 39 /** 40 * returns max data in a static way 41 * 42 * @return stubDate 43 */ 44 public static function getMaxDate() 45 { 46 return stubDate::now(); 47 } 48 49 /** 50 * returns max data in a dynamic way 51 * 52 * @return stubDate 53 */ 54 public function getMaxDateNonStatic() 55 { 56 return stubDate::now(); 57 } 58 } 59 /** 12 60 * Tests for net::stubbles::ipo::request::broker::annotations::stubDateFilterAnnotation. 13 61 * … … 82 130 * @test 83 131 */ 84 public function withMaxDate() 132 public function withMinDateFromProviderWithDefaultMethod() 133 { 134 $this->dateFilterAnnotation->setMinDateProviderClass(new stubReflectionClass('DateProvider')); 135 $filter = $this->dateFilterAnnotation->getFilter(); 136 $this->assertType('stubPeriodFilterDecorator', $filter); 137 $this->assertNull($filter->getMaxDate()); 138 $this->assertTrue(stubDate::now()->equals($filter->getMinDate())); 139 $this->assertType('stubDateFilter', $filter->getDecoratedFilter()); 140 } 141 142 /** 143 * test that the correct filter is created 144 * 145 * @test 146 */ 147 public function withMinDateFromProviderWithOtherMethod() 148 { 149 $this->dateFilterAnnotation->setMinDateProviderClass(new stubReflectionClass('DateProvider')); 150 $this->dateFilterAnnotation->setMinDateProviderMethod('getMinDateNonStatic'); 151 $filter = $this->dateFilterAnnotation->getFilter(); 152 $this->assertType('stubPeriodFilterDecorator', $filter); 153 $this->assertNull($filter->getMaxDate()); 154 $this->assertTrue(stubDate::now()->equals($filter->getMinDate())); 155 $this->assertType('stubDateFilter', $filter->getDecoratedFilter()); 156 } 157 158 /** 159 * test that the correct filter is created 160 * 161 * @test 162 */ 163 public function withMaxDateFromDate() 85 164 { 86 165 $maxDate = stubDate::now(); … … 101 180 { 102 181 $this->dateFilterAnnotation->setMaxDate('now'); 182 $filter = $this->dateFilterAnnotation->getFilter(); 183 $this->assertType('stubPeriodFilterDecorator', $filter); 184 $this->assertNull($filter->getMinDate()); 185 $this->assertTrue(stubDate::now()->equals($filter->getMaxDate())); 186 $this->assertType('stubDateFilter', $filter->getDecoratedFilter()); 187 } 188 189 /** 190 * test that the correct filter is created 191 * 192 * @test 193 */ 194 public function withMaxFromProviderWithDefaultMethod() 195 { 196 $this->dateFilterAnnotation->setMaxDateProviderClass(new stubReflectionClass('DateProvider')); 197 $filter = $this->dateFilterAnnotation->getFilter(); 198 $this->assertType('stubPeriodFilterDecorator', $filter); 199 $this->assertNull($filter->getMinDate()); 200 $this->assertTrue(stubDate::now()->equals($filter->getMaxDate())); 201 $this->assertType('stubDateFilter', $filter->getDecoratedFilter()); 202 } 203 204 /** 205 * test that the correct filter is created 206 * 207 * @test 208 */ 209 public function withMaxFromProviderWithOtherMethod() 210 { 211 $this->dateFilterAnnotation->setMaxDateProviderClass(new stubReflectionClass('DateProvider')); 212 $this->dateFilterAnnotation->setMaxDateProviderMethod('getMaxDateNonStatic'); 103 213 $filter = $this->dateFilterAnnotation->getFilter(); 104 214 $this->assertType('stubPeriodFilterDecorator', $filter);
