/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright 2005 - 2009 Pentaho Corporation. All rights reserved.
*
* @created Aug 15, 2005
* @author James Dixon
*/
package org.pentaho.test.platform.plugin;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
//import java.util.List;
//import java.util.Locale;
//
//import org.pentaho.platform.api.engine.IScheduler;
//import org.pentaho.platform.api.repository.ISubscriptionRepository;
//import org.pentaho.platform.engine.core.output.SimpleContentItem;
//import org.pentaho.platform.engine.core.output.SimpleOutputHandler;
//import org.pentaho.platform.engine.core.solution.SimpleParameterProvider;
import org.pentaho.platform.engine.core.system.PentahoSystem;
//import org.pentaho.platform.engine.core.system.StandaloneApplicationContext;
import org.pentaho.platform.engine.core.system.StandaloneSession;
//import org.pentaho.platform.engine.core.system.UserSession;
//import org.pentaho.platform.repository.messages.Messages;
//import org.pentaho.platform.repository.subscription.Subscription;
//import org.pentaho.platform.repository.subscription.SubscriptionHelper;
import org.pentaho.test.platform.engine.core.BaseTest;
@SuppressWarnings("nls")
public class SubscriptionHelperTest extends BaseTest {
private static final String SOLUTION_PATH = "test-src/solution";
public String getSolutionPath() {
return SOLUTION_PATH;
}
// private StandaloneApplicationContext applicationContext;
public SubscriptionHelperTest() {
startTest();
// applicationContext = new StandaloneApplicationContext(SOLUTION_PATH, ""); //$NON-NLS-1$
// PentahoSystem.init(applicationContext);
}
public org.pentaho.platform.repository.solution.filebased.FileBasedSolutionRepository getFileSolutionRepository(
StandaloneSession session) {
org.pentaho.platform.repository.solution.filebased.FileBasedSolutionRepository rtn = new org.pentaho.platform.repository.solution.filebased.FileBasedSolutionRepository();
rtn.init(session);
return rtn;
}
/*public void testSaveSubscription() {
startTest();
SimpleParameterProvider parameters = new SimpleParameterProvider();
String solutionName = "test"; //$NON-NLS-1$
String actionPath = "dashboard"; //$NON-NLS-1$
String actionName = "departments.rule.xaction"; //$NON-NLS-1$
String name = "MyMonthlySubscriptionTest";//$NON-NLS-1$
String subscriberId = "24234234"; //$NON-NLS-1$
String subscriptionDestination = "c:/"; //$NON-NLS-1$
parameters.setParameter("solution", solutionName); //$NON-NLS-1$
parameters.setParameter("path", actionPath); //$NON-NLS-1$
parameters.setParameter("action", actionName); //$NON-NLS-1$
parameters.setParameter("subscribe-id", subscriberId); //$NON-NLS-1$
parameters.setParameter("subscribe-name", name); //$NON-NLS-1$
parameters.setParameter("destination", subscriptionDestination); //$NON-NLS-1$
UserSession session = new UserSession("Joe", Locale.US, true, parameters); //$NON-NLS-1$
String actionReference = solutionName + "/" + actionPath + "/" + actionName; //$NON-NLS-1$ //$NON-NLS-2$
org.pentaho.platform.repository.solution.filebased.FileBasedSolutionRepository repository = getFileSolutionRepository(session);
String result = SubscriptionHelper.saveSubscription(parameters, actionReference, session, true);
System.out.println("Result of the Subscription Save Operation: " + result);//$NON-NLS-1$
assertTrue("Subscription was successfully saved", result != null); //$NON-NLS-1$
finishTest();
}*/
/*public void testEditSubscription() {
startTest();
try {
SimpleParameterProvider parameters1 = new SimpleParameterProvider();
String solutionName1 = "test"; //$NON-NLS-1$
String actionPath1 = "dashboard"; //$NON-NLS-1$
String actionName1 = "departments.rule.xaction"; //$NON-NLS-1$
String name1 = "MyMonthlySubscriptionTest";//$NON-NLS-1$
String subscriberId1 = "24234234"; //$NON-NLS-1$
String subscriptionDestination1 = "c:/"; //$NON-NLS-1$
parameters1.setParameter("solution", solutionName1); //$NON-NLS-1$
parameters1.setParameter("path", actionPath1); //$NON-NLS-1$
parameters1.setParameter("action", actionName1); //$NON-NLS-1$
parameters1.setParameter("subscribe-id", subscriberId1); //$NON-NLS-1$
parameters1.setParameter("subscribe-name", name1); //$NON-NLS-1$
parameters1.setParameter("destination", subscriptionDestination1); //$NON-NLS-1$
UserSession session = new UserSession("Joe", Locale.US, true, parameters1); //$NON-NLS-1$
String actionReference = solutionName1 + "/" + actionPath1 + "/" + actionName1; //$NON-NLS-1$ //$NON-NLS-2$
String result = SubscriptionHelper.saveSubscription(parameters1, actionReference, session, true);
SimpleParameterProvider parameters = new SimpleParameterProvider();
String solutionName = "test"; //$NON-NLS-1$
String actionPath = "dashboard"; //$NON-NLS-1$
String actionName = "departments.rule.xaction"; //$NON-NLS-1$
String name = "MyMonthlySubscription";//$NON-NLS-1$
parameters.setParameter("solution", solutionName); //$NON-NLS-1$
parameters.setParameter("path", actionPath); //$NON-NLS-1$
parameters.setParameter("action", actionName); //$NON-NLS-1$
OutputStream outputStream = getOutputStream("EditSubscription", ".txt"); //$NON-NLS-1$ //$NON-NLS-2$
ISubscriptionRepository subscriptionRepository = PentahoSystem.getSubscriptionRepository(session);
List subscriptionList = subscriptionRepository.getUserSubscriptions("Joe"); //$NON-NLS-1$
List schedule = subscriptionRepository.getSchedules();
for (int i = 0; i < schedule.size(); i++) {
System.out.println("Schedule #" + (i + 1) + schedule.get(i)); //$NON-NLS-1$
}
String subscriptionId = null;
for (int i = 0; i < subscriptionList.size(); i++) {
Subscription subscription = (Subscription) subscriptionList.get(i);
String title = subscription.getTitle();
if ((title != null) && (title.equals(name1))) {
subscriptionId = subscription.getId();
break;
}
}
assertNotNull("Subscription not found", subscriptionId);
SubscriptionHelper.editSubscription(subscriptionId, session, null, outputStream);
} catch (Exception e) {
assertTrue("Exception was thrown" + e.getLocalizedMessage(), false);
}
assertTrue("Subscription was successfully Edited", true); //$NON-NLS-1$
finishTest();
}*/
/*public void testCreateSubscriptionArchive() {
startTest();
SimpleParameterProvider parameters = new SimpleParameterProvider();
String solutionName = "test"; //$NON-NLS-1$
String actionPath = "dashboard"; //$NON-NLS-1$
String actionName = "departments.rule.xaction"; //$NON-NLS-1$
String name = "MyMonthlySubscriptionTest";//$NON-NLS-1$
parameters.setParameter("solution", solutionName); //$NON-NLS-1$
parameters.setParameter("path", actionPath); //$NON-NLS-1$
parameters.setParameter("action", actionName); //$NON-NLS-1$
parameters.setParameter("subscribe-name", name); //$NON-NLS-1$
UserSession session = new UserSession("Joe", Locale.US, true, parameters); //$NON-NLS-1$
ISubscriptionRepository subscriptionRepository = PentahoSystem.getSubscriptionRepository(session);
List subscriptionList = subscriptionRepository.getUserSubscriptions("Joe"); //$NON-NLS-1$
String subscriptionId = null;
for (int i = 0; i < subscriptionList.size(); i++) {
Subscription subscription = (Subscription) subscriptionList.get(i);
String title = subscription.getTitle();
if ((title != null) && (title.equals(name))) {
subscriptionId = subscription.getId();
break;
}
}
String result = SubscriptionHelper.createSubscriptionArchive(subscriptionId, session, null, parameters);
assertTrue("The result of the subcsription save action was " + result, true); //$NON-NLS-1$
assertTrue(true);
finishTest();
}*/
/* public void testGetArchived() {
startTest();
SimpleParameterProvider parameters = new SimpleParameterProvider();
String solutionName = "test"; //$NON-NLS-1$
String actionPath = "dashboard"; //$NON-NLS-1$
String actionName = "departments.rule.xaction"; //$NON-NLS-1$
String name = "MyMonthlySubscription";//$NON-NLS-1$
parameters.setParameter("solution", solutionName); //$NON-NLS-1$
parameters.setParameter("path", actionPath); //$NON-NLS-1$
parameters.setParameter("action", actionName); //$NON-NLS-1$
UserSession session = new UserSession("Joe", Locale.US, true, parameters); //$NON-NLS-1$
ISubscriptionRepository subscriptionRepository = PentahoSystem.getSubscriptionRepository(session);
List subscriptionList = subscriptionRepository.getUserSubscriptions("Joe"); //$NON-NLS-1$
//List subscriptionList = subscriptionRepository.getAllSubscriptions(); //$NON-NLS-1$
OutputStream outputStream = getOutputStream("GetArchived", ".html"); //$NON-NLS-1$ //$NON-NLS-2$
String subscriptionId = null;
for (int i = 0; i < subscriptionList.size(); i++) {
Subscription subscription = (Subscription) subscriptionList.get(i);
String title = subscription.getTitle();
if ((title != null) && (title.equals(name))) {
subscriptionId = subscription.getId();
break;
}
}
SimpleOutputHandler outputHandler = new SimpleOutputHandler(new SimpleContentItem(outputStream), true);
SubscriptionHelper.getArchived(subscriptionId, name, session, outputHandler);
assertTrue(true);
finishTest();
} */
/*public void testDeleteSubscriptionArchive() {
startTest();
SimpleParameterProvider parameters = new SimpleParameterProvider();
String solutionName = "test"; //$NON-NLS-1$
String actionPath = "dashboard"; //$NON-NLS-1$
String actionName = "departments.rule.xaction"; //$NON-NLS-1$
String name = "MyMonthlySubscriptionTest";//$NON-NLS-1$
parameters.setParameter("solution", solutionName); //$NON-NLS-1$
parameters.setParameter("path", actionPath); //$NON-NLS-1$
parameters.setParameter("action", actionName); //$NON-NLS-1$
UserSession session = new UserSession("Joe", Locale.US, true, parameters); //$NON-NLS-1$
ISubscriptionRepository subscriptionRepository = PentahoSystem.getSubscriptionRepository(session);
List subscriptionList = subscriptionRepository.getUserSubscriptions("Joe"); //$NON-NLS-1$
String subscriptionId = null;
for (int i = 0; i < subscriptionList.size(); i++) {
Subscription subscription = (Subscription) subscriptionList.get(i);
String title = subscription.getTitle();
if ((title != null) && (title.equals(name))) {
subscriptionId = subscription.getId();
break;
}
}
String result = SubscriptionHelper.deleteSubscriptionArchive(subscriptionId, name, session);
assertTrue("The result of the subcsription save action was " + result, true); //$NON-NLS-1$
assertTrue(true);
finishTest();
}*/
/* public void testDeleteSubscription() {
startTest();
SimpleParameterProvider parameters = new SimpleParameterProvider();
String solutionName = "samples"; //$NON-NLS-1$
String actionPath = "getting-started"; //$NON-NLS-1$
String actionName = "HelloEmail.xaction"; //$NON-NLS-1$
String name = "MyMonthlySubscription";//$NON-NLS-1$
String subscriberId = "24234234"; //$NON-NLS-1$
String subscriptionDestination = "c:/code/latest"; //$NON-NLS-1$
parameters.setParameter("solution", solutionName); //$NON-NLS-1$
parameters.setParameter("path", actionPath); //$NON-NLS-1$
parameters.setParameter("action", actionName); //$NON-NLS-1$
parameters.setParameter("subscribe-id", subscriberId); //$NON-NLS-1$
parameters.setParameter("subscribe-name", name); //$NON-NLS-1$
parameters.setParameter("destination", subscriptionDestination); //$NON-NLS-1$
UserSession session = new UserSession("Joe", Locale.US, true, parameters); //$NON-NLS-1$
ISubscriptionRepository subscriptionRepository = PentahoSystem.getSubscriptionRepository(session);
List subscriptionList = subscriptionRepository.getUserSubscriptions("Joe"); //$NON-NLS-1$
String subscriptionId = null;
for (int i = 0; i < subscriptionList.size(); i++) {
Subscription subscription = (Subscription) subscriptionList.get(i);
String title = subscription.getTitle();
if ((title != null) && (title.equals(name))) {
subscriptionId = subscription.getId();
break;
}
}
String result = SubscriptionHelper.deleteSubscription(subscriptionId, session);
assertTrue("The result of delete subcsription action was " + result, true); //$NON-NLS-1$
assertTrue(true);
finishTest();
} */
/* public void testSaveEditAndDeleteSubscription() {
startTest();
SimpleParameterProvider parameters = new SimpleParameterProvider();
String solutionName = "test"; //$NON-NLS-1$
String actionPath = "dashboard"; //$NON-NLS-1$
String actionName = "departments.rule.xaction"; //$NON-NLS-1$
String name = "MyMonthlySubscription";//$NON-NLS-1$
String subscriberId = "24234234"; //$NON-NLS-1$
String subscriptionDestination = "c:/code/latest"; //$NON-NLS-1$
parameters.setParameter("solution", solutionName); //$NON-NLS-1$
parameters.setParameter("path", actionPath); //$NON-NLS-1$
parameters.setParameter("action", actionName); //$NON-NLS-1$
parameters.setParameter("subscribe-id", subscriberId); //$NON-NLS-1$
parameters.setParameter("subscribe-name", name); //$NON-NLS-1$
parameters.setParameter("destination", subscriptionDestination); //$NON-NLS-1$
OutputStream outputStream = getOutputStream("SaveSubscription", ".html"); //$NON-NLS-1$ //$NON-NLS-2$
UserSession session = new UserSession("Joe", Locale.US, true, parameters); //$NON-NLS-1$
String actionReference = solutionName + "/" + actionPath + "/" + actionName; //$NON-NLS-1$ //$NON-NLS-2$
String result = SubscriptionHelper.saveSubscription(parameters, actionReference, session, true);
assertTrue("The result of the subcsription save action was " + result, true); //$NON-NLS-1$
ISubscriptionRepository subscriptionRepository = PentahoSystem.getSubscriptionRepository(session);
List subscriptionList = subscriptionRepository.getUserSubscriptions("Joe"); //$NON-NLS-1$
String subscriptionId = null;
Subscription subscription = null;
for (int i = 0; i < subscriptionList.size(); i++) {
subscription = (Subscription) subscriptionList.get(i);
String title = subscription.getTitle();
if ((title != null) && (title.equals(name))) {
subscriptionId = subscription.getId();
break;
}
}
IScheduler scheduler = PentahoSystem.getScheduler(session);
boolean isScheduled = scheduler.scheduleSubscription(subscription);
// boolean isScheduled = SubscriptionHelper.scheduleSubscription(subscription);
if (isScheduled) {
assertTrue("Subscription was scheduled", true); //$NON-NLS-1$
}
SimpleOutputHandler outputHandler = new SimpleOutputHandler(new SimpleContentItem(outputStream), true);
SubscriptionHelper.runSubscription(subscriptionId, session, parameters, null, outputHandler);
outputStream = getOutputStream("EditSubscription", ".html"); //$NON-NLS-1$ //$NON-NLS-2$
SubscriptionHelper.editSubscription(subscriptionId, session, null, outputStream);
result = SubscriptionHelper.deleteSubscription(subscriptionId, session);
assertTrue(true);
finishTest();
}*/
/* public void testCreateSaveEditAndDeleteSubscriptionArchive() {
startTest();
SimpleParameterProvider parameters = new SimpleParameterProvider();
String solutionName = "test"; //$NON-NLS-1$
String actionPath = "dashboard"; //$NON-NLS-1$
String actionName = "departments.rule.xaction"; //$NON-NLS-1$
String name = "MyMonthlySubscription";//$NON-NLS-1$
String subscriberId = "24234234"; //$NON-NLS-1$
String subscriptionDestination = "c:/code/latest"; //$NON-NLS-1$
parameters.setParameter("solution", solutionName); //$NON-NLS-1$
parameters.setParameter("path", actionPath); //$NON-NLS-1$
parameters.setParameter("action", actionName); //$NON-NLS-1$
parameters.setParameter("subscribe-id", subscriberId); //$NON-NLS-1$
parameters.setParameter("subscribe-name", name); //$NON-NLS-1$
parameters.setParameter("destination", subscriptionDestination); //$NON-NLS-1$
OutputStream outputStream = getOutputStream("SaveSubscription", ".html"); //$NON-NLS-1$ //$NON-NLS-2$
StandaloneSession session = new StandaloneSession(Messages.getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
String actionReference = solutionName + "/" + actionPath + "/" + actionName; //$NON-NLS-1$ //$NON-NLS-2$
String result = SubscriptionHelper.saveSubscription(parameters, actionReference, session);
assertTrue("The result of the subcsription save action was " + result, true); //$NON-NLS-1$
ISubscriptionRepository subscriptionRepository = PentahoSystem.getSubscriptionRepository(session);
List subscriptionList = subscriptionRepository.getUserSubscriptions("Joe"); //$NON-NLS-1$
String subscriptionId = null;
Subscription subscription = null;
for (int i = 0; i < subscriptionList.size(); i++) {
subscription = (Subscription) subscriptionList.get(i);
String title = subscription.getTitle();
if ((title != null) && (title.equals(name))) {
subscriptionId = subscription.getId();
break;
}
}
//SubscriptionHelper.scheduleSubscription(subscription);
SimpleOutputHandler outputHandler = new SimpleOutputHandler(new SimpleContentItem(outputStream), true);
SubscriptionHelper.getArchived(subscriptionId, name, session, outputHandler);
result = SubscriptionHelper.createSubscriptionArchive(subscriptionId, session, null, parameters);
result = SubscriptionHelper.deleteSubscriptionArchive(subscriptionId, name, session);
assertTrue(true);
finishTest();
}*/
protected InputStream getInputStreamFromOutput(String testName, String extension) {
String path = PentahoSystem.getApplicationContext().getFileOutputPath("test/tmp/" + testName + extension); //$NON-NLS-1$
File f = new File(path);
if (f.exists()) {
try {
FileInputStream fis = new FileInputStream(f);
return fis;
} catch (Exception ignored) {
return null;
}
} else {
return null;
}
}
protected OutputStream getOutputStream(String testName, String extension) {
OutputStream outputStream = null;
try {
String tmpDir = PentahoSystem.getApplicationContext().getFileOutputPath("test/tmp"); //$NON-NLS-1$
File file = new File(tmpDir);
file.mkdirs();
String path = PentahoSystem.getApplicationContext().getFileOutputPath("test/tmp/" + testName + extension); //$NON-NLS-1$
outputStream = new FileOutputStream(path);
} catch (FileNotFoundException e) {
}
return outputStream;
}
public void testDummyTest() {}
public static void main(String[] args) {
// SubscriptionHelperTest test = new SubscriptionHelperTest();
//test.testCreateSubscriptionArchive();
//test.testDeleteSubscriptionArchive();
//test.testSaveSubscription();
//test.testEditSubscription();
//test.testDeleteSubscription();
//test.testSaveEditAndDeleteSubscription();
//test.testCreateSaveEditAndDeleteSubscriptionArchive();
}
}