Skip to content

Commit

Permalink
normal
Browse files Browse the repository at this point in the history
  • Loading branch information
wyq committed Sep 21, 2014
1 parent b04eaef commit f0d5859
Show file tree
Hide file tree
Showing 16 changed files with 582 additions and 179 deletions.
3 changes: 1 addition & 2 deletions build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
-do-jar: JAR building
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
Expand Down
130 changes: 67 additions & 63 deletions nbproject/build-impl.xml

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions nbproject/genfiles.properties
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
build.xml.data.CRC32=7803fa5b
build.xml.script.CRC32=7dae9224
build.xml.stylesheet.CRC32=28e38971@1.56.1.46
build.xml.script.CRC32=eae44caa
build.xml.stylesheet.CRC32=8064a381@1.75.1.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=7803fa5b
nbproject/build-impl.xml.script.CRC32=0a089983
nbproject/build-impl.xml.stylesheet.CRC32=c6d2a60f@1.56.1.46
nbproject/build-impl.xml.script.CRC32=fc068241
nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.75.1.48
201 changes: 201 additions & 0 deletions src/org/meteoinfo/data/TimeSeriesData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.meteoinfo.data;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import org.meteoinfo.data.mapdata.Field;
import org.meteoinfo.global.MIMath;
import org.meteoinfo.global.table.DataColumn;
import org.meteoinfo.global.table.DataRow;
import org.meteoinfo.global.table.DataTable;
import org.meteoinfo.global.table.DataTypes;
import org.meteoinfo.global.util.GlobalUtil;

/**
*
* @author wyq
*/
public class TimeSeriesData {

// <editor-fold desc="Variables">
private DataTable dataTable = new DataTable();

// </editor-fold>
// <editor-fold desc="Constructor">
/**
* Constructor
*/
public TimeSeriesData() {
DataColumn col = new DataColumn("Time", DataTypes.Date);
dataTable.addColumn(col);
}

// </editor-fold>
// <editor-fold desc="Get Set Methods">
/**
* Get data table
*
* @return Data table
*/
public DataTable getDataTable() {
return dataTable;
}

// </editor-fold>
// <editor-fold desc="Methods">
/**
* Add column
*
* @param col The column
*/
public void addColumn(DataColumn col) {
dataTable.addColumn(col);
}

/**
* Add column
*
* @param colName Column name
* @param dataType Data type
*/
public void addColumn(String colName, DataTypes dataType) {
try {
dataTable.addColumn(colName, dataType);
} catch (Exception ex) {
Logger.getLogger(TimeSeriesData.class.getName()).log(Level.SEVERE, null, ex);
}
}

/**
* Add data row
*/
public void addRow() {
try {
dataTable.addRow();
} catch (Exception ex) {
Logger.getLogger(TimeSeriesData.class.getName()).log(Level.SEVERE, null, ex);
}
}

/**
* Add data row
*
* @param row Data row
*/
public void addRow(DataRow row) {
try {
dataTable.addRow(row);
} catch (Exception ex) {
Logger.getLogger(TimeSeriesData.class.getName()).log(Level.SEVERE, null, ex);
}
}

/**
* Read data table from ASCII file
*
* @param fileName File name
* @param timeColIdx Time column index
* @param formatStr Time format string
* @throws java.io.FileNotFoundException
*/
public void readASCIIFile(String fileName, int timeColIdx, String formatStr) throws FileNotFoundException, IOException, Exception {
DataTable dTable = new DataTable();
dTable.addColumn("Time", DataTypes.Date);

BufferedReader sr = new BufferedReader(new FileReader(new File(fileName)));
String title = sr.readLine().trim();
//Determine separator
String separator = GlobalUtil.getSeparator(title);
String[] titleArray = GlobalUtil.split(title, separator);
if (titleArray.length <= 2) {
JOptionPane.showMessageDialog(null, "File Format Error!");
sr.close();
} else {
//Get fields
String line = sr.readLine().trim(); //Second line
String[] dataArray = GlobalUtil.split(line, separator);
if (dataArray.length != titleArray.length) {
JOptionPane.showMessageDialog(null, "File Format Error!");
sr.close();
return;
}
SimpleDateFormat format = new SimpleDateFormat(formatStr);
List<Integer> dataIdxs = new ArrayList<Integer>();
String fieldName;
DataTypes dataType;
int rn = 0;
for (int i = 0; i < dataArray.length; i++) {
fieldName = titleArray[i];
if (i == timeColIdx) {
dTable.getColumns().get(0).setColumnName(fieldName);
continue;
}
if (MIMath.isNumeric(dataArray[i])) {
dataType = DataTypes.Double;
dTable.addColumn(fieldName, dataType);
dataIdxs.add(i);
}
}
dTable.addRow();
dTable.setValue(rn, 0, format.parse(dataArray[timeColIdx]));
int cn = 0;
for (int idx : dataIdxs) {
dTable.setValue(rn, cn, Double.parseDouble(dataArray[idx]));
cn++;
}

rn += 1;
line = sr.readLine();
while (line != null) {
line = line.trim();
if (line.isEmpty()) {
continue;
}
dataArray = GlobalUtil.split(line, separator);
dTable.addRow();
dTable.setValue(rn, 0, format.parse(dataArray[timeColIdx]));
cn = 0;
for (int idx : dataIdxs) {
dTable.setValue(rn, cn, Double.parseDouble(dataArray[idx]));
cn++;
}

rn += 1;
line = sr.readLine();
}

dataTable = dTable;
sr.close();
}
}

/**
* Get average data table
* @return Average data table
*/
public DataTable average(){
DataTable rTable = new DataTable();
for (DataColumn col : dataTable.getColumns()){
DataColumn ncol = new DataColumn(col.getColumnName(), col.getDataType());
rTable.addColumn(ncol);
}

return rTable;
}

// </editor-fold>
}
26 changes: 19 additions & 7 deletions src/org/meteoinfo/drawing/Draw.java
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,7 @@ private static void drawPoint_Simple(PointF aP, PointBreak aPB, Graphics2D g) {
aP.Y = 0;
}

