1 23 24 package org.infoglue.cms.applications.managementtool.actions; 25 26 import java.util.ArrayList ; 27 import java.util.Collections ; 28 import java.util.Iterator ; 29 import java.util.List ; 30 31 import org.apache.log4j.Logger; 32 import org.dom4j.Document; 33 import org.dom4j.Element; 34 import org.dom4j.Node; 35 import org.infoglue.cms.applications.common.VisualFormatter; 36 import org.infoglue.cms.applications.common.actions.InfoGlueAbstractAction; 37 import org.infoglue.cms.controllers.kernel.impl.simple.CategoryController; 38 import org.infoglue.cms.controllers.kernel.impl.simple.ContentController; 39 import org.infoglue.cms.controllers.kernel.impl.simple.ContentTypeDefinitionController; 40 import org.infoglue.cms.controllers.kernel.impl.simple.DigitalAssetController; 41 import org.infoglue.cms.controllers.kernel.impl.simple.LanguageController; 42 import org.infoglue.cms.controllers.kernel.impl.simple.PropertiesCategoryController; 43 import org.infoglue.cms.controllers.kernel.impl.simple.RepositoryController; 44 import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeController; 45 import org.infoglue.cms.entities.content.ContentVO; 46 import org.infoglue.cms.entities.management.ContentTypeDefinitionVO; 47 import org.infoglue.cms.entities.management.LanguageVO; 48 import org.infoglue.cms.entities.management.RepositoryVO; 49 import org.infoglue.cms.entities.structure.QualifyerVO; 50 import org.infoglue.cms.entities.structure.SiteNodeVO; 51 import org.infoglue.cms.exception.Bug; 52 import org.infoglue.cms.exception.SystemException; 53 import org.infoglue.cms.util.CmsPropertyHandler; 54 import org.infoglue.cms.util.dom.DOMBuilder; 55 56 public abstract class ViewEntityPropertiesAction extends InfoGlueAbstractAction 57 { 58 private final static Logger logger = Logger.getLogger(ViewEntityPropertiesAction.class.getName()); 59 60 private static CategoryController categoryController = CategoryController.getController(); 61 private static PropertiesCategoryController propertiesCategoryController = PropertiesCategoryController.getController(); 62 63 private String currentAction = ""; 64 private String updateAction = ""; 65 private String cancelAction = ""; 66 67 private String toolbarKey = ""; 68 private String titleKey = ""; 69 private String arguments = ""; 70 71 private String entityName = null; 72 private Integer entityId = null; 73 74 private String ownerEntityName = null; 75 private String ownerEntityId = null; 76 77 private List availableLanguages; 78 private List contentTypeDefinitionVOList; 79 private List contentTypeAttributes; 80 private Integer contentTypeDefinitionId; 81 private Integer languageId; 82 private String attributeName = ""; 83 private String textAreaId = ""; 84 85 private ContentTypeDefinitionVO contentTypeDefinitionVO; 86 87 public abstract String getXML(); 88 89 public abstract String getCancelAddress() throws Exception ; 90 91 public abstract String getReturnAddress() throws Exception ; 92 93 public void initialize() throws SystemException, Bug 94 { 95 this.setAvailableLanguages(LanguageController.getController().getLanguageVOList()); 96 97 if(this.getLanguageId() == null && this.getAvailableLanguages().size() > 0) 98 this.setLanguageId(((LanguageVO)this.getAvailableLanguages().get(0)).getLanguageId()); 99 100 logger.info("Language:" + this.languageId); 101 } 102 103 104 108 109 public String getAttributeValue(String key) 110 { 111 String value = ""; 112 try 113 { 114 String xml = this.getXML(); 115 if(xml != null) 116 { 117 DOMBuilder domBuilder = new DOMBuilder(); 118 119 Document document = domBuilder.getDocument(xml); 120 121 Node node = document.getRootElement().selectSingleNode("attributes/" + key); 122 if(node != null) 123 { 124 value = node.getStringValue(); 125 if(value != null) 126 value = new VisualFormatter().escapeHTML(value); 127 } 128 } 129 } 130 catch(Exception e) 131 { 132 e.printStackTrace(); 133 } 134 135 return value; 136 } 137 138 142 143 public String getUnescapedAttributeValue(String key) 144 { 145 String value = ""; 146 try 147 { 148 String xml = this.getXML(); 149 150 int startTagIndex = xml.indexOf("<" + key + ">"); 151 int endTagIndex = xml.indexOf("]]></" + key + ">"); 152 153 if(startTagIndex > 0 && startTagIndex < xml.length() && endTagIndex > startTagIndex && endTagIndex < xml.length()) 154 { 155 value = xml.substring(startTagIndex + key.length() + 11, endTagIndex); 156 } 157 } 158 catch(Exception e) 159 { 160 e.printStackTrace(); 161 } 162 163 return value; 164 } 165 166 170 171 public String getDigitalAssetUrl(Integer digitalAssetId) throws Exception 172 { 173 String imageHref = null; 174 try 175 { 176 imageHref = DigitalAssetController.getDigitalAssetUrl(digitalAssetId); 177 } 178 catch(Exception e) 179 { 180 logger.warn("We could not get the url of the digitalAsset: " + e.getMessage(), e); 181 imageHref = e.getMessage(); 182 } 183 184 return imageHref; 185 } 186 187 188 192 193 public String getDigitalAssetThumbnailUrl(Integer digitalAssetId) throws Exception 194 { 195 String imageHref = null; 196 try 197 { 198 imageHref = DigitalAssetController.getDigitalAssetThumbnailUrl(digitalAssetId); 199 } 200 catch(Exception e) 201 { 202 logger.warn("We could not get the url of the thumbnail: " + e.getMessage(), e); 203 imageHref = e.getMessage(); 204 } 205 206 return imageHref; 207 } 208 209 215 216 public String getQualifyerPath(String entity, String entityId) 217 { 218 StringBuffer sb = new StringBuffer (""); 219 try 220 { 221 if(entity.equalsIgnoreCase("Content")) 222 { 223 ContentVO contentVO = ContentController.getContentController().getContentVOWithId(new Integer (entityId)); 224 sb.insert(0, contentVO.getName() + "/"); 225 while(contentVO.getParentContentId() != null) 226 { 227 contentVO = ContentController.getContentController().getContentVOWithId(contentVO.getParentContentId()); 228 sb.insert(0, contentVO.getName() + "/"); 229 } 230 } 231 else if(entity.equalsIgnoreCase("SiteNode")) 232 { 233 SiteNodeVO siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(new Integer (entityId)); 234 sb.insert(0, siteNodeVO.getName() + "/"); 235 while(siteNodeVO.getParentSiteNodeId() != null) 236 { 237 siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(siteNodeVO.getParentSiteNodeId()); 238 sb.insert(0, siteNodeVO.getName() + "/"); 239 } 240 } 241 } 242 catch(Exception e) 243 { 244 e.printStackTrace(); 245 } 246 return sb.toString(); 247 } 248 249 254 255 public List getContentRelationQualifyers(String qualifyerXML) 256 { 257 logger.info("Content qualifyerXML:" + qualifyerXML); 258 return parseQualifyersFromXML(qualifyerXML, "contentId"); 259 } 260 261 266 267 public List getSiteNodeRelationQualifyers(String qualifyerXML) 268 { 269 logger.info("Content qualifyerXML:" + qualifyerXML); 270 return parseQualifyersFromXML(qualifyerXML, "siteNodeId"); 271 } 272 273 278 279 private List parseQualifyersFromXML(String qualifyerXML, String currentEntityIdentifyer) 280 { 281 List qualifyers = new ArrayList (); 282 283 if(qualifyerXML == null || qualifyerXML.length() == 0) 284 return qualifyers; 285 286 try 287 { 288 Document document = new DOMBuilder().getDocument(qualifyerXML); 289 290 String entity = document.getRootElement().attributeValue("entity"); 291 292 List children = document.getRootElement().elements(); 293 Iterator i = children.iterator(); 294 while(i.hasNext()) 295 { 296 Element child = (Element)i.next(); 297 String id = child.getStringValue(); 298 299 QualifyerVO qualifyerVO = new QualifyerVO(); 300 qualifyerVO.setName(currentEntityIdentifyer); 301 qualifyerVO.setValue(id); 302 qualifyerVO.setPath(this.getQualifyerPath(entity, id)); 303 qualifyers.add(qualifyerVO); 305 } 306 } 307 catch(Exception e) 308 { 309 e.printStackTrace(); 310 } 311 312 return qualifyers; 313 } 314 315 316 319 320 public List getDefinedCategoryKeys() 321 { 322 try 323 { 324 if(getContentTypeDefinitionVO() != null) 325 return ContentTypeDefinitionController.getController().getDefinedCategoryKeys(getContentTypeDefinitionVO().getSchemaValue()); 326 } 327 catch(Exception e) 328 { 329 logger.warn("We could not fetch the list of defined category keys: " + e.getMessage(), e); 330 } 331 332 return Collections.EMPTY_LIST; 333 } 334 335 340 341 public List getAvailableCategories(Integer categoryId) 342 { 343 try 344 { 345 String protectCategories = CmsPropertyHandler.getProtectCategories(); 346 if(protectCategories != null && protectCategories.equalsIgnoreCase("true")) 347 return getCategoryController().getAuthorizedActiveChildren(categoryId, this.getInfoGluePrincipal()); 348 else 349 return getCategoryController().findAllActiveChildren(categoryId); 350 } 351 catch(Exception e) 352 { 353 logger.warn("We could not fetch the list of categories: " + e.getMessage(), e); 354 } 355 356 return Collections.EMPTY_LIST; 357 } 358 359 360 public CategoryController getCategoryController() 361 { 362 return categoryController; 363 } 364 365 public PropertiesCategoryController getPropertiesCategoryController() 366 { 367 return propertiesCategoryController; 368 } 369 370 public String getArguments() 371 { 372 return arguments; 373 } 374 375 public String getTitleKey() 376 { 377 return titleKey; 378 } 379 380 public String getToolbarKey() 381 { 382 return toolbarKey; 383 } 384 385 public String getCurrentAction() 386 { 387 return currentAction; 388 } 389 390 public void setCurrentAction(String currentAction) 391 { 392 this.currentAction = currentAction; 393 } 394 395 public String getEntityName() 396 { 397 return entityName; 398 } 399 400 public void setEntityName(String entityName) 401 { 402 this.entityName = entityName; 403 } 404 405 public String getUpdateAction() 406 { 407 return updateAction; 408 } 409 410 public void setUpdateAction(String updateAction) 411 { 412 this.updateAction = updateAction; 413 } 414 415 public void setArguments(String arguments) 416 { 417 this.arguments = arguments; 418 } 419 420 public void setTitleKey(String titleKey) 421 { 422 this.titleKey = titleKey; 423 } 424 425 public void setToolbarKey(String toolbarKey) 426 { 427 this.toolbarKey = toolbarKey; 428 } 429 430 public Integer getEntityId() 431 { 432 return entityId; 433 } 434 435 public void setEntityId(Integer entityId) 436 { 437 this.entityId = entityId; 438 } 439 440 public String getOwnerEntityId() 441 { 442 return ownerEntityId; 443 } 444 445 public void setOwnerEntityId(String ownerEntityId) 446 { 447 this.ownerEntityId = ownerEntityId; 448 } 449 450 public String getOwnerEntityName() 451 { 452 return ownerEntityName; 453 } 454 455 public void setOwnerEntityName(String ownerEntityName) 456 { 457 this.ownerEntityName = ownerEntityName; 458 } 459 460 public List getAvailableLanguages() 461 { 462 return availableLanguages; 463 } 464 465 public void setAvailableLanguages(List availableLanguages) 466 { 467 this.availableLanguages = availableLanguages; 468 } 469 470 public Integer getContentTypeDefinitionId() 471 { 472 return contentTypeDefinitionId; 473 } 474 475 public void setContentTypeDefinitionId(Integer contentTypeDefinitionId) 476 { 477 this.contentTypeDefinitionId = contentTypeDefinitionId; 478 } 479 480 public ContentTypeDefinitionVO getContentTypeDefinitionVO() 481 { 482 return contentTypeDefinitionVO; 483 } 484 485 public void setContentTypeDefinitionVO(ContentTypeDefinitionVO contentTypeDefinitionVO) 486 { 487 this.contentTypeDefinitionVO = contentTypeDefinitionVO; 488 } 489 490 public List getContentTypeDefinitionVOList() 491 { 492 return contentTypeDefinitionVOList; 493 } 494 495 public void setContentTypeDefinitionVOList(List contentTypeDefinitionVOList) 496 { 497 this.contentTypeDefinitionVOList = contentTypeDefinitionVOList; 498 } 499 500 public Integer getLanguageId() 501 { 502 return languageId; 503 } 504 505 public void setLanguageId(Integer languageId) 506 { 507 this.languageId = languageId; 508 } 509 510 public String getTextAreaId() 511 { 512 return textAreaId; 513 } 514 515 public void setTextAreaId(String textAreaId) 516 { 517 this.textAreaId = textAreaId; 518 } 519 520 public String getAttributeName() 521 { 522 return attributeName; 523 } 524 525 public void setAttributeName(String attributeName) 526 { 527 this.attributeName = attributeName; 528 } 529 530 public List getContentTypeAttributes() 531 { 532 return contentTypeAttributes; 533 } 534 535 public void setAttributes(List contentTypeAttributes) 536 { 537 this.contentTypeAttributes = contentTypeAttributes; 538 } 539 540 541 public String getCancelAction() 542 { 543 return cancelAction; 544 } 545 546 public void setCancelAction(String cancelAction) 547 { 548 this.cancelAction = cancelAction; 549 } 550 } 551 | Popular Tags |