/*
* © Copyright IBM Corp. 2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.ibm.sbt.services.client.connections.activities;
import java.io.ByteArrayInputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
import com.ibm.sbt.services.client.ClientServicesException;
import com.ibm.sbt.services.client.connections.common.Member;
import com.ibm.sbt.services.endpoints.BasicEndpoint;
import com.ibm.sbt.services.endpoints.Endpoint;
/**
* @author mwallace
*
*/
public class ActivityClient {
private String user;
private String password;
private String id;
private Endpoint endpoint;
private ActivityService activityService;
static final String sourceClass = ActivityClient.class.getName();
static final Logger logger = Logger.getLogger(sourceClass);
static public ActivityClient[] createClients(String url, String[][] users) {
ActivityClient[] clients = new ActivityClient[users.length];
for (int i=0; i<users.length; i++) {
clients[i] = new ActivityClient(url, users[i][0], users[i][1], users[i][2]);
}
return clients;
}
ActivityClient(String url, String user, String password, String id) {
this.user = user;
this.password = password;
this.id = id;
this.endpoint = createEndpoint(url, user, password);
this.activityService = new ActivityService(this.endpoint);
}
/**
* @return the user
*/
public String getUser() {
return user;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
public String getId() {
return id;
}
/**
* @return the endpoint
*/
public Endpoint getEndpoint() {
return endpoint;
}
/**
* @return the activityService
*/
public ActivityService getActivityService() {
return activityService;
}
/**
*
*/
public Endpoint createEndpoint(String url, String user, String password) {
BasicEndpoint basicEndpoint = null;
basicEndpoint = new BasicEndpoint();
basicEndpoint.setUrl(url);
basicEndpoint.setForceTrustSSLCertificate(true);
basicEndpoint.setUser(user);
basicEndpoint.setPassword(password);
// proxy support
//basicEndpoint.setHttpProxy("127.0.0.1:8888");
//basicEndpoint.setUseProxy(true);
// cookie handling
basicEndpoint.setClientServiceClass("com.ibm.sbt.services.client.CookieStoreClientService");
return basicEndpoint;
}
public Activity getActivity(String activityUuid) throws ClientServicesException {
ActivityService activityService = getActivityService();
return activityService.getActivity(activityUuid);
}
public Activity createActivity(ActivityClient[] participants) throws ClientServicesException {
long start = System.currentTimeMillis();
String user = getUser();
String title = "Activity["+user+"-"+System.currentTimeMillis()+"]";
ActivityService activityService = getActivityService();
Activity activity = new Activity(activityService);
activity.setTitle(title);
Map<String, String> params = new HashMap<String, String>();
params.put("nodescap", "unlimited");
activity = activityService.createActivity(activity, params);
long duration = System.currentTimeMillis() - start;
logger.fine("Created activity: "+duration+"(ms)");
System.out.println(user+" created activity "+activity.getActivityUuid()+" duration:"+duration+"(ms)");
for (ActivityClient participant : participants) {
if (!participant.getUser().equals(user)) {
activity.addMember(Member.TYPE_PERSON, participant.getId(), Member.ROLE_OWNER);
System.out.println("Added member "+participant.getUser());
}
}
return activity;
}
public Thread createActivityNodes(final Activity activity, final int count) throws InterruptedException {
Thread thread = new Thread() {
@Override
public void run() {
for (int i=0; i<count; i++) {
try {
long start = System.currentTimeMillis();
ActivityService activityService = getActivityService();
String title = "ActivityNode["+user+"-"+System.currentTimeMillis()+"]";
ActivityNode activityNode = new ActivityNode(activityService);
activityNode.setActivityUuid(activity.getActivityUuid());
activityNode.setTitle(title);
activityService.createActivityNode(activityNode);
long duration = System.currentTimeMillis() - start;
logger.fine("Created activity node: "+duration+"(ms)");
System.out.println(user+" created activity node "+activityNode.getActivityNodeUuid()+" duration:"+duration+"(ms)");
} catch (Exception e) {
System.err.println("Error creating activity node for: "+user+" caused by: "+e.getMessage());
//e.printStackTrace();
}
}
}
};
thread.start();
return thread;
}
public Thread uploadFiles(final Activity activity, final int count) throws InterruptedException {
Thread thread = new Thread() {
@Override
public void run() {
ByteArrayInputStream fileContent = new ByteArrayInputStream("MyFileContent".getBytes());
for (int i=0; i<count; i++) {
try {
long start = System.currentTimeMillis();
ActivityService activityService = getActivityService();
String fileName = "MyFile"+i;
activity.uploadFile(fileName, fileContent, "text/plain");
long duration = System.currentTimeMillis() - start;
logger.fine("Uploaded activity file: "+duration+"(ms)");
System.out.println(user+" uploaded file "+fileName+" duration:"+duration+"(ms)");
} catch (Exception e) {
System.err.println("Error uploading file for: "+user+" caused by: "+e.getMessage());
//e.printStackTrace();
}
}
}
};
thread.start();
return thread;
}
public Thread createActivities(final int count, final ActivityClient[] participants) throws InterruptedException {
Thread thread = new Thread() {
@Override
public void run() {
ByteArrayInputStream fileContent = new ByteArrayInputStream("MyFileContent".getBytes());
for (int i=0; i<count; i++) {
try {
long start = System.currentTimeMillis();
String user = getUser();
String title = "Activity["+user+"-"+i+"-"+System.currentTimeMillis()+"]";
ActivityService activityService = getActivityService();
Activity activity = new Activity(activityService);
activity.setTitle(title);
activity = activityService.createActivity(activity);
long duration = System.currentTimeMillis() - start;
logger.fine("Created activity: "+duration+"(ms)");
System.out.println(user+" created activity "+activity.getActivityUuid()+" duration:"+duration+"(ms)");
for (ActivityClient participant : participants) {
if (!participant.getUser().equals(user)) {
activity.addMember(Member.TYPE_PERSON, participant.getId(), Member.ROLE_OWNER);
System.out.println("Added member "+participant.getUser());
}
}
} catch (Exception e) {
System.err.println("Error creating activity for: "+user+" caused by: "+e.getMessage());
//e.printStackTrace();
}
}
}
};
thread.start();
return thread;
}
}