/*******************************************************************************
* Copyright 2013-2015 alladin-IT GmbH
*
* 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 at.alladin.rmbt.client.v2.task.service;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import at.alladin.rmbt.client.QualityOfServiceTest;
import at.alladin.rmbt.client.v2.task.AbstractQoSTask;
import at.alladin.rmbt.client.v2.task.service.TestProgressListener.TestProgressEvent;
import at.alladin.rmbt.util.tools.TracerouteService;
public class TestSettings {
private boolean useSsl;
private long startTimeNs;
private File cacheFolder;
private TrafficService trafficService;
private WebsiteTestService websiteTestService;
private Class<? extends TracerouteService> tracerouteServiceClazz;
private final List<TestProgressListener> testProgressListenerList = new ArrayList<TestProgressListener>();
public TestSettings() { }
public TestSettings(long startTimeNs) {
this.startTimeNs = startTimeNs;
}
public File getCacheFolder() {
return cacheFolder;
}
public void setCacheFolder(File cacheFolder) {
this.cacheFolder = cacheFolder;
}
public TrafficService getTrafficService() {
return trafficService;
}
public void setTrafficService(TrafficService trafficService) {
this.trafficService = trafficService;
}
public WebsiteTestService getWebsiteTestService() {
return websiteTestService;
}
public void setWebsiteTestService(WebsiteTestService websiteTestService) {
this.websiteTestService = websiteTestService;
}
/**
TracerouteServicehe {@link TracerouteService} implementation for traceroute functionalitTracerouteServiceeturn
*/
public Class<? extends TracerouteService> getTracerouteServiceClazz() {
return tracerouteServiceClazz;
}
/**
* set the {@link TracerouteService} implementation for traceroute functionality
* @TracerouteServicengTool
*/
public void setTracerouteServiceClazz(Class<? extends TracerouteService> tracerouteServiceClazz) {
this.tracerouteServiceClazz = tracerouteServiceClazz;
}
public List<TestProgressListener> getTestProgressListener() {
return testProgressListenerList;
}
public void addTestProgressListener(TestProgressListener listener) {
if (!testProgressListenerList.contains(listener)) {
testProgressListenerList.add(listener);
}
}
public void dispatchTestProgressEvent(TestProgressEvent event, AbstractQoSTask test) {
dispatchTestProgressEvent(event, test, null);
}
public void dispatchTestProgressEvent(TestProgressEvent event, AbstractQoSTask test, QualityOfServiceTest qosTest) {
switch (event) {
case ON_START:
for (TestProgressListener listener : testProgressListenerList) {
if (listener != null) {
listener.onQoSTestStart(test);
}
}
break;
case ON_END:
for (TestProgressListener listener : testProgressListenerList) {
if (listener != null) {
listener.onQoSTestEnd(test);
}
}
break;
case ON_CREATED:
for (TestProgressListener listener : testProgressListenerList) {
if (listener != null) {
listener.onQoSCreated(qosTest);
}
}
break;
}
}
/**
* the absolute starting point of the qos test.<br>
* needed for all relative time measurements
* @return
*/
public long getStartTimeNs() {
return startTimeNs;
}
public void setStartTimeNs(long startTimeNs) {
this.startTimeNs = startTimeNs;
}
/**
*
* @return
*/
public boolean isUseSsl() {
return useSsl;
}
/**
*
* @param useSsl
*/
public void setUseSsl(boolean useSsl) {
this.useSsl = useSsl;
}
@Override
public String toString() {
return "TestSettings [useSsl=" + useSsl + ", startTimeNs="
+ startTimeNs + ", cacheFolder=" + cacheFolder
+ ", trafficService=" + trafficService
+ ", websiteTestService=" + websiteTestService
+ ", testProgressListenerList=" + testProgressListenerList
+ "]";
}
}