package org.nightlabs.jfire.asterisk.ui.asteriskserver;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import javax.jdo.FetchPlan;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.ui.IEditorInput;
import org.nightlabs.base.ui.table.TableLabelProvider;
import org.nightlabs.jdo.NLJDOHelper;
import org.nightlabs.jfire.asterisk.AsteriskServer;
import org.nightlabs.jfire.base.ui.entity.tree.ActiveJDOEntityTreeCategory;
import org.nightlabs.jfire.pbx.PhoneSystem;
import org.nightlabs.jfire.pbx.dao.PhoneSystemDAO;
import org.nightlabs.jfire.pbx.id.PhoneSystemID;
import org.nightlabs.progress.ProgressMonitor;
/**
* @author Chairat Kongarayawetchakun <!-- chairat [AT] nightlabs [DOT] de -->
*/
public class EntityTreeCategoryAsteriskServer
extends ActiveJDOEntityTreeCategory<PhoneSystemID, AsteriskServer> {
public static String[] FETCH_GROUPS_ASTERISK_SERVER = new String[] {
FetchPlan.DEFAULT, AsteriskServer.FETCH_GROUP_NAME
};
/*
* (non-Javadoc)
* @see org.nightlabs.jfire.base.ui.entity.tree.ActiveJDOEntityTreeCategory#getJDOObjectClass()
*/
@Override
protected Class<AsteriskServer> getJDOObjectClass() {
return AsteriskServer.class;
}
/*
* (non-Javadoc)
* @see org.nightlabs.jfire.base.ui.entity.tree.ActiveJDOEntityTreeCategory#retrieveJDOObjects(java.util.Set, org.nightlabs.progress.ProgressMonitor)
*/
@Override
protected Collection<AsteriskServer> retrieveJDOObjects(Set<PhoneSystemID> objectIDs, ProgressMonitor monitor) {
List<PhoneSystem> phoneSystems = PhoneSystemDAO.sharedInstance().getPhoneSystems(
objectIDs,
FETCH_GROUPS_ASTERISK_SERVER, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor
);
Collection<AsteriskServer> result = new ArrayList<AsteriskServer>(phoneSystems.size());
for (PhoneSystem phoneSystem : phoneSystems) {
if (phoneSystem instanceof AsteriskServer)
result.add((AsteriskServer) phoneSystem);
}
return result;
}
@Override
protected Collection<AsteriskServer> retrieveJDOObjects(ProgressMonitor monitor) {
Collection<AsteriskServer> result = PhoneSystemDAO.sharedInstance().getPhoneSystems(AsteriskServer.class, true,
FETCH_GROUPS_ASTERISK_SERVER, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor
);
return result;
}
/*
* (non-Javadoc)
* @see org.nightlabs.jfire.base.ui.entity.tree.ActiveJDOEntityTreeCategory#sortJDOObjects(java.util.List)
*/
@Override
protected void sortJDOObjects(List<AsteriskServer> objects) {
}
/*
* (non-Javadoc)
* @see org.nightlabs.base.ui.entity.tree.IEntityTreeCategory#createEditorInput(java.lang.Object)
*/
@Override
public IEditorInput createEditorInput(Object o) {
AsteriskServer asteriskServer = (AsteriskServer)o;
PhoneSystemID asteriskServerID = PhoneSystemID.create(asteriskServer.getOrganisationID(), asteriskServer.getPhoneSystemID());
return new AsteriskServerEditorInput(asteriskServerID);
}
/*
* (non-Javadoc)
* @see org.nightlabs.base.ui.entity.tree.IEntityTreeCategory#createLabelProvider()
*/
@Override
public ITableLabelProvider createLabelProvider() {
return new TableLabelProvider() {
@Override
public String getColumnText(Object element, int columnIndex) {
switch (columnIndex) {
case 0:
if (element instanceof AsteriskServer)
return ((AsteriskServer) element).getName().getText();
else
return String.valueOf(element);
default:
return ""; //$NON-NLS-1$
}
}
@Override
public String getText(Object element) {
if (element instanceof AsteriskServer)
return ((AsteriskServer) element).getName().getText();
else
return String.valueOf(element);
}
};
}
}