📄 timeseries.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: TimeSeries.java
package timeseries;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.Vector;
import util.Arrays;
// Referenced classes of package timeseries:
// TimeSeriesPoint
public class TimeSeries
{
private static final int ZERO_ARRAY[] = new int[0];
private static final boolean DEFAULT_IS_TIME_1ST_COL = true;
private static final char DEFAULT_DELIMITER = 44;
private static final boolean DEFAULT_IS_LABELED = true;
private final ArrayList labels;
private final ArrayList timeReadings;
private final ArrayList tsArray;
TimeSeries()
{
labels = new ArrayList();
timeReadings = new ArrayList();
tsArray = new ArrayList();
}
public TimeSeries(int numOfDimensions)
{
this();
labels.add("Time");
for(int x = 0; x < numOfDimensions; x++)
labels.add("" + x);
}
public TimeSeries(TimeSeries origTS)
{
labels = new ArrayList(origTS.labels);
timeReadings = new ArrayList(origTS.timeReadings);
tsArray = new ArrayList(origTS.tsArray);
}
public TimeSeries(String inputFile, boolean isFirstColTime)
{
this(inputFile, ZERO_ARRAY, isFirstColTime);
}
public TimeSeries(String inputFile, char delimiter)
{
this(inputFile, ZERO_ARRAY, true, true, delimiter);
}
public TimeSeries(String inputFile, boolean isFirstColTime, char delimiter)
{
this(inputFile, ZERO_ARRAY, isFirstColTime, true, delimiter);
}
public TimeSeries(String inputFile, boolean isFirstColTime, boolean isLabeled, char delimiter)
{
this(inputFile, ZERO_ARRAY, isFirstColTime, isLabeled, delimiter);
}
public TimeSeries(String inputFile, int colToInclude[], boolean isFirstColTime)
{
this(inputFile, colToInclude, isFirstColTime, true, ',');
}
public TimeSeries(String inputFile, int colToInclude[], boolean isFirstColTime, boolean isLabeled, char delimiter)
{
this();
try
{
BufferedReader br = new BufferedReader(new FileReader(inputFile));
String line = br.readLine();
StringTokenizer st = new StringTokenizer(line, String.valueOf(delimiter));
if(isLabeled)
{
for(int currentCol = 0; st.hasMoreTokens(); currentCol++)
{
String currentToken = st.nextToken();
if(colToInclude.length == 0 || Arrays.contains(colToInclude, currentCol))
labels.add(currentToken);
}
if(labels.size() == 0)
throw new InternalError("ERROR: The first row must contain label information, it is empty!");
if(!isFirstColTime)
labels.add(0, "Time");
else
if(isFirstColTime && !((String)labels.get(0)).equalsIgnoreCase("Time"))
throw new InternalError("ERROR: The time column (1st col) in a time series must be labeled as 'Time', '" + labels.get(0) + "' was found instead");
} else
{
if(colToInclude == null || colToInclude.length == 0)
{
labels.add("Time");
if(isFirstColTime)
st.nextToken();
int currentCol = 1;
for(; st.hasMoreTokens(); labels.add(new String("c" + currentCol++)))
st.nextToken();
} else
{
java.util.Arrays.sort(colToInclude);
labels.add("Time");
for(int c = 0; c < colToInclude.length; c++)
if(colToInclude[c] > 0)
labels.add(new String("c" + c));
}
br.close();
br = new BufferedReader(new FileReader(inputFile));
}
do
{
if((line = br.readLine()) == null)
break;
if(line.length() > 0)
{
st = new StringTokenizer(line, ",");
ArrayList currentLineValues = new ArrayList();
for(int currentCol = 0; st.hasMoreTokens(); currentCol++)
{
String currentToken = st.nextToken();
if(colToInclude.length != 0 && !Arrays.contains(colToInclude, currentCol))
continue;
Double nextValue;
try
{
nextValue = Double.valueOf(currentToken);
}
catch(NumberFormatException e)
{
throw new InternalError("ERROR: '" + currentToken + "' is not a valid number");
}
currentLineValues.add(nextValue);
}
if(isFirstColTime)
timeReadings.add(currentLineValues.get(0));
else
timeReadings.add(new Double(timeReadings.size()));
int firstMeasurement;
if(isFirstColTime)
firstMeasurement = 1;
else
firstMeasurement = 0;
TimeSeriesPoint readings = new TimeSeriesPoint(currentLineValues.subList(firstMeasurement, currentLineValues.size()));
tsArray.add(readings);
}
} while(true);
}
catch(FileNotFoundException e)
{
throw new InternalError("ERROR: The file '" + inputFile + "' was not found.");
}
catch(IOException e)
{
throw new InternalError("ERROR: Problem reading the file '" + inputFile + "'.");
}
}
public void save(File outFile)
throws IOException
{
PrintWriter out = new PrintWriter(new FileOutputStream(outFile));
out.write(toString());
out.flush();
out.close();
}
public void clear()
{
labels.clear();
timeReadings.clear();
tsArray.clear();
}
public int size()
{
return timeReadings.size();
}
public int numOfPts()
{
return size();
}
public int numOfDimensions()
{
return labels.size() - 1;
}
public double getTimeAtNthPoint(int n)
{
return ((Double)timeReadings.get(n)).doubleValue();
}
public String getLabel(int index)
{
return (String)labels.get(index);
}
public String[] getLabelsArr()
{
String labelArr[] = new String[labels.size()];
for(int x = 0; x < labels.size(); x++)
labelArr[x] = (String)labels.get(x);
return labelArr;
}
public ArrayList getLabels()
{
return labels;
}
public void setLabels(String newLabels[])
{
labels.clear();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -