1 23 24 package org.infoglue.cms.applications.contenttool.actions; 25 26 import java.util.ArrayList ; 27 import java.util.Iterator ; 28 import java.util.List ; 29 import java.util.StringTokenizer ; 30 31 import org.apache.log4j.Logger; 32 import org.infoglue.cms.applications.common.actions.InfoGlueAbstractAction; 33 import org.infoglue.cms.controllers.kernel.impl.simple.AvailableServiceBindingController; 34 import org.infoglue.cms.controllers.kernel.impl.simple.ContentController; 35 import org.infoglue.cms.controllers.kernel.impl.simple.QualifyerController; 36 import org.infoglue.cms.controllers.kernel.impl.simple.RepositoryController; 37 import org.infoglue.cms.entities.management.ServiceDefinitionVO; 38 import org.infoglue.cms.entities.structure.QualifyerVO; 39 import org.infoglue.cms.entities.structure.ServiceBindingVO; 40 import org.infoglue.cms.util.ConstraintExceptionBuffer; 41 42 45 46 public class ViewMultiSelectContentTreeForServiceBindingAction extends InfoGlueAbstractAction 47 { 48 private final static Logger logger = Logger.getLogger(ViewMultiSelectContentTreeForServiceBindingAction.class.getName()); 49 50 private static final long serialVersionUID = 1L; 51 52 private Integer siteNodeVersionId; 53 private Integer repositoryId; 54 private Integer availableServiceBindingId; 55 private Integer serviceDefinitionId; 56 private Integer bindingTypeId; 57 private ConstraintExceptionBuffer ceb; 58 private Integer contentId; 59 private ServiceDefinitionVO singleServiceDefinitionVO; 60 private String qualifyerXML; 61 private String tree; 62 private String exp=""; 63 private List repositories; 64 65 private String qualifyerString = ""; 67 private List qualifyers = null; 68 private Integer entityId; 69 private Integer direction; 70 private Integer oldSortOrder; 71 private Integer serviceBindingId; 72 73 private Integer requestedPosition; 75 76 private ServiceBindingVO serviceBindingVO = null; 77 78 79 public ViewMultiSelectContentTreeForServiceBindingAction() 80 { 81 this(new ServiceBindingVO()); 82 } 83 84 public ViewMultiSelectContentTreeForServiceBindingAction(ServiceBindingVO serviceBindingVO) 85 { 86 this.serviceBindingVO = serviceBindingVO; 87 this.ceb = new ConstraintExceptionBuffer(); 88 } 89 90 public void setSiteNodeVersionId(Integer siteNodeVersionId) 91 { 92 this.siteNodeVersionId = siteNodeVersionId; 93 } 94 95 public void setRepositoryId(Integer repositoryId) 96 { 97 this.repositoryId = repositoryId; 98 } 99 100 public void setAvailableServiceBindingId(Integer availableServiceBindingId) 101 { 102 this.availableServiceBindingId = availableServiceBindingId; 103 } 104 105 public void setServiceDefinitionId(Integer serviceDefinitionId) 106 { 107 this.serviceDefinitionId = serviceDefinitionId; 108 } 109 110 public void setBindingTypeId(Integer bindingTypeId) 111 { 112 this.serviceBindingVO.setBindingTypeId(bindingTypeId); 113 } 114 115 public void setPath(String path) 116 { 117 this.serviceBindingVO.setPath(path); 118 } 119 120 public Integer getSiteNodeVersionId() 121 { 122 return this.siteNodeVersionId; 123 } 124 125 public Integer getContentId() 126 { 127 return this.contentId; 128 } 129 130 public Integer getRepositoryId() 131 { 132 return this.repositoryId; 133 } 134 135 public Integer getAvailableServiceBindingId() 136 { 137 return this.availableServiceBindingId; 138 } 139 140 public Integer getServiceDefinitionId() 141 { 142 return this.singleServiceDefinitionVO.getServiceDefinitionId(); 143 } 144 145 public Integer getBindingTypeId() 146 { 147 return this.bindingTypeId; 148 } 149 150 public ServiceDefinitionVO getSingleServiceDefinitionVO() 151 { 152 return this.singleServiceDefinitionVO; 153 } 154 155 public void setQualifyerXML(String qualifyerXML) 156 { 157 this.qualifyerXML = qualifyerXML; 158 } 159 160 public String getQualifyerXML() 161 { 162 return this.qualifyerXML; 163 } 164 165 166 167 public void setQualifyerString(String qualifyerString) 169 { 170 this.qualifyerString = qualifyerString; 171 } 172 173 public void setEntityId(Integer entityId) 174 { 175 this.entityId = entityId; 176 } 177 178 public void setDirection(Integer direction) 179 { 180 this.direction = direction; 181 } 182 183 public void setOldSortOrder(Integer oldSortOrder) 184 { 185 this.oldSortOrder = oldSortOrder; 186 } 187 188 public String getQualifyerString() 189 { 190 return this.qualifyerString; 191 } 192 193 public List getQualifyers() 194 { 195 return this.qualifyers; 196 } 197 198 public void setServiceBindingId(Integer serviceBindingId) 199 { 200 this.serviceBindingId = serviceBindingId; 201 } 202 203 public Integer getServiceBindingId() 204 { 205 return this.serviceBindingId; 206 } 207 208 public String getTree() 209 { 210 return tree; 211 } 212 213 public void setTree(String string) 214 { 215 tree = string; 216 } 217 218 public String getCurrentAction() 219 { 220 return "ViewMultiSelectContentTreeForServiceBinding.action"; 221 } 222 223 public List getRepositories() 224 { 225 return repositories; 226 } 227 228 public String getQualifyerPath(String entityId) 229 { 230 try 231 { 232 return ContentController.getContentController().getContentVOWithId(new Integer (entityId)).getName(); 233 } 234 catch(Exception e) 235 { 236 e.printStackTrace(); 237 } 238 return ""; 239 } 240 241 private void initialize() throws Exception 242 { 243 this.repositories = RepositoryController.getController().getAuthorizedRepositoryVOList(this.getInfoGluePrincipal(), true); 244 245 List serviceDefinitions = AvailableServiceBindingController.getController().getServiceDefinitionVOList(this.availableServiceBindingId); 246 if(serviceDefinitions.size() == 1) 247 this.singleServiceDefinitionVO = (ServiceDefinitionVO)serviceDefinitions.get(0); 248 249 } 250 251 public String doExecute() throws Exception 252 { 253 this.repositories = RepositoryController.getController().getAuthorizedRepositoryVOList(this.getInfoGluePrincipal(), true); 254 255 if(this.repositoryId == null) 256 this.repositoryId = RepositoryController.getController().getFirstRepositoryVO().getRepositoryId(); 257 258 List serviceDefinitions = AvailableServiceBindingController.getController().getServiceDefinitionVOList(this.availableServiceBindingId); 259 if(serviceDefinitions == null || serviceDefinitions.size() == 0) 260 { 261 return "error"; 263 264 } 265 else if(serviceDefinitions.size() == 1) 266 { 267 this.singleServiceDefinitionVO = (ServiceDefinitionVO)serviceDefinitions.get(0); 268 if(this.serviceBindingId != null) 269 this.qualifyers = QualifyerController.getBindingQualifyers(this.serviceBindingId); 270 271 return "success"; 272 } 273 else 274 { 275 return "chooseService"; 276 } 277 } 278 279 public String doChangeRepository() throws Exception 280 { 281 this.qualifyers = parseQualifyers(qualifyerString); 282 283 initialize(); 284 285 return "success"; 286 } 287 288 public String doChangeTree() throws Exception 289 { 290 this.qualifyers = parseQualifyers(qualifyerString); 291 292 initialize(); 293 294 return "success"; 295 } 296 297 public String doAddQualifyer() throws Exception 298 { 299 if(this.qualifyerString != null && !this.qualifyerString.equals("")) 300 this.qualifyerString += "," + this.entityId; 301 else 302 this.qualifyerString += this.entityId; 303 304 this.qualifyers = parseQualifyers(qualifyerString); 305 306 initialize(); 307 308 return "success"; 309 } 310 311 public String doAddQualifyerAtPosition() throws Exception 312 { 313 if(this.qualifyerString == null || this.qualifyerString.equals("") || this.requestedPosition == null ) 314 this.qualifyerString += "," + this.entityId; 315 else 316 { 317 StringBuffer buf = new StringBuffer (); 318 StringTokenizer qs = new StringTokenizer (qualifyerString, ","); 319 int i = 0; 320 while (qs.hasMoreTokens()) 321 { 322 if(i++==this.requestedPosition.intValue()) 323 buf.append(this.entityId + ","); 324 325 String qToken = qs.nextToken(); 326 if(qToken.length() > 0) 327 buf.append(qToken + ","); 328 } 329 this.qualifyerString = buf.toString(); 330 } 331 this.qualifyers = parseQualifyers(qualifyerString); 332 333 initialize(); 334 335 return "success"; 336 } 337 public String doMoveQualifyerToPosition() throws Exception 338 { 339 this.entityId = new Integer (((QualifyerVO) parseQualifyers(qualifyerString).get(oldSortOrder.intValue())).getValue()); 340 this.qualifyers = parseQualifyers(qualifyerString); 341 this.qualifyers = deleteQualifyer(this.oldSortOrder, this.qualifyers); 342 this.qualifyerString = parseQualifyers(this.qualifyers); 343 if(requestedPosition.intValue()==-1) 344 return doAddQualifyer(); 345 346 if (oldSortOrder.intValue() < requestedPosition.intValue()) requestedPosition=new Integer (requestedPosition.intValue()-1); 347 return doAddQualifyerAtPosition(); 348 } 349 350 public String doMoveQualifyer() throws Exception 351 { 352 logger.info("------------------------------------->"); 353 this.qualifyers = parseQualifyers(qualifyerString); 354 this.qualifyers = moveQualifyer(this.direction, this.oldSortOrder, this.qualifyers); 355 356 initialize(); 357 358 return "success"; 359 } 360 361 362 public String doDeleteQualifyer() throws Exception 363 { 364 logger.info("------------------------------------->"); 365 this.qualifyers = parseQualifyers(qualifyerString); 366 this.qualifyers = deleteQualifyer(this.oldSortOrder, this.qualifyers); 367 368 initialize(); 369 370 return "success"; 371 } 372 373 private List parseQualifyers(String qualifyerString) 374 { 375 List qualifyers = new ArrayList (); 376 StringTokenizer st = new StringTokenizer (qualifyerString, ","); 377 int i = 0; 378 while (st.hasMoreTokens()) 379 { 380 String next = st.nextToken(); 381 QualifyerVO qualifyerVO = new QualifyerVO(); 382 qualifyerVO.setName("contentId"); 383 qualifyerVO.setValue(next); 384 qualifyerVO.setSortOrder(new Integer (i)); 385 qualifyers.add(qualifyerVO); 386 i++; 387 } 388 return qualifyers; 389 } 390 private String parseQualifyers(List qualifyers) 391 { 392 StringBuffer buf = new StringBuffer (); 393 Iterator i = qualifyers.iterator(); 394 while(i.hasNext()) 395 { 396 QualifyerVO q = (QualifyerVO) i.next(); 397 buf.append(q.getValue() + ","); 398 } 399 return buf.toString(); 400 } 401 402 403 private List moveQualifyer(Integer direction, Integer oldSortOrder, List qualifyers) 404 { 405 logger.info("-------------------------------------> About to move the qualifyer in direction " + direction + " and old sortOrder was " + oldSortOrder); 406 ArrayList newQualifyers = new ArrayList (); 407 408 Iterator iterator = qualifyers.iterator(); 409 int i = 0; 410 while(iterator.hasNext()) 411 { 412 QualifyerVO qualifyer = (QualifyerVO)iterator.next(); 413 logger.info("Found qualifyer " + qualifyer.getValue() + ":" + qualifyer.getSortOrder()); 414 if(qualifyer.getSortOrder().equals(oldSortOrder) && direction.intValue() == 0) { 416 logger.info("About to move it down..."); 417 if(iterator.hasNext()) 418 { 419 QualifyerVO nextQualifyer = (QualifyerVO)iterator.next(); 420 logger.info("nextQualifyer " + nextQualifyer.getValue() + ":" + nextQualifyer.getSortOrder()); 421 nextQualifyer.setSortOrder(qualifyer.getSortOrder()); 422 logger.info("Set the nextQualifyer sortOrder to " + qualifyer.getSortOrder()); 423 qualifyer.setSortOrder(new Integer (qualifyer.getSortOrder().intValue() + 1)); 424 logger.info("Set the qualifyer sortOrder to " + qualifyer.getSortOrder()); 425 newQualifyers.add(nextQualifyer); 426 newQualifyers.add(qualifyer); 427 } 428 else 429 newQualifyers.add(qualifyer); 430 431 } 432 else if(qualifyer.getSortOrder().equals(oldSortOrder) && direction.intValue() == 1) { 434 logger.info("About to move it up..."); 435 if(i > 0) 436 { 437 QualifyerVO previousQualifyer = (QualifyerVO)newQualifyers.get(i-1); 438 logger.info("Previous qualifyer " + previousQualifyer.getValue() + ":" + previousQualifyer.getSortOrder()); 439 previousQualifyer.setSortOrder(qualifyer.getSortOrder()); 440 logger.info("Set the previous qualifyer sortOrder to " + qualifyer.getSortOrder()); 441 qualifyer.setSortOrder(new Integer (qualifyer.getSortOrder().intValue() - 1)); 442 logger.info("Set the qualifyer sortOrder to " + qualifyer.getSortOrder()); 443 newQualifyers.remove(qualifyer); 444 newQualifyers.add(i-1, qualifyer); 445 } 446 else 447 newQualifyers.add(qualifyer); 448 } 449 else 450 newQualifyers.add(qualifyer); 451 452 i++; 453 } 454 455 return newQualifyers; 456 } 457 458 private List deleteQualifyer(Integer oldSortOrder, List qualifyers) 459 { 460 ArrayList newQualifyers = new ArrayList (); 461 462 Iterator iterator = qualifyers.iterator(); 463 int i = 0; 464 while(iterator.hasNext()) 465 { 466 QualifyerVO qualifyer = (QualifyerVO)iterator.next(); 467 logger.info("-------------------------------->Found qualifyer " + qualifyer.getValue() + ":" + qualifyer.getSortOrder()); 468 if(!qualifyer.getSortOrder().equals(oldSortOrder)) 469 { 470 logger.info("qualifyer:" + qualifyer.getSortOrder()); 471 logger.info("qualifyer:" + qualifyer.getValue()); 472 logger.info("Adding this qualifyer again as it did not match the delete-one:" + oldSortOrder); 473 qualifyer.setSortOrder(new Integer (i)); 474 newQualifyers.add(qualifyer); 475 i++; 476 } 477 478 } 479 480 return newQualifyers; 481 } 482 483 486 public String getExp() { 487 return exp; 488 } 489 490 493 public void setExp(String string) { 494 exp = string; 495 } 496 497 500 public Integer getRequestedPosition() { 501 return requestedPosition; 502 } 503 504 507 public void setRequestedPosition(Integer integer) { 508 requestedPosition = integer; 509 } 510 511 } 512 | Popular Tags |