001: //$Header$
002: /*
003: * Licensed to the Apache Software Foundation (ASF) under one or more
004: * contributor license agreements. See the NOTICE file distributed with
005: * this work for additional information regarding copyright ownership.
006: * The ASF licenses this file to You under the Apache License, Version 2.0
007: * (the "License"); you may not use this file except in compliance with
008: * the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing, software
013: * distributed under the License is distributed on an "AS IS" BASIS,
014: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015: * See the License for the specific language governing permissions and
016: * limitations under the License.
017: *
018: */
019: package org.apache.jmeter.report;
020:
021: import java.util.Date;
022: import java.util.List;
023: import java.util.Set;
024:
025: import org.apache.jmeter.visualizers.SamplingStatCalculator;
026: import org.apache.jmeter.visualizers.Visualizer;
027:
028: /**
029: *
030: * DataSet extends Visualizer so that it can be used with ResultCollector.
031: * Classes implementing the interface should create a new instance of
032: * ResultCollector and call setListener(Visualizer) passing itself.
033: * When the ResultCollector.loadExistingFile is called, it will pass
034: * the SampleResults.
035: */
036: public interface DataSet extends Visualizer {
037:
038: /**
039: * Depending on the implementation, the datasouce could be a file
040: * or a RDBMS. It's up to the implementing class to decide.
041: * @param datasource
042: */
043: public void setDataSource(String datasource);
044:
045: /**
046: * Return the datasource. For files, it should be the absolute path.
047: * For databases, it should be the datasource name created in jmeter.
048: */
049: public String getDataSource();
050:
051: /**
052: * In some cases, we may want to return a string that isn't the full
053: * datasource string or something different. For example, we may
054: * want to return just the filename and not the absolutePath of
055: * a JTL file.
056: */
057: public String getDataSourceName();
058:
059: /**
060: * Set the timestamp using the first result from the datasource
061: * @param stamp
062: */
063: public void setStartTimestamp(long stamp);
064:
065: /**
066: * return the timestamp in millisecond format.
067: */
068: public long getStartTimestamp();
069:
070: /**
071: * Set the timestamp using the last result from the datasource
072: * @param stamp
073: */
074: public void setEndTimestamp(long stamp);
075:
076: /**
077: * return the timestamp in millisecond format.
078: */
079: public long getEndTimestamp();
080:
081: /**
082: * Return the Date object using the start timestamp
083: */
084: public Date getDate();
085:
086: /**
087: * convienance method for getting the date in mmdd format
088: */
089: public String getMonthDayDate();
090:
091: /**
092: * convienant method for getting the date in yyyymmdd format
093: */
094: public String getMonthDayYearDate();
095:
096: /**
097: * Classes implementing the method should return the URL's in the
098: * DataSet. It is up to the class to return Strings or URL.
099: */
100: public Set getURLs();
101:
102: /**
103: * Classes implementing the method should return instance of
104: * SamplingStatCalculator.
105: * @return the set of statistics
106: */
107: public Set getStats();
108:
109: /**
110: * Return the SamplingStatCalculator for a specific URL.
111: * @param url
112: */
113: public SamplingStatCalculator getStatistics(String url);
114:
115: /**
116: * Convienance method for getting all the SamplingStatCalculators for
117: * a given URL.
118: * @param urls
119: */
120: public List getStats(List urls);
121:
122: /**
123: * Classes implementing the method should load the data from
124: * the target location. It doesn't necessarily have to be a
125: * file. It could be from a database.
126: */
127: public void loadData();
128: }
|