1 21 22 package org.opensubsystems.patterns.listdata.logic.impl; 23 24 import java.util.List ; 25 26 import org.opensubsystems.core.error.OSSException; 27 import org.opensubsystems.core.logic.impl.StatelessControllerImpl; 28 import org.opensubsystems.core.persist.DataFactoryManager; 29 import org.opensubsystems.core.util.CallContext; 30 import org.opensubsystems.core.util.GlobalConstants; 31 import org.opensubsystems.core.util.Messages; 32 import org.opensubsystems.patterns.listdata.data.ListDefinition; 33 import org.opensubsystems.patterns.listdata.data.ListOptions; 34 import org.opensubsystems.patterns.listdata.data.SimpleRule; 35 import org.opensubsystems.patterns.listdata.logic.ListController; 36 import org.opensubsystems.patterns.listdata.persist.ListFactory; 37 38 66 public class ListControllerImpl extends StatelessControllerImpl 67 implements ListController 68 { 69 71 74 protected static final String IMPL_LOCK = "IMPL_LOCK"; 75 76 78 81 private static final long serialVersionUID = -3369714862377860814L; 82 83 85 91 public Object [] getShowList( 92 ListOptions options 93 ) throws OSSException 94 { 95 ListFactory factory; 96 97 factory = preprocess(options); 98 99 ListDefinition definition; 100 int[] arrOrderColumnCodes; 101 String [] arrOrderDirections; 102 int iClientOrderCode = 0; 103 String strClientOrderDirection = ""; 104 105 definition = options.getDefinition(); 106 if (options.getPageSize() < 0) 110 { 111 options.setPageSize(definition.getPageSize()); 113 } 114 options.setBeginPosition(1); 115 if (options.getPageSize() < 1) 117 { 118 options.setPageSize(ListOptions.PAGE_SIZE_ALL); 119 options.setActualPage(1); 120 } 121 122 arrOrderColumnCodes = definition.getOrderColumnCodes(); 123 arrOrderDirections = definition.getOrderDirections(); 124 options.setOrdering(arrOrderColumnCodes, arrOrderDirections); 125 126 if ((arrOrderColumnCodes != null) && (arrOrderColumnCodes.length > 0)) 127 { 128 iClientOrderCode = arrOrderColumnCodes[0]; 129 strClientOrderDirection = arrOrderDirections[0]; 130 } 131 options.setClientOrderCode(iClientOrderCode); 132 options.setClientOrderDirection(strClientOrderDirection); 133 134 List objectList = null; 135 if (options.getSecurityFilter() == null) 136 { 137 CallContext.getInstance().getMessages().addMessage( 138 Messages.ACCESSRIGHT_ERRORS, "No rights to view list"); 139 } 140 else 141 { 142 objectList = factory.get(options); 143 } 144 145 return postprocess(options, objectList, factory); 146 } 147 148 154 public Object [] getSetDefinition( 155 ListOptions options 156 ) throws OSSException 157 { 158 ListFactory factory; 159 160 factory = preprocess(options); 161 162 ListDefinition definition; 163 int[] arrOrderColumnCodes; 164 String [] arrOrderDirections; 165 int iClientOrderCode = 0; 166 String strClientOrderDirection = ""; 167 168 definition = options.getDefinition(); 169 options.setPageSize(definition.getPageSize()); 170 options.setBeginPosition(1); 171 if (options.getPageSize() < 1) 173 { 174 options.setPageSize(ListOptions.PAGE_SIZE_ALL); 175 options.setActualPage(1); 176 } 177 178 arrOrderColumnCodes = definition.getOrderColumnCodes(); 179 arrOrderDirections = definition.getOrderDirections(); 180 options.setOrdering(arrOrderColumnCodes, arrOrderDirections); 181 182 if ((arrOrderColumnCodes != null) && (arrOrderColumnCodes.length > 0)) 183 { 184 iClientOrderCode = arrOrderColumnCodes[0]; 185 strClientOrderDirection = arrOrderDirections[0]; 186 } 187 options.setClientOrderCode(iClientOrderCode); 188 options.setClientOrderDirection(strClientOrderDirection); 189 190 List objectList = null; 191 if (options.getSecurityFilter() == null) 192 { 193 CallContext.getInstance().getMessages().addMessage( 194 Messages.ACCESSRIGHT_ERRORS, "No rights to view list"); 195 } 196 else 197 { 198 objectList = factory.get(options); 199 } 200 201 return postprocess(options, objectList, factory); 202 } 203 204 210 public Object [] getSetOrder( 211 ListOptions options 212 ) throws OSSException 213 { 214 ListFactory factory; 215 216 factory = preprocess(options); 217 218 int[] arrOrderColumnCodes; 219 String [] arrOrderDirections; 220 int iClientOrderCode = 0; 221 String strClientOrderDirection = ""; 222 223 options.setBeginPosition(1); 224 if (options.getPageSize() < 1) 226 { 227 options.setPageSize(ListOptions.PAGE_SIZE_ALL); 228 options.setActualPage(1); 229 } 230 231 arrOrderColumnCodes = options.getOrderColumnCodes(); 232 arrOrderDirections = options.getOrderDirections(); 233 if ((arrOrderColumnCodes != null) && (arrOrderColumnCodes.length > 0)) 234 { 235 iClientOrderCode = arrOrderColumnCodes[0]; 236 strClientOrderDirection = arrOrderDirections[0]; 237 } 238 options.setClientOrderCode(iClientOrderCode); 239 options.setClientOrderDirection(strClientOrderDirection); 240 241 List objectList = null; 242 if (options.getSecurityFilter() == null) 243 { 244 CallContext.getInstance().getMessages().addMessage( 245 Messages.ACCESSRIGHT_ERRORS, "No rights to view list"); 246 } 247 else 248 { 249 objectList = factory.get(options); 250 } 251 252 return postprocess(options, objectList, factory); 253 } 254 255 261 public Object [] getSetPageSize( 262 ListOptions options 263 ) throws OSSException 264 { 265 ListFactory factory; 266 267 factory = preprocess(options); 268 269 if (options.getPageSize() < 1) 270 { 271 options.setPageSize(ListOptions.PAGE_SIZE_ALL); 272 options.setBeginPosition(1); 273 options.setActualPage(1); 274 } 275 276 List objectList = null; 277 if (options.getSecurityFilter() == null) 278 { 279 CallContext.getInstance().getMessages().addMessage( 280 Messages.ACCESSRIGHT_ERRORS, "No rights to view list"); 281 } 282 else 283 { 284 objectList = factory.get(options); 285 } 286 287 return postprocess(options, objectList, factory); 288 } 289 290 296 public Object [] getPreviousPage( 297 ListOptions options 298 ) throws OSSException 299 { 300 ListFactory factory; 301 302 factory = preprocess(options); 303 304 options.setBeginPosition(options.getBeginPosition() - options.getPageSize()); 305 306 if (options.getBeginPosition() < 1) 307 { 308 options.setBeginPosition(1); 309 } 310 311 if (options.getPageSize() < 1) 312 { 313 options.setPageSize(ListOptions.PAGE_SIZE_ALL); 314 options.setBeginPosition(1); 315 options.setActualPage(1); 316 } 317 318 List objectList = null; 319 if (options.getSecurityFilter() == null) 320 { 321 CallContext.getInstance().getMessages().addMessage( 322 Messages.ACCESSRIGHT_ERRORS, "No rights to view list"); 323 } 324 else 325 { 326 objectList = factory.get(options); 327 } 328 329 return postprocess(options, objectList, factory); 330 } 331 332 338 public Object [] getNextPage( 339 ListOptions options 340 ) throws OSSException 341 { 342 ListFactory factory; 343 344 factory = preprocess(options); 345 346 if (options.getEndPosition() < 1) 347 { 348 options.setEndPosition(1); 349 } 350 351 options.setBeginPosition(options.getEndPosition() + 1); 352 353 if (options.getPageSize() < 1) 354 { 355 options.setPageSize(ListOptions.PAGE_SIZE_ALL); 356 options.setBeginPosition(1); 357 options.setActualPage(1); 358 } 359 360 List objectList = null; 361 if (options.getSecurityFilter() == null) 362 { 363 CallContext.getInstance().getMessages().addMessage( 364 Messages.ACCESSRIGHT_ERRORS, "No rights to view list"); 365 } 366 else 367 { 368 objectList = factory.get(options); 369 } 370 371 return postprocess(options, objectList, factory); 372 } 373 374 380 public Object [] getExactPage( 381 ListOptions options 382 ) throws OSSException 383 { 384 ListFactory factory; 385 386 factory = preprocess(options); 387 388 if (options.getActualPage() < 1) 389 { 390 options.setActualPage(1); 391 } 392 393 options.setBeginPosition( 394 ((options.getActualPage() - 1) * options.getPageSize()) + 1 395 ); 396 397 if (options.getPageSize() < 1) 398 { 399 options.setPageSize(ListOptions.PAGE_SIZE_ALL); 400 options.setBeginPosition(1); 401 options.setActualPage(1); 402 } 403 404 List objectList = null; 405 if (options.getSecurityFilter() == null) 406 { 407 CallContext.getInstance().getMessages().addMessage( 408 Messages.ACCESSRIGHT_ERRORS, "No rights to view list"); 409 } 410 else 411 { 412 objectList = factory.get(options); 413 } 414 415 return postprocess(options, objectList, factory); 416 } 417 418 419 425 public List getDefinitionList( 426 int iDataType 427 ) throws OSSException 428 { 429 return null; 430 } 431 432 438 public void constructor( 439 ) throws OSSException 440 { 441 } 443 444 446 457 protected SimpleRule getSecurityFilter( 458 ListFactory factory, 459 ListOptions options 460 ) throws OSSException 461 { 462 return SimpleRule.ALL_DATA; 464 } 465 466 474 protected ListDefinition getDefinition( 475 ListFactory factory, 476 ListOptions options 477 ) throws OSSException 478 { 479 ListDefinition definition; 480 481 definition = options.getDefinition(); 485 if (definition == null) 486 { 487 definition = factory.getDefaultListDefinition(); 488 489 if (GlobalConstants.ERROR_CHECKING) 490 { 491 assert definition != null : "Cannot get any usable list definition."; 492 } 493 494 if (((options.getShowColumnCodes() == null) 498 || (options.getShowColumnCodes().length == 0)) 499 && (definition.getShowColumnCodes() != null)) 500 { 501 options.setShowColumnCodes(definition.getShowColumnCodes()); 502 } 503 } 504 505 return definition; 506 } 507 508 515 protected ListFactory preprocess( 516 ListOptions options 517 ) throws OSSException 518 { 519 ListFactory factory; 520 521 factory = (ListFactory)DataFactoryManager.getInstance( 522 options.getListFactoryClass()); 523 524 ListDefinition definition; 525 526 definition = getDefinition(factory, options); 527 options.setDefinition(definition); 528 529 SimpleRule securityFilter; 530 531 securityFilter = getSecurityFilter(factory, options); 532 options.setSecurityFilter(securityFilter); 533 534 return factory; 535 } 536 537 549 protected Object [] postprocess( 550 ListOptions options, 551 List objectList, 552 ListFactory factory 553 ) throws OSSException 554 { 555 return new Object [] {options, objectList, new Integer (factory.getDataType())}; 556 } 557 } 558 | Popular Tags |