package org.nightlabs.jfire.scripting.ui.tree;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import javax.jdo.FetchPlan;
import org.nightlabs.jfire.base.jdo.GlobalJDOManagerProvider;
import org.nightlabs.jfire.base.ui.jdo.tree.ActiveJDOObjectTreeController;
import org.nightlabs.jfire.jdo.notification.TreeNodeParentResolver;
import org.nightlabs.jfire.scripting.ScriptCategory;
import org.nightlabs.jfire.scripting.ScriptRegistryItem;
import org.nightlabs.jfire.scripting.ScriptRegistryItemParentResolver;
import org.nightlabs.jfire.scripting.dao.ScriptRegistryItemDAO;
import org.nightlabs.jfire.scripting.id.ScriptRegistryItemID;
import org.nightlabs.progress.ProgressMonitor;
/**
* @author Fitas Amine - fitas [at] nightlabs [dot] de
*/
public class ActiveScriptRegistryItemTreeController extends ActiveJDOObjectTreeController<ScriptRegistryItemID, ScriptRegistryItem, ScriptRegistryItemNode>
{
public static final String[] DEFAULT_SCRIPT_FETCH_GROUPS = new String[] {
FetchPlan.DEFAULT,
ScriptRegistryItem.FETCH_GROUP_NAME,
ScriptRegistryItem.FETCH_GROUP_PARAMETER_SET,
ScriptRegistryItem.FETCH_GROUP_PARENT,
ScriptRegistryItem.FETCH_GROUP_DESCRIPTION
};
@Override
protected ScriptRegistryItemNode createNode() {
return new ScriptRegistryItemNode();
}
@Override
protected TreeNodeParentResolver createTreeNodeParentResolver() {
// TODO Auto-generated method stub
return new ScriptRegistryItemParentResolver();
}
@Override
protected Class<? extends ScriptRegistryItem> getJDOObjectClass() {
return ScriptRegistryItem.class;
}
@Override
protected Collection<ScriptRegistryItem> retrieveChildren(
ScriptRegistryItemID parentID, ScriptRegistryItem parent,
ProgressMonitor monitor) {
Collection<ScriptRegistryItemID> scriptItemIDs = null;
if (parentID == null) {
try {
scriptItemIDs = ScriptRegistryItemDAO.sharedInstance().getTopLevelScriptRegistryItemIDs();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
else {
try {
if (ScriptCategory.class.equals(GlobalJDOManagerProvider.sharedInstance().getObjectID2PCClassMap().getPersistenceCapableClass(parentID)))
scriptItemIDs = ScriptRegistryItemDAO.sharedInstance().getScriptRegistryItemIDsForParent(parentID);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
if (scriptItemIDs == null) {
return Collections.emptyList();
}
return ScriptRegistryItemDAO.sharedInstance().getScriptRegistryItems(new ArrayList<ScriptRegistryItemID>(scriptItemIDs),
DEFAULT_SCRIPT_FETCH_GROUPS,
monitor
);
}
@Override
protected Collection<ScriptRegistryItem> retrieveJDOObjects(
Set<ScriptRegistryItemID> objectIDs, ProgressMonitor monitor) {
return ScriptRegistryItemDAO.sharedInstance().getScriptRegistryItems(new ArrayList<ScriptRegistryItemID>(objectIDs),
DEFAULT_SCRIPT_FETCH_GROUPS,
monitor);
}
@Override
protected void sortJDOObjects(List<ScriptRegistryItem> objects) {
// TODO Auto-generated method stub
}
}