package hermes.ext.seebeyond.jcaps;
import hermes.Domain;
import hermes.Hermes;
import hermes.HermesException;
import hermes.browser.HermesBrowser;
import hermes.config.DestinationConfig;
import hermes.ext.seebeyond.SeeBeyondAdmin;
import java.util.Properties;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.swing.ProgressMonitor;
import org.apache.log4j.Logger;
public class SeeBeyondJCAPSAdmin extends SeeBeyondAdmin {
private static final Logger log = Logger.getLogger(SeeBeyondJCAPSAdmin.class);
/**
*
*/
public SeeBeyondJCAPSAdmin(SeeBeyondJCAPSAdminFactory factory, Hermes hermes, ConnectionFactory connectionFactory)
throws JMSException {
super(hermes);
// Set context classloader from Hermes.
this.connectionFactory = connectionFactory;
this.factory = factory;
if (factory.getLogicalHostIP() == null
|| factory.getLogicalHostPort() == null
|| factory.getLogicalHostUser() == null
|| factory.getLogicalHostUserPassword() == null) {
throw new HermesException("Edit the session and provide the following plugin properties: \r\n"
+ "logicalHost, logicalHostPort, logicalHostUser, logicalHostUserPassword");
} else {
seeBeyondAdmin = new SunSeeBeyond51Admin(factory, hermes, connectionFactory);
}
}
@Override
public int truncate(DestinationConfig dConfig) throws JMSException {
ProgressMonitor monitor = new ProgressMonitor(HermesBrowser.getBrowser(), "Deleting from " + dConfig.getName(),
"Discovering size of " + dConfig.getName(), 0, 102);
int rval = 0;
String destName = getRealDestinationName(dConfig);
monitor.setMillisToDecideToPopup(100);
monitor.setMillisToPopup(400);
try {
if (dConfig.getDomain() == Domain.QUEUE.getId()) {
Properties queueStats = seeBeyondAdmin.getQueueStatistics(destName);
int start = Integer.parseInt(queueStats.getProperty("MIN_SEQ"));
int finish = Integer.parseInt(queueStats.getProperty("MAX_SEQ"));
for (int i = start; i <= finish; i++) {
// Properties headerProps = (Properties) headers;
seeBeyondAdmin.deleteQueueMessage(destName, "" + i);
rval++;
if (monitor.isCanceled())
return rval;
}
} else if (dConfig.getDomain() == Domain.QUEUE.getId()){
Properties queueStats = seeBeyondAdmin.getTopicStatistics(destName);
int start = Integer.parseInt(queueStats.getProperty("FIRST_SEQ"));
int finish = Integer.parseInt(queueStats.getProperty("LAST_SEQ"));
for (int i = start; i <= finish; i++) {
// Properties headerProps = (Properties) headers;
seeBeyondAdmin.deleteTopicMessage(destName, "" + i);
rval++;
if (monitor.isCanceled())
return rval;
}
} else
{
log.error("Unsupported destination domain " + dConfig.getDomain());
}
} catch (HermesException ex) {
throw ex;
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new HermesException(e);
} finally {
if (monitor != null)
monitor.close();
}
return rval;
}
}