1 23 24 package org.infoglue.cms.applications.managementtool.actions; 25 26 import java.util.Iterator ; 27 import java.util.List ; 28 29 import org.apache.log4j.Logger; 30 import org.exolab.castor.jdo.Database; 31 import org.infoglue.cms.applications.common.actions.InfoGlueAbstractAction; 32 import org.infoglue.cms.controllers.kernel.impl.simple.CastorDatabaseService; 33 import org.infoglue.cms.controllers.kernel.impl.simple.ContentController; 34 import org.infoglue.cms.controllers.kernel.impl.simple.LanguageController; 35 import org.infoglue.cms.controllers.kernel.impl.simple.RegistryController; 36 import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeController; 37 import org.infoglue.cms.entities.content.Content; 38 import org.infoglue.cms.entities.content.ContentVersion; 39 import org.infoglue.cms.entities.structure.SiteNode; 40 import org.infoglue.cms.entities.structure.SiteNodeVersion; 41 42 43 48 49 public class RebuildRegistryAction extends InfoGlueAbstractAction 50 { 51 private final static Logger logger = Logger.getLogger(RebuildRegistryAction.class.getName()); 52 53 private Integer repositoryId = null; 54 55 private String fileUrl = ""; 56 private String fileName = ""; 57 58 63 64 public String doInput() throws Exception 65 { 66 return "input"; 67 } 68 69 72 73 protected String doExecute() throws Exception 74 { 75 RegistryController registryController = RegistryController.getController(); 76 77 Database db = CastorDatabaseService.getDatabase(); 78 79 try 80 { 81 db.begin(); 82 83 84 List siteNodes = SiteNodeController.getController().getRepositorySiteNodes(this.repositoryId, db); 86 87 Iterator siteNodesIterator = siteNodes.iterator(); 88 while(siteNodesIterator.hasNext()) 89 { 90 SiteNode siteNode = (SiteNode)siteNodesIterator.next(); 91 logger.info("Going to index all versions of " + siteNode.getName()); 92 93 Iterator siteNodeVersionsIterator = siteNode.getSiteNodeVersions().iterator(); 94 while(siteNodeVersionsIterator.hasNext()) 95 { 96 SiteNodeVersion siteNodeVersion = (SiteNodeVersion)siteNodeVersionsIterator.next(); 97 registryController.updateSiteNodeVersion(siteNodeVersion, db); 98 } 99 } 100 101 List languages = LanguageController.getController().getLanguageList(this.repositoryId, db); 103 List contents = ContentController.getContentController().getRepositoryContents(this.repositoryId, db); 104 105 Iterator iterator = contents.iterator(); 106 while(iterator.hasNext()) 107 { 108 Content content = (Content)iterator.next(); 109 logger.info("Going to index all version of " + content.getName()); 110 111 Iterator versionsIterator = content.getContentVersions().iterator(); 112 while(versionsIterator.hasNext()) 113 { 114 ContentVersion contentVersion = (ContentVersion)versionsIterator.next(); 115 registryController.updateContentVersion(contentVersion, db); 116 } 117 } 118 119 db.commit(); 120 } 121 catch (Exception e) 122 { 123 logger.error("An error was found rebuilding the registry: " + e.getMessage(), e); 124 db.rollback(); 125 } 126 finally 127 { 128 db.close(); 129 } 130 131 return "success"; 132 } 133 134 135 public void setRepositoryId(Integer repositoryId) 136 { 137 this.repositoryId = repositoryId; 138 } 139 140 public Integer getRepositoryId() 141 { 142 return repositoryId; 143 } 144 145 } 146 | Popular Tags |