g.setStroke(new BasicStroke(1.0f));
int[] xPoints;
int[] yPoints;
float aSize = aPB.getSize();
Expand Down Expand Up @@ -929,7 +930,7 @@ public static void drawStationModel(Color aColor, Color foreColor, PointF sP, St
* Draw graphic
*
* @param points The points
* @param aGrahpic The graphic
* @param aGraphic The graphic
* @param g Graphics2D
* @param isEditingVertice Is editing vertice
*/
Expand Down Expand Up @@ -1093,8 +1094,6 @@ public static void drawPolygon(PointF[] points, PolygonBreak aPGB, Graphics2D g)
* @param points The points
* @param aColor Fill oclor
* @param outlineColor Outline color
* @param width
* @param height
* @param drawFill
* @param drawOutline
* @param g
Expand Down Expand Up @@ -1795,14 +1794,26 @@ public static void drawBarChartSymbol(PointF aPoint, ChartBreak aCB, Graphics2D
Font font = new Font("Arial", Font.PLAIN, 8);
drawBarChartSymbol(aPoint, aCB, g, false, font);
}

/**
* Draw bar chart symbol
*
* @param aPoint Start point
* @param aCB Chart break
* @param g Graphics2D
* @param drawValue If draw value
*/
public static void drawBarChartSymbol(PointF aPoint, ChartBreak aCB, Graphics2D g, boolean drawValue) {
drawBarChartSymbol(aPoint, aCB, g, drawValue, g.getFont());
}

/**
* Draw bar chart symbol
*
* @param sPoint Start point
* @param aCB Chart break
* @param g Graphics2D
* @param drawValue If draw value
* @param font Value font
*/
public static void drawBarChartSymbol(PointF sPoint, ChartBreak aCB, Graphics2D g, boolean drawValue, Font font) {
Expand Down Expand Up @@ -1844,11 +1855,12 @@ public static void drawBarChartSymbol(PointF sPoint, ChartBreak aCB, Graphics2D

if (i == heights.size() - 1) {
if (drawValue) {
String vstr = String.valueOf(aCB.getChartData().get(i));
//String vstr = String.valueOf(aCB.getChartData().get(i));
String vstr = String.format("%1$.0f", aCB.getChartData().get(i));
FontMetrics metrics = g.getFontMetrics(font);
Dimension labSize = new Dimension(metrics.stringWidth(vstr), metrics.getHeight());
aPoint.X += 2;
aPoint.Y = (float) (y - heights.get(i) / 2 - labSize.getHeight() / 2);
aPoint.X += 5;
aPoint.Y = (float) (y - heights.get(i) / 2);
g.setColor(Color.black);
g.setFont(font);
g.drawString(vstr, aPoint.X, aPoint.Y + metrics.getHeight() / 2);
Expand Down
2 changes: 1 addition & 1 deletion src/org/meteoinfo/global/table/DataColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public DataColumn(String columnName) {
* @param dataType Data type
*/
public DataColumn(String columnName, DataTypes dataType) {
this.setDataType(dataType);
this.dataType = dataType;
this.columnName = columnName;
}

Expand Down
2 changes: 1 addition & 1 deletion src/org/meteoinfo/global/table/DataRow.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class DataRow {
private int rowIndex = -1;
private DataColumnCollection columns;
private DataTable table;
private Map<String, Object> itemMap = new LinkedHashMap<String, Object>();
private final Map<String, Object> itemMap = new LinkedHashMap<String, Object>();

/**
* Constructor
Expand Down
18 changes: 14 additions & 4 deletions src/org/meteoinfo/global/table/DataTable.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public void setReadOnly(boolean readOnly) {
/**
* Get table name
*
* @param
* @return Table name
*/
public String getTableName() {
return this.tableName;
Expand All @@ -107,7 +107,7 @@ public String getTableName() {
/**
* Set tabel name
*
* @param
* @param tableName Table name
*/
public void setTableName(String tableName) {
this.tableName = tableName;
Expand Down Expand Up @@ -165,6 +165,7 @@ public Object getValue(int row, int col) {
* Create a new data row
*
* @return: DataRow The new data row
* @throws java.lang.Exception
*/
public DataRow newRow() throws Exception {
DataRow tempRow = new DataRow(this);
Expand Down Expand Up @@ -284,6 +285,15 @@ public boolean addRow(DataRow row) throws Exception {
return this.rows.add(row);
}

/**
* Add data row
* @throws Exception
*/
public void addRow() throws Exception{
DataRow row = new DataRow();
this.addRow(row);
}

/**
* Select data rows
* @param expression SQL expression
Expand Down Expand Up @@ -424,8 +434,8 @@ public Object avg(String columns,
}

private List<DataColumn> getColumns(String colString) {
List<DataColumn> columns = new ArrayList<DataColumn>();
return columns;
List<DataColumn> cols = new ArrayList<DataColumn>();
return cols;
}

/**
Expand Down
Loading

0 comments on commit f0d5859

Please sign in to comment.