using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
// 数据库dll
using MySql.Data.MySqlClient;
using System.IO;
namespace ClientV1._1
{
public partial class Form1 : Form
{
public static string SrcPath = "";
// db Part
public static string dbIp ="";
public static string dbName = "";
public static string dbUser = "";
public static string dbPasswd = "";
public static string modelname = "";
public static string startdate = "";
public static string enddate = "";
public static string nx = "";
public static string ny = "";
public static string xrefkm = "";
public static string yrefkm = "";
public static string dgridkm = "";
public static string identifier = "";
// for terrel identifier
public static string gtopo30="";
// for ctgproc identifier
public static string glazas="";
public const int maxFileNum = 10000; //#MaxLimit
public string[] terrelFiles = new string[maxFileNum], ctgprocFiles = new string[maxFileNum];
// 取出最后的文件名
public string[] terrelFileNames = new string[maxFileNum], ctgprocFileNames = new string[maxFileNum];
public void init()
{
modelname = "";
startdate = "";
enddate = "";
nx = "";
ny = "";
xrefkm = "";
yrefkm = "";
dgridkm = "";
identifier = "";
gtopo30="";
glazas="";
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox5.Text = "";
textBox6.Text = "";
comboBox1.SelectedIndex = -1;
comboBox2.SelectedIndex = -1;
SrcPath ="";
label13.Text = "Selected: C:\\" ;
}
// 四个基本参数的合法性检查
public static bool ParamValidate()
{
if (xrefkm == "")
{
MessageBox.Show("Please Input XREFKM");
return false;
}
if (yrefkm == "")
{
MessageBox.Show("Please Input YREFKM");
return false;
}
if (nx == "")
{
MessageBox.Show("Please Input NX");
return false;
}
if (ny == "")
{
MessageBox.Show("Please Input NY");
return false;
}
if (dgridkm == "")
{
MessageBox.Show("Please Input DGRIDKM");
return false;
}
// 合法性检查 至少是double
try
{
double.Parse(xrefkm);
}
catch
{
MessageBox.Show("XREFKM should be a float number");
return false;
}
try
{
double.Parse(yrefkm);
}
catch
{
MessageBox.Show("YREFKM should be a float number");
return false;
}
try
{
double.Parse(nx);
}
catch
{
MessageBox.Show("NX should be a float number");
return false;
}
try
{
double.Parse(ny);
}
catch
{
MessageBox.Show("NY should be a float number");
return false;
}
try
{
double.Parse(dgridkm);
}
catch
{
MessageBox.Show("DGRIDKM should be a float number");
return false;
}
// 全都没问题 返回合法
return true;
}
// 非静态资源 this调用即可
public bool DateAssignAndCheck()
{
dateTimePicker1.Format=DateTimePickerFormat.Custom;
dateTimePicker2.Format=DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat="yyyy-MM-dd";
dateTimePicker2.CustomFormat="yyyy-MM-dd";
string year1 = dateTimePicker1.Value.Year.ToString();
string month1 = dateTimePicker1.Value.Month.ToString();
// 规范形式
if(dateTimePicker1.Value.Month<10)
{
month1 = "0" + month1;
}
string day1 = dateTimePicker1.Value.Day.ToString();
if (dateTimePicker1.Value.Day < 10)
{
day1 = "0" + day1;
}
string year2 = dateTimePicker1.Value.Year.ToString();
string month2 = dateTimePicker1.Value.Month.ToString();
// 规范形式
if (dateTimePicker2.Value.Month < 10)
{
month2 = "0" + month2;
}
string day2 = dateTimePicker2.Value.Day.ToString();
if (dateTimePicker2.Value.Day < 10)
{
day2 = "0" + day2;
}
startdate = year1 + "-" + month1 + "-" + day1;
enddate = year2 + "-" + month2 + "-" + day2;
int result = dateTimePicker1.Value.Date.CompareTo(dateTimePicker2.Value.Date);
if (result > 0)
return false;
else return true;
}
public static bool IdentifierValidate()
{
int length = identifier.Length;
for(int i=0;i<length;i++)
{
if (identifier[i] <= 'Z' && identifier[i] >= 'A') continue;
if (identifier[i] <= 'z' && identifier[i] >= 'a') continue;
if (identifier[i] <= '9' && identifier[i] >= '0') continue;
if (identifier[i] == '_') continue;
if (identifier[i] == '@') continue;
return false;
}
return true;
}
public static bool DbTest()
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
// 到时候换成一个公网IP
string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";
conn.ConnectionString = connStr;
try
{
conn.Open();
}
catch
{
MessageBox.Show("Database Connection Error");
return false;
}
return true;
}
public bool ParamAssignAndCheck()
{
xrefkm = textBox1.Text;
yrefkm = textBox2.Text;
nx = textBox3.Text;
ny = textBox4.Text;
dgridkm = textBox5.Text;
identifier = textBox6.Text;
if (ParamValidate() == false)
{
return false;
}
if (DbTest() == false)
{
return false;
}
// 日期单独检查
if (identifier == "")
{
MessageBox.Show("Identifier Should Be Non-empty");
return false;
}
// identifier 检查 需要连接数据库
if (IdentifierValidate() == false)
{
MessageBox.Show("Identifier Should Consist Of 'A-Z','a'-'z' '@' and '_'");
return false;
}
// 检查过关
return true;
}
public static int Existed(string _identifier)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";
conn.ConnectionString = connStr;
try
{
conn.Open();
}
catch
{
MessageBox.Show("Database Connection Error");
return -1; // 代表DB 连接故障
}
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from t_calpuf_conf where identifier=\"" + _identifier + "\"";
MySqlDataReader reader = cmd.ExecuteReader();
// 先检查identifier是否已经存在
if (reader.HasRows)
{
conn.Close();
return 1;
}
else
{
conn.Close();
return 0;
}
// 关联新的cmd conn需要重启
}
public Form1()
{
InitializeComponent();
Point point = new Point(Screen.PrimaryScreen.WorkingArea.Width / 2 - this.Size.Width / 2, Screen.PrimaryScreen.WorkingArea.Height / 2 - this.Size.Height / 2);//窗体位置
this.StartPosition = FormStartPosition.Manual;
this.Location = point;
// 导入配置文件
loadIni();
}
// 选择文件
// db Conf
private void button8_Click(object sender, EventArgs e)
{
ServerConf form = new ServerConf();
Point point = new Point(Screen.PrimaryScreen.WorkingArea.Width / 2 - form.Size.Width / 2, Screen.PrimaryScreen.WorkingArea.Height / 2 - form.Size.Height / 2);//窗体位置
form.StartPosition = FormStartPosition.Manual;
form.Location = point;
form.ShowDialog();
}
public void enable()
{
this.Enabled = true;
}
// 从另一个表里
// Refresh terrel & ctgproc files
private void button9_Click(object sender, EventArgs e)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";
conn.ConnectionString = connStr;
try
{
conn.Open();
}
catch
{
MessageBox.Show("Database Connection Error");
return;
}
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select path,type from t_geo_file";
System.Data.Common.DbDataReader reader = cmd.ExecuteReader();
if(!reader.HasRows)
{
MessageBox.Show("No GeoFiles Are Available,Please Contact The Server Provider");
return;
}
int indexOfTerrel = 0;
int indexOfCtgproc = 0;
// 每个task
while (reader.Read())
{
string path = reader.GetString(reader.GetOrdinal("path"));
// 生成inp 文件
string name = reader.GetString(reader.GetOrdinal("type"));
if (name == "terrel")
terrelFiles[indexOfTerrel++] = path;
else ctgprocFiles[indexOfCtgproc++] = path;
}
if (indexOfTerrel==0)
{
MessageBox.Show("No Terrel Files Are Available,Please Contact The Server Provider");
return;
}
if (indexOfCtgproc == 0)
{
MessageBox.Show("No Ctgproc Files Are Available,Please Contact The Server Provider");
return;
}
// 将文件名作为数据源
for (int i = 0; i < indexOfTerrel;i++ )
{
terrelFileNames[i] = getName(terrelFiles[i]);
}
for (int i = 0; i < indexOfCtgproc;i++ )
{
ctgprocFileNames[i] = getName(ctgprocFiles[i]);
}
cmd.Dispose();//此处可以不用调用,
conn.Close();// 离开 using 块, connection 会自行关闭
// 更新数据源
comboBox1.DataSource = terrelFileNames;
comboBox2.DataSource = ctgprocFileNames;
MessageBox.Show("Update Successful");
}
// 【Run Terrel】
private void button5_Click(object sender, EventArgs e)
{
// 首先更新后台记录的一些参数
if (this.ParamAssignAndCheck() == false)
{
// 提示已经弹窗过了
return;
}
// 是否已经用过此Identifier
if(Existed(identifier)==1)
{
MessageBox.Show("This Identifier Has Been Occupied,Please Choose Another");
return;
}
//这才是最普通的
else
{
// 本模型特殊的
if (comboBox1.SelectedIndex < 0)
{
MessageBox.Show("Please select a GTOPO30 File");
return;
}
gtopo30= terrelFiles[comboBox1.SelectedIndex];
// 四个基本参数验证,数据库,文件,日期都通过 开始插入数据
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";
conn.ConnectionString = connStr;
conn.Open();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
cmd.Connection = conn;
// 关联新的cmd conn需要重启
cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,xrefkm,yrefkm,nx,ny,dgridkm,identifier,modelname,gtopo30,done) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10)";
cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@5", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@6", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@7", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@8", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@9", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@10", MySql.Data.MySqlClient.MySqlDbType.Int32);
cmd.Parameters[0].Value = startdate;
cmd.Parameters[1].Value = enddate;
cmd.Parameters[2].Value = xrefkm;
cmd.Parameters[3].Value = yrefkm;
cmd.Parameters[4].Value = nx;
cmd.Parameters[5].Value = ny;
cmd.Parameters[6].Value = dgridkm;
cmd.Parameters[7].Value = identifier;
cmd.Parameters[8].Value = "terrel";
cmd.Parameters[9].Value = gtopo30;
cmd.Parameters[10].Value = 0;
// 已经确认过可以连接了
cmd.ExecuteNonQuery();
cmd.Dispose();//此处可以不用调用,
conn.Close();// 离开 using 块, connection 会自行关闭
MessageBox.Show("Submit Successful");
// 提交一次任务之后初始化 不成功时保留不抹掉
this.init();
}
}
// Run Ctgproc
private void button6_Click(object sender, EventArgs e)
{
// 首先更新后台记录的一些参数
if (this.ParamAssignAndCheck() == false)
{
// 提示已经弹窗过了
return;
}
// 是否已经用过此Identifier
if (Existed(identifier) == 1)
{
MessageBox.Show("This Identifier Has Been Occupied,Please Choose Another");
return;
}
//这才是最普通的
else
{
if (comboBox2.SelectedIndex < 0)
{
MessageBox.Show("Please select a GLAZAS File");
return;
}
glazas = ctgprocFiles[comboBox2.SelectedIndex];
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";
conn.ConnectionString = connStr;
conn.Open();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
cmd.Connection = conn;
// 关联新的cmd conn需要重启
cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,xrefkm,yrefkm,nx,ny,dgridkm,identifier,modelname,glazas,done) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10)";
cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@5", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@6", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@7", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@8", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@9", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@10", MySql.Data.MySqlClient.MySqlDbType.Int32);
cmd.Parameters[0].Value = startdate;
cmd.Parameters[1].Value = enddate;
cmd.Parameters[2].Value = xrefkm;
cmd.Parameters[3].Value = yrefkm;
cmd.Parameters[4].Value = nx;
cmd.Parameters[5].Value = ny;
cmd.Parameters[6].Value = dgridkm;
cmd.Parameters[7].Value = identifier;
cmd.Parameters[8].Value = "ctgproc";
cmd.Parameters[9].Value = glazas;
cmd.Parameters[10].Value = 0;
// 已经确认过可以连接了
cmd.ExecuteNonQuery();
cmd.Dispose();//此处可以不用调用,
conn.Close();// 离开 using 块, connection 会自行关闭
MessageBox.Show("Submit Successful");
// 提交一次任务之后初始化 不成功时保留不抹掉
this.init();
}
}
// Run Makegeo--综合前一二两个模型
private void button3_Click(object sender, EventArgs e)
{
// 首先更新后台记录的一些参数
// Common
if (this.ParamAssignAndCheck() == false)
{
// 提示已经弹窗过了
return;
}
// 是否已经用过此Identifier
if (Existed(identifier) == 1)
{
MessageBox.Show("This Identifier Has Been Occupied,Please Choose Another");
return;
}
//这才是最普通的
else
{
// 本模型特殊的
if (comboBox1.SelectedIndex < 0)
{
MessageBox.Show("Please select a GTOPO30 File");
return;
}
gtopo30 = terrelFiles[comboBox1.SelectedIndex];
// 四个基本参数验证,数据库,文件,日期都通过 开始插入数据
if (comboBox2.SelectedIndex < 0)
{
MessageBox.Show("Please select a GLAZAS File");
return;
}
glazas = ctgprocFiles[comboBox2.SelectedIndex];
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";
conn.ConnectionString = connStr;
conn.Open();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
cmd.Connection = conn;
// 关联新的cmd conn需要重启
cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,xrefkm,yrefkm,nx,ny,dgridkm,identifier,modelname,gtopo30,glazas,done) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11)";
cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@5", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@6", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@7", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@8", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@9", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@10", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@11", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters[0].Value = startdate;
cmd.Parameters[1].Value = enddate;
cmd.Parameters[2].Value = xrefkm;
cmd.Parameters[3].Value = yrefkm;
cmd.Parameters[4].Value = nx;
cmd.Parameters[5].Value = ny;
cmd.Parameters[6].Value = dgridkm;
cmd.Parameters[7].Value = identifier;
cmd.Parameters[8].Value = "makegeo";
cmd.Parameters[9].Value = gtopo30;
cmd.Parameters[10].Value = glazas;
cmd.Parameters[11].Value = 0;
cmd.ExecuteNonQuery();
cmd.Dispose();//此处可以不用调用,
conn.Close();// 离开 using 块, connection 会自行关闭
MessageBox.Show("Submit Successful");
// 提交一次任务之后初始化 不成功时保留不抹掉
this.init();
}
}
// Run calwrf -- 只需要选日期
private void button7_Click(object sender, EventArgs e)
{
// DateAssignAndCheck 包含判断与赋值
if (this.DateAssignAndCheck() == false)
{
MessageBox.Show("Date Selection Error");
return;
}
// 很特殊 因为不在ParamAssign里面
identifier = textBox6.Text;
if(identifier=="")
{
MessageBox.Show("Identifier Should Be Non-empty");
return;
}
if (IdentifierValidate() == false)
{
MessageBox.Show("Identifier Should Consist Of 'A-Z','a'-'z' '@' and '_'");
return;
}
if (DbTest() == false)
{
return;
}
if (Existed(identifier) == 1)
{
MessageBox.Show("This Identifier Has Been Occupied,Please Choose Another");
return;
}
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";
conn.ConnectionString = connStr;
conn.Open();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,identifier,modelname,done) values(@0,@1,@2,@3,@4)";
cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.Int32);
cmd.Parameters[0].Value = startdate;
cmd.Parameters[1].Value = enddate;
cmd.Parameters[2].Value = identifier;
cmd.Parameters[3].Value = "calwrf";
cmd.Parameters[4].Value = 0;
// 已经确认过可以连接了
cmd.ExecuteNonQuery();
cmd.Dispose();//此处可以不用调用,
conn.Close();// 离开 using 块, connection 会自行关闭
MessageBox.Show("Submit Successful");
// 提交一次任务之后初始化
this.init();
}
// Run calmet--需要calwrf的结果 还需要makegeo 而makegeo 依赖于terrel 和ctgproc
private void button4_Click(object sender, EventArgs e)
{
// 需要选日期
if (DateAssignAndCheck() == false)
{
MessageBox.Show("Date Selection Error");
return ;
}
if (this.ParamAssignAndCheck() == false)
{
// 提示已经弹窗过了
return;
}
// 是否已经用过此Identifier
if (Existed(identifier) == 1)
{
MessageBox.Show("This Identifier Has Been Occupied,Please Choose Another");
return;
}
//这才是最普通的
else
{
// 本模型特殊的
if (comboBox1.SelectedIndex < 0)
{
MessageBox.Show("Please select a GTOPO30 File");
return;
}
gtopo30 = terrelFiles[comboBox1.SelectedIndex];
// 四个基本参数验证,数据库,文件,日期都通过 开始插入数据
if (comboBox2.SelectedIndex < 0)
{
MessageBox.Show("Please select a GLAZAS File");
return;
}
glazas = ctgprocFiles[comboBox2.SelectedIndex];
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";
conn.ConnectionString = connStr;
conn.Open();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
cmd.Connection = conn;
// 关联新的cmd conn需要重启
cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,xrefkm,yrefkm,nx,ny,dgridkm,identifier,modelname,gtopo30,glazas,done) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11)";
cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@5", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@6", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@7", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@8", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@9", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@10", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@11", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters[0].Value = startdate;
cmd.Parameters[1].Value = enddate;
cmd.Parameters[2].Value = xrefkm;
cmd.Parameters[3].Value = yrefkm;
cmd.Parameters[4].Value = nx;
cmd.Parameters[5].Value = ny;
cmd.Parameters[6].Value = dgridkm;
cmd.Parameters[7].Value = identifier;
cmd.Parameters[8].Value = "calmet";
cmd.Parameters[9].Value = gtopo30;
cmd.Parameters[10].Value = glazas;
cmd.Parameters[11].Value = 0;
cmd.ExecuteNonQuery();
cmd.Dispose();//此处可以不用调用,
conn.Close();// 离开 using 块, connection 会自行关闭
MessageBox.Show("Submit Successful");
// 提交一次任务之后初始化 不成功时保留不抹掉
this.init();
}
}
// Choose a file
private void button2_Click_1(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = false; // 单选
if (dialog.ShowDialog() == DialogResult.OK)
{
SrcPath = dialog.FileName;
// 1 显示上传的文件路径 2 连接服务器将文件上传到blob里面去~ db端取出来
label13.Text = "Selected: "+SrcPath;
}
else
{
MessageBox.Show("No file is selected");
}
}
// Upload and Run calpuff
private void button1_Click_1(object sender, EventArgs e)
{
if (SrcPath == "")
{
MessageBox.Show("Please Choose a File First");
return;
}
else
{
// 检查之前几个模型 提醒用户选择同样的Id,run之间的几个模型
// 将文件读入字节流
byte[] SrcBiFile = null;
SrcBiFile = File.ReadAllBytes(SrcPath);
//然后存到数据库里就行了~ 几乎是一样的
if (this.ParamAssignAndCheck() == false)
{
// 提示已经弹窗过了
return;
}
// 需要选日期
if (DateAssignAndCheck() == false)
{
MessageBox.Show("Date Selection Error");
return;
}
if (comboBox1.SelectedIndex < 0)
{
MessageBox.Show("Please select a GTOPO30 File");
return;
}
gtopo30 = terrelFiles[comboBox1.SelectedIndex];
if (comboBox2.SelectedIndex < 0)
{
MessageBox.Show("Please select a GLAZAS File");
return;
}
glazas = ctgprocFiles[comboBox2.SelectedIndex];
// 四个基本参数验证,数据库,文件,日期都通过 开始插入数据
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";
conn.ConnectionString = connStr;
conn.Open();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
cmd.Connection = conn;
// 关联新的cmd conn需要重启
cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,xrefkm,yrefkm,nx,ny,dgridkm,identifier,modelname,srcfile,gtopo30,glazas,done) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12)";
cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@5", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@6", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@7", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@8", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@9", MySql.Data.MySqlClient.MySqlDbType.Blob);
cmd.Parameters.Add("@10", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@11", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters.Add("@12", MySql.Data.MySqlClient.MySqlDbType.VarChar);
cmd.Parameters[0].Value = startdate;
cmd.Parameters[1].Value = enddate;
cmd.Parameters[2].Value = xrefkm;
cmd.Parameters[3].Value = yrefkm;
cmd.Parameters[4].Value = nx;
cmd.Parameters[5].Value = ny;
cmd.Parameters[6].Value = dgridkm;
cmd.Parameters[7].Value = identifier;
cmd.Parameters[8].Value = "calpuff";
cmd.Parameters[9].Value = SrcBiFile;
cmd.Parameters[10].Value = gtopo30;
cmd.Parameters[11].Value = glazas;
cmd.Parameters[12].Value = 0;
// 已经确认过可以连接了
cmd.ExecuteNonQuery();
cmd.Dispose();//此处可以不用调用,
conn.Close();// 离开 using 块, connection 会自行关闭
MessageBox.Show("Submit Successful");
// 提交一次任务之后初始化
this.init();
}
}
// 用于筛选文件名用
public static string getName(string path)
{
int index =0;
int length=path.Length;
for(int i=0;i<length;i++)
{
if (path[i] == '\\') index = i;
}
return path.Substring(index + 1, length - index - 1);
}
public static void loadIni()
{
string iniPath = System.Environment.CurrentDirectory + "\\" + "CalpuffModel.ini";
if (!File.Exists(iniPath))
{
MessageBox.Show("CalpufModel.ini is missing ,please place it in " + iniPath);
return;
}
// 先获取最大行~
int lineCnt = 0;
FileStream fs = new FileStream(iniPath, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string tempStr = "";
while (tempStr != null)
{
tempStr = sr.ReadLine();
lineCnt++;
}
lineCnt--; // 有一位位移
string[] ini = new string[lineCnt + 100];
fs = new FileStream(iniPath, FileMode.Open, FileAccess.Read);
sr = new StreamReader(fs);
int index = 0;
tempStr = "";
while (tempStr != null)
{
tempStr = sr.ReadLine();
ini[index++] = tempStr;
}
index--; // 此时index就是行数
// 这样做其实很麻烦的 完全可以一次性就申请多一点 但是既然现成的代码也有 就这样写吧
string[] key = new string[index];
string[] value = new string[index];
string[] keyAndValue = new string[100];// 2就够了
for (int i = 0; i < index; i++)
{
string curStr = ini[i];
int wordsCnt = 0;
infoExtract(keyAndValue, ref wordsCnt, curStr);
key[i] = keyAndValue[0];
value[i] = keyAndValue[1];
}
// 有点枚举 但是数据规模比较小
for (int i = 0; i < index; i++)
{
string curKey = key[i];
string curValue = value[i];
if (curKey == "dbIp") dbIp = curValue;
else if (curKey == "dbName") dbName = curValue;
else if (curKey == "dbUser") dbUser = curValue;
else if (curKey == "dbPasswd") dbPasswd = curValue;
//else if (curKey == "ftpIp") ftpIp = curValue;
//else if (curKey == "ftpUser") ftpUser = curValue;
//else if (curKey == "ftpPasswd") ftpPasswd = curValue;
//else if (curKey == "inpDir") inpDir = curValue;
//else if (curKey == "exeDir") exeDir = curValue;
//else if (curKey == "wrfoutDir") wrfoutDir = curValue;
//else if (curKey == "outputDir") outputDir = curValue;
//else if (curKey == "srcDir") srcDir = curValue;
}
sr.Close();
fs.Close();
}
public static void infoExtract(string[] param, ref int tokenNum, string str)
{
str = str.Trim();
str += " ";
int cnt = 0;
while (str != " ")
{
for (int i = 0; i < str.Length; i++)
{
if (str[i] == ' ')
{
param[cnt++] = str.Substring(0, i);
str = str.Substring(i, str.Length - i);
str = str.Trim();
str += " "; // 为了最后一次推出循环
break; // 这个break 很关键 因为找到了就应该进入下一次循环了
}
}
}
tokenNum = cnt;
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start("http://calpuff.sinaapp.com");
}
private void Form1_Load(object sender, EventArgs e)
{
}
} // class definition
} // namesapce
calpuff-client-Form1.cs
最新推荐文章于 2024-04-29 21:52:39 发布