⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trainchannel.java

📁 JAVA邮件系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.io.*;
import java.text.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class TrainChannel extends Channel
{
	TrainChannel()
	{
		
		channelName = "列车提醒";
	}
	
	public void makeChannel(Person p,TemplateList tempList,HtmlOut desHtml)
	{
		SingleTemplate st;
		st = tempList.searchTemplate("频道右");
		if(st==null)
			return ;
		int nKey = st.getKeyNum ();
		String sKey ;
		for(int i=0;i<nKey;i++){
			desHtml.addString (st.getStringAt (i));
			sKey = st.getKeyAt (i);
			if( sKey .compareTo("cgi-path")==0 )
				desHtml.addString (CommonMethods.sHostNameCGI);
			if( sKey.compareTo("标题")==0 )
				desHtml.addString (	channelName );
			if( sKey.compareTo("EditCGI")==0 )
				desHtml.addString ("EditChannel?channel=train");
			if( sKey.compareTo("CloseCGI")==0 )
				desHtml.addString ("CloseChannel?channel=train");
			if( sKey.compareTo("内容")==0 )
				makeChannelContents( p,tempList, desHtml);
		}
		desHtml.addString(st.getEndString());
	}
	
	public boolean editChannel(Person p,HtmlOut desHtml)
	{
		
		TemplateList tempList = CommonMethods.gettraintxTemplate();
		
		SingleTemplate st;
		st = tempList.searchTemplate("ROOT");
		if(st==null){
			desHtml.setErrorID (desHtml.SINGLE_TEMPLATE_NOTFIND ,
								"","模板错误"
								,"Login");
			desHtml.outHtml ();
			return false;
		}
		//关键字替换
		int nKey = st.getKeyNum ();
		String sKey ;
		for(int i=0;i<nKey;i++){
			desHtml.addString (st.getStringAt (i));
			sKey = st.getKeyAt (i);
			if( sKey .compareTo("cgi-path")==0 )
				desHtml.addString (CommonMethods.sHostNameCGI);
			if( sKey.compareTo("内容")==0 )
				makeChannelContents(p,tempList,desHtml);
			
		}
		desHtml.addString(st.getEndString());
		return true;
	}
	
	
	// 生成这个用户的提醒列表
	public void makeChannelContents(Person p,TemplateList tempList,HtmlOut desHtml)
	{
		ResultSet rs;
		String queryString;
		String trainid,station,txdate,station_start,name,srdate,auto;
		DBOperater DB = new DBOperater ("train");
		queryString="select a.trainid,a.station,txdate,station_start,name,srdate,c.auto from traintx a,train_info c where username='"+p.username +"' and a.trainid=c.id and a.station=c.station order by txdate";
		rs = DB.executeQuery (queryString);
			   
				if(rs!=null)
				{
					try{
	   	    			SingleTemplate st0,st1;
	   	    			st0 = tempList.searchTemplate("火车列表");
    					st1 = tempList.searchTemplate("单支火车");
	   	    			int i1,i2;
	   	    			for(i1=0;i1<st0.getKeyNum();i1++)
	   	    			{
	   	    				desHtml.addString(st0.getStringAt(i1));
							if(st0.getKeyAt(i1).compareTo("cgi-path")==0){
								desHtml.addString(CommonMethods.sHostNameCGI);
							}
	   	    				if(st0.getKeyAt(i1).compareTo("全部火车")==0)
	   	    				{
			   	    			while(rs.next())
   				    			{
   				    				trainid = rs.getString(1).trim ();
   				    				station = rs.getString(2).trim ();
   				    				txdate = rs.getString(3).trim ();
									station_start = rs.getString(4).trim ();
									try{
										name = rs.getString(5).trim ();
										}catch(Exception e){
										name="";
										}   
									srdate=rs.getString (6).trim ();
									auto=rs.getString (7).trim ();
									txdate=txdate.substring (0,16);
   				    				for(i2=0;i2<st1.getKeyNum();i2++)
   				    				{
   				    					desHtml.addString(st1.getStringAt(i2));
										if(st1.getKeyAt(i2).compareTo("cgi-path")==0){
											desHtml.addString(CommonMethods.sHostNameCGI);
										}
   				    					if(st1.getKeyAt(i2).compareTo("车次")==0)
   				    						desHtml.addString("<a href=TrainResult1?auto="+auto+" target=_blank>"+trainid+"</a>");
   				    					if(st1.getKeyAt(i2).compareTo("乘车站")==0)
   				    						desHtml.addString(station_start);
										if(st1.getKeyAt(i2).compareTo("到站")==0)
   				    						desHtml.addString(station);
										if(st1.getKeyAt(i2).compareTo("接/送人")==0)
   				    						desHtml.addString(name);
   				    					if(st1.getKeyAt(i2).compareTo("提醒时间")==0)
   				    						desHtml.addString(txdate);
   				    					if(st1.getKeyAt(i2).compareTo("时间删除")==0)
   				    						desHtml.addString(srdate);
										if(st1.getKeyAt(i2).compareTo("车次删除")==0)
   				    						desHtml.addString(trainid);
										if(st1.getKeyAt(i2).compareTo("站名删除")==0)
   				    						desHtml.addString(station);
   				    						
   				    				}
   				    				desHtml.addString(st1.getEndString());
   				    			}
	   	    				}
	   	    		
	   	    			}
	   					desHtml.addString(st0.getEndString());
					}catch(Exception e){
						 }   	
			}
				DB.close ();
		
	}
	// 增加提醒车次
	boolean addTrain(String name,String trainid,String station,String station_start,String ccrq,String tqtx,Person p,HtmlOut desHtml)
	{
		if(trainid.compareTo ("")==0||station.compareTo ("")==0||station_start.compareTo ("")==0||ccrq.compareTo ("")==0||tqtx.compareTo ("")==0)
		{
			desHtml.setErrorID (desHtml.SHOW_SIMPLE_MESSAGE ,"",
								"除了接送人外各项输入都不能为空!"
								,"EditChannel?channel=train");

			return false;
		}
		if(!checktrainid(trainid))
		{
			desHtml.setErrorID (desHtml.SHOW_SIMPLE_MESSAGE ,"",
								"输入的车次不合法!"
								,"EditChannel?channel=train");

			return false;
		}
		if(!checkstation(station,station_start,trainid))
		{
			desHtml.setErrorID (desHtml.SHOW_SIMPLE_MESSAGE ,"",
								"输入的站名不合法!"
								,"EditChannel?channel=train");
		
			return false;
		}
		if(checkusertrainid(ccrq,station,trainid,p))
		{
			desHtml.setErrorID (desHtml.SHOW_SIMPLE_MESSAGE ,"",
								"该车次已经被定制!"
								,"EditChannel?channel=train");
	
			return false;
		}
		ResultSet rs;
		DBOperater DB = new DBOperater ("train");
		String queryString,tempdate="",tempstation="",txdate="",srdate="";
		//保留乘车日期
		srdate=ccrq;
		boolean flag=false;
		//查询train_info表获得该车次到站的详细信息
		queryString="select station,on_time from train_info where id='"+trainid+"'";
		rs=DB.executeQuery (queryString);
		//定义日期和时间数组,日历对象
		String riqi[];
		riqi=new String[3];
		String shijian[];
		shijian=new String[2];
		Calendar calendar;
		calendar=Calendar.getInstance ();
		
		int posi,i=0,start=0,nian,yue,ri,shi,fen,tqshijian,tempposi=0;
		String s_shijian,s_riqi;
		
		if(rs!=null)
		{
			try{
				while(rs.next())
				{
					//从数据库里获得到站名和到站时间
					tempstation=rs.getString (1).trim();
					tempdate=rs.getString (2).trim ();
					//生成当前到站的完整时间
					tempdate=ccrq+" "+tempdate;
					
					//若当前站和乘车站相同
					if(tempstation.compareTo (station_start)==0)
					{
						//标识程序开始计时
						flag=true;
						txdate=tempdate;
						//若到站和乘车站相同
						if(station.compareTo (station_start)==0)
						{		
							//分离时间和日期
							i=0;
							start=0;
							posi=tempdate.indexOf (" ",0);
							s_riqi=tempdate.substring (0,posi);
							posi=posi+1;
							s_shijian=tempdate.substring (posi,tempdate.length ());
							//分离日期	
								while(true)
								{
									posi =s_riqi.indexOf("-",start);
									if(posi==-1)
									{
										riqi[i]=s_riqi.substring (tempposi,s_riqi.length ());
										break;
									}
									riqi[i]=s_riqi.substring (start,posi);
									tempposi=posi+1;
									start=start+riqi[i].length()+1;
									i=i+1;
								}
								//分离时间
								i=0;
								start=0;
								while(true)
								{
									//分两种情况
									posi =s_shijian.indexOf(":",start);
									if(posi==-1)
										posi =s_shijian.indexOf(".",start);
									if(posi==-1)
									{
										shijian[i]=s_shijian.substring (tempposi,s_shijian.length ());
										break;
									}
									shijian[i]=s_shijian.substring (start,posi);
									tempposi=posi+1;
									start=start+riqi[i].length()+1 ;
									i=i+1;
								}
						      //分离出来的整型日期时间值
								nian=Integer.valueOf(riqi[0]).intValue();
								yue=Integer.valueOf(riqi[1]).intValue();
								yue=yue-1;
								ri=Integer.valueOf(riqi[2]).intValue();
								shi=Integer.valueOf(shijian[0]).intValue();
								fen=Integer.valueOf(shijian[1]).intValue();
								tqshijian=Integer.valueOf(tqtx).intValue();
								//设置当前日历
								try{
									calendar.set (nian,yue,ri,shi,fen);
									}catch(Exception e){
									desHtml.setErrorID (desHtml.SHOW_SIMPLE_MESSAGE ,"",
														"输入的日期不合法!"
														,"EditChannel?channel=train");

									return false;
									}
							   //计算提前后的日历
								calendar.add (calendar.HOUR_OF_DAY,-tqshijian);
								nian=calendar.get(Calendar.YEAR);
								yue=calendar.get(Calendar.MONTH);
								yue=yue+1;
								ri=calendar.get(Calendar.DATE ); 
								shi=calendar.get(Calendar.HOUR_OF_DAY); 
								fen=calendar.get(Calendar.MINUTE);  
							   //类型调整
								riqi[0]=String.valueOf (nian).toString ();
								riqi[1]=String.valueOf (yue).toString ();
								riqi[2]=String.valueOf (ri).toString ();
								shijian[0]=String.valueOf (shi).toString ();
								shijian[1]=String.valueOf (fen).toString ();
								
								//格式调整
								if(yue<10)
									riqi[1]="0"+riqi[1];
							
								if(ri<10)
									riqi[2]="0"+riqi[2];
							
								if(shi<10)
									shijian[0]="0"+shijian[0];
								
								if(fen<10)
									shijian[1]="0"+shijian[1];
							
								txdate=riqi[0]+"-"+riqi[1]+"-"+riqi[2]+" "+shijian[0]+":"+shijian[1];
							    //退出while循环
								break;
							
						
						}
						continue;
					}
					if(flag==true)
					{
						//若当前到站时间要比上一站到站时间大,或相等
						if(tempdate.compareTo(txdate)>=0)
						{
							//提醒时间则为当前到站时间
							txdate=tempdate;
							//若当前站为下车站
							if(tempstation.compareTo(station)==0)
							{
								//分离日期时间
								i=0;
								start=0;
								posi=tempdate.indexOf (" ",0);
								s_riqi=tempdate.substring (0,posi);
								posi=posi+1;
								s_shijian=tempdate.substring (posi,tempdate.length ());
								
								//分离日期
								
								while(true)
								{
									posi =s_riqi.indexOf("-",start);
									if(posi==-1)
									{
										riqi[i]=s_riqi.substring (tempposi,s_riqi.length ());
										break;
									}
									riqi[i]=s_riqi.substring (start,posi);
									tempposi=posi+1;
									start=start+riqi[i].length()+1;
									i=i+1;
								}
								//分离时间
								i=0;
								start=0;
								while(true)
								{
									posi =s_shijian.indexOf(":",start);
									if(posi==-1)
										posi =s_shijian.indexOf(".",start);
									if(posi==-1)
									{
										shijian[i]=s_shijian.substring (tempposi,s_shijian.length ());
										break;
									}
									shijian[i]=s_shijian.substring (start,posi);
									tempposi=posi+1;
									start=start+riqi[i].length()+1 ;
									i=i+1;
								}
						       //分离出来的整型日期时间值
								nian=Integer.valueOf(riqi[0]).intValue();
								yue=Integer.valueOf(riqi[1]).intValue();
								yue=yue-1;
								ri=Integer.valueOf(riqi[2]).intValue();
								shi=Integer.valueOf(shijian[0]).intValue();
								fen=Integer.valueOf(shijian[1]).intValue();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -