package com.amazon.aws.demo.sns;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.amazon.aws.demo.AWSDemo;
import com.amazonaws.services.sns.*;
import com.amazonaws.services.sns.model.CreateTopicRequest;
import com.amazonaws.services.sns.model.CreateTopicResult;
import com.amazonaws.services.sns.model.DeleteTopicRequest;
import com.amazonaws.services.sns.model.ListSubscriptionsByTopicRequest;
import com.amazonaws.services.sns.model.ListTopicsRequest;
import com.amazonaws.services.sns.model.PublishRequest;
import com.amazonaws.services.sns.model.PublishResult;
import com.amazonaws.services.sns.model.SubscribeRequest;
import com.amazonaws.services.sns.model.SubscribeResult;
import com.amazonaws.services.sns.model.Subscription;
import com.amazonaws.services.sns.model.Topic;
public class SimpleNotification {
private static AmazonSNSClient sns = null;
public static final String TOPIC_ARN = "_Topic_Arn";
public static AmazonSNSClient getInstance(){
if(sns == null){
sns = new AmazonSNSClient( AWSDemo.credentials );
}
return sns;
}
public static List<String> getTopicNames(){
List topics = getInstance().listTopics().getTopics();
Iterator tIter = topics.iterator();
List<String> topicNames = new ArrayList<String>( topics.size() );
while(tIter.hasNext()){
topicNames.add(((Topic) tIter.next()).getTopicArn());
}
return topicNames;
}
public static List<String> getSubscriptionNamesByTopic(String topicARN){
List subscriptions;
if(topicARN != null) {
ListSubscriptionsByTopicRequest req = new ListSubscriptionsByTopicRequest(topicARN);
subscriptions = getInstance().listSubscriptionsByTopic(req).getSubscriptions();
} else {
subscriptions = getInstance().listSubscriptions().getSubscriptions();
}
Iterator sIter = subscriptions.iterator();
List<String> subscriptionNames = new ArrayList<String>(subscriptions.size());
while(sIter.hasNext()){
subscriptionNames.add( ((Subscription) sIter.next()).getEndpoint());
}
return subscriptionNames;
}
public static List<String> getSubscriptionNames(){
return getSubscriptionNamesByTopic(null);
}
public static CreateTopicResult createTopic(String name){
CreateTopicRequest req = new CreateTopicRequest(name);
return getInstance().createTopic(req);
}
public static void deleteTopic(String name){
DeleteTopicRequest req = new DeleteTopicRequest(name);
getInstance().deleteTopic(req);
}
public static PublishResult publish(String topicARN, String msg){
PublishRequest req = new PublishRequest(topicARN, msg);
return getInstance().publish(req);
}
public static SubscribeResult subscribe(String topicArn, String protocol, String endpoint) {
SubscribeRequest req= new SubscribeRequest(topicArn, protocol, endpoint);
return getInstance().subscribe(req);
}
public static String getArnFromTopic(String topicName){
List<String> listOfTopicARN = getTopicNames();
Iterator<String> aIter = listOfTopicARN.iterator();
while(aIter.hasNext()) {
String temp = aIter.next();
if(temp.endsWith(topicName))
return temp;
}
return null;
}
}