* @return - Activity object populated with the values from the ActivityDTO passed in.
*/
private Activity convertDTOToActivity(final ActivityDTO inActivityDTO,
final List<UserActionRequest> inUserActionRequestList)
{
Activity currentActivity = new Activity();
currentActivity.setAnnotation(inActivityDTO.getAnnotation());
// This will only occur in the Share verb scenario.
if (inActivityDTO.getBaseObjectProperties().containsKey("originalActivityId")
&& (inActivityDTO.getBaseObjectProperties().get("originalActivityId") != null))
{
try
{
currentActivity.setOriginalActivityId(new Long(inActivityDTO.getBaseObjectProperties().get(
"originalActivityId")));
}
catch (NumberFormatException nex)
{
logger.error("Error occurred parsing original activity id: "
+ inActivityDTO.getBaseObjectProperties().get("originalActivityId"), nex);
}
}
if (inActivityDTO.getBaseObjectProperties().containsKey("targetUrl")
&& inActivityDTO.getBaseObjectProperties().get("targetUrl") != null)
{
String url = inActivityDTO.getBaseObjectProperties().get("targetUrl");
if (url != null)
{
// has a link to share
logger.info("New activity shares link with url: " + url);
SharedResource sr = findOrInsertSharedResourceMapper.execute(new SharedResourceRequest(url, null));
if (sr != null)
{
logger.info("Found shared resource - id: " + sr.getId());
currentActivity.setSharedLink(sr);
String cacheKey = CacheKeys.SHARED_RESOURCE_BY_UNIQUE_KEY
+ sharedResourceCacheKeySuffixTransformer.transform(url);
// delete the cache immediately
logger.debug("Immediately deleting cache key while in transaction '" + cacheKey
+ "', then queuing it up for post-transaction cleanup to avoid race.");
cache.delete(cacheKey);
// queue up a cache delete for after this transaction is
// closed - to prevent race condition
inUserActionRequestList.add(new UserActionRequest("deleteCacheKeysAction", null,
(Serializable) Collections.singleton(cacheKey)));
}
}
}
currentActivity.setBaseObject(inActivityDTO.getBaseObjectProperties());
currentActivity.setBaseObjectType(inActivityDTO.getBaseObjectType());
currentActivity.setLocation(inActivityDTO.getLocation());
currentActivity.setMood(inActivityDTO.getMood());
if (inActivityDTO.getOriginalActor() != null)
{
currentActivity.setOriginalActorId(inActivityDTO.getOriginalActor().getUniqueIdentifier());
currentActivity.setOriginalActorType(inActivityDTO.getOriginalActor().getType());
}
currentActivity.setRecipientStreamScope(recipientRetriever.getStreamScope(inActivityDTO));
currentActivity.setVerb(inActivityDTO.getVerb());
currentActivity.setIsDestinationStreamPublic(recipientRetriever.isDestinationStreamPublic(inActivityDTO));
currentActivity.setAppId(inActivityDTO.getAppId());
currentActivity.setAppName(inActivityDTO.getAppName());
currentActivity.setAppSource(inActivityDTO.getAppSource());
currentActivity.setAppType(inActivityDTO.getAppType());
currentActivity.setShowInStream(inActivityDTO.getShowInStream());
return currentActivity;
}