package com.wooki.services.activity.impl;
import org.apache.tapestry5.Block;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.runtime.Component;
import org.apache.tapestry5.services.ComponentSource;
import com.wooki.domain.model.activity.Activity;
import com.wooki.services.activity.ActivityBlockSource;
/**
* This services implements simply lookup the block in a page dedicated to block instantiation. The
* lookup strategy simply get the activity type simplename and try to find a block suffixed by
* 'Block'.
*
* @author ccordenier
*/
public class ActivityBlockSourceImpl implements ActivityBlockSource
{
private static final String BLOCK_SUFFIX = "Block";
private static final String ACTIVITY_BLOCK_PAGE = "activityDisplayBlocks";
private final ComponentSource source;
public ActivityBlockSourceImpl(ComponentSource source)
{
super();
this.source = source;
}
public Block getActivityBlock(Activity activity)
{
assert activity != null;
Component page = this.source.getPage(ACTIVITY_BLOCK_PAGE);
ComponentResources resources = page.getComponentResources();
Block result = resources.findBlock(activity.getClass().getSimpleName() + BLOCK_SUFFIX + "_"
+ activity.getType().toString());
if (result != null) { return result; }
result = resources.findBlock(activity.getClass().getSimpleName() + BLOCK_SUFFIX);
if (result != null) { return result; }
return resources.findBlock("empty");
}
}