return referenceBeanList;
}
private ReferenceBean getReferenceBeanFromRegistryVO(RegistryVO registryVO, Map<String, ReferenceBean> entries, Map<String,Boolean> checkedLanguageVersions, boolean onlyLatestVersion, boolean onlyOneVersionPerLanguage, Database db)
{
ReferenceBean result = null;
boolean add = true;
String key = "" + registryVO.getReferencingEntityCompletingName() + "_" + registryVO.getReferencingEntityCompletingId();
ReferenceBean existingReferenceBean = (ReferenceBean)entries.get(key);
if(existingReferenceBean == null)
{
existingReferenceBean = new ReferenceBean();
logger.info("Adding referenceBean to entries with key:" + key);
entries.put(key, existingReferenceBean);
result = existingReferenceBean;
}
else if (logger.isDebugEnabled())
{
logger.info("Already had ReferenceBean for key: " + key);
}
ReferenceVersionBean referenceVersionBean = new ReferenceVersionBean();
if(registryVO.getReferencingEntityName().indexOf("Content") > -1)
{
try
{
logger.info("RegistryVO references Content");
ContentVersionVO contentVersion = null;
try
{
contentVersion = ContentVersionController.getContentVersionController().getContentVersionVOWithId(new Integer(registryVO.getReferencingEntityId()), db);
}
catch(Exception ex)
{
add = false;
result = null;
logger.info("content:" + registryVO.getReferencingEntityId() + " did not exist - skipping..");
}
if (contentVersion != null)
{
if (!contentVersion.getIsActive())
{
add = false;
logger.info("ContentVersion was not active. Will not add to reference list. ContentVersion.id: " + contentVersion.getContentVersionId());
}
else
{
ContentVO contentVO = ContentController.getContentController().getContentVOWithId(contentVersion.getContentId(), db);
if (contentVO.getIsDeleted())
{
add = false;
logger.info("Content is deleted. Will not add to reference list. Content.id: " + contentVO.getContentId());
}
else
{
Boolean hasVersion = checkedLanguageVersions.get("" + contentVersion.getContentId() + "_" + contentVersion.getLanguageId());
if(hasVersion != null && onlyOneVersionPerLanguage)
{
add = false;
//referenceBeanList.remove(existingReferenceBean);
}
else if (onlyLatestVersion)
{
ContentVersionVO latestContentVersion = ContentVersionController.getContentVersionController().getLatestActiveContentVersionVO(contentVersion.getContentId(), contentVersion.getLanguageId(), ContentVersionVO.WORKING_STATE, db);
if (logger.isDebugEnabled())
{
logger.info("Latest version in working state for content.id: " + contentVersion.getContentId() + ". latestContentVersion.id: " + (latestContentVersion == null ? "null" : latestContentVersion.getContentVersionId()));
}
if (latestContentVersion != null && latestContentVersion.getContentVersionId().intValue() != contentVersion.getContentVersionId().intValue())
{
logger.debug("ContentVersion was not latest version. Will not add. ContentVersion-Id: " + contentVersion.getId());
add = false;
}
}
if (add)
{
existingReferenceBean.setName(contentVO.getName());
existingReferenceBean.setPath(ContentController.getContentController().getContentPath(contentVO.getContentId(), false, true, db));
existingReferenceBean.setReferencingCompletingObject(contentVO);
String contactPersonEmail = getContactPersonEmail(contentVO, db);
existingReferenceBean.setContactPersonEmail(contactPersonEmail);
contentVersion.setLanguageName(LanguageController.getController().getLanguageVOWithId(contentVersion.getLanguageId(), db).getName());
referenceVersionBean.setReferencingObject(contentVersion);
referenceVersionBean.getRegistryVOList().add(registryVO);
checkedLanguageVersions.put("" + contentVersion.getContentId() + "_" + contentVersion.getLanguageId(), new Boolean(true));
}
}
}
}
}
catch(Exception ex)
{
add = false;
result = null;
logger.error("Error when creating reference bean from Registry entry for Content. Message: " + ex.getMessage() + ". Class: " + ex.getClass());
logger.warn("Error when creating reference bean from Registry entry for Content.", ex);
}
}
else
{
try
{
logger.debug("RegistryVO references SiteNode");
SiteNodeVersionVO siteNodeVersion = null;
try
{
siteNodeVersion = SiteNodeVersionController.getController().getSiteNodeVersionVOWithId(new Integer(registryVO.getReferencingEntityId()), db);
}
catch (Exception ex)
{
add = false;
result = null;
logger.info("siteNode:" + registryVO.getReferencingEntityId() + " did not exist - skipping..");
}
if (siteNodeVersion != null)
{
logger.info("siteNodeVersion:" + siteNodeVersion);
if (!siteNodeVersion.getIsActive())
{
add = false;
logger.debug("SiteNodeVersion was not active. Will not add to reference list. SiteNodeVersion.id: " + siteNodeVersion.getSiteNodeVersionId());
}
else
{
SiteNodeVO siteNodeVO = SiteNodeController.getSiteNodeVOWithId(siteNodeVersion.getSiteNodeId(), db);
if (siteNodeVO.getIsDeleted())
{
add = false;
logger.debug("SiteNode is deleted. Will not add to reference list. Content.id: " + siteNodeVO.getSiteNodeId());
}
else
{
if (onlyLatestVersion)
{
SiteNodeVersionVO latestSiteNodeVersion = SiteNodeVersionController.getController().getLatestActiveSiteNodeVersionVO(db, siteNodeVersion.getSiteNodeId(), SiteNodeVersionVO.WORKING_STATE);
if (latestSiteNodeVersion != null && latestSiteNodeVersion.getSiteNodeVersionId() != siteNodeVersion.getSiteNodeVersionId())
{
logger.debug("ContentVersion was not latest version. Will not add. ContentVersion-Id: " + siteNodeVersion.getId());
add = false;
}
}
if (add)
{
existingReferenceBean.setName(siteNodeVO.getName());
existingReferenceBean.setPath(SiteNodeController.getController().getSiteNodePath(siteNodeVO, false, true, db));
existingReferenceBean.setReferencingCompletingObject(siteNodeVO);
referenceVersionBean.setReferencingObject(siteNodeVersion);
String contactPersonEmail = getContactPersonEmail(siteNodeVO, db);
existingReferenceBean.setContactPersonEmail(contactPersonEmail);
referenceVersionBean.getRegistryVOList().add(registryVO);
}
}
}
}
}
catch(Exception ex)
{
add = false;
result = null;
logger.error("Error when creating reference bean from Registry entry for SiteNode. Message: " + ex.getMessage() + ". Class: " + ex.getClass());
logger.warn("Error when creating reference bean from Registry entry for SiteNode.", ex);
}
}
if(add)
{
boolean exists = false;
ReferenceVersionBean existingReferenceVersionBean = null;
Iterator<ReferenceVersionBean> versionsIterator = existingReferenceBean.getVersions().iterator();
while(versionsIterator.hasNext())
{
existingReferenceVersionBean = (ReferenceVersionBean)versionsIterator.next();
if(existingReferenceVersionBean.getReferencingObject().equals(referenceVersionBean.getReferencingObject()))
{
exists = true;
break;
}
}
if(!exists)
existingReferenceBean.getVersions().add(referenceVersionBean);
else
existingReferenceVersionBean.getRegistryVOList().add(registryVO);
logger.debug("Number of versions: " + existingReferenceBean.getVersions());
}
return result;
}