#副標=讓Spring解放你的程式碼(3)
#大標=爆湯的春天
#眉標=J2EE
#作者=文/歐宣修
===========box 程式1============
public class SimpleScanJudge implements ScanJudge{
private int alarmTc = -1;
private int baseTemp;
public SimpleScanJudge(int baseTemp) {
this.baseTemp = baseTemp;
//設置判斷基準溫度
}
public JudgeResult judge(RealtimeDataInput
input) {
alarmTc = -1; //reset
float[] tcs = input.getTcs();
//判別所有測點溫度是否有高於基準溫度
for (int i = 0; i < tcs.length; i++) {
if (tcs[i] > baseTemp) {
alarmTc = i;
break;
}
}
if (alarmTc > -1) { // alarm happened
return JudgeResult.ALARM;
}
return JudgeResult.NORMAL;
}
public int getAlarmTc() {
return this.alarmTc;
}
}
============end=============
===========box 程式2============
public class SimpleScanJudgeTest extends TestCase {
private ScanJudge scanjudge;
public static void main(String[] args) {
junit.textui.TestRunner.run(
SimpleScanJudgeTest.class);
}
protected void setUp() throws Exception {
super.setUp();
scanjudge = new SimpleScanJudge(300);
}
protected void tearDown() throws Exception {
super.tearDown();
}
/*
* Test method for
* 'idv.senshaw.sccbo.server.SimpleScanJudge.
judge(RealtimeDataInput)'
*/
public void testJudge() {
Timestamp readTime =
new java.sql.Timestamp(System.currentTimeMillis());
float[] tcs = { 100, 200, 200, 50, 100 };
RealtimeDataInput input = new
RealtimeDataInputImpl(readTime,tcs);
ScanJudge.JudgeResult result = this.
scanjudge.judge(input);
this.assertEquals( ScanJudge.JudgeResult.
NORMAL ,result);
}
/*
* Test method for 'idv.senshaw.sccbo.server.
SimpleScanJudge.getAlarmTc()'
*/
public void testGetAlarmTc() {
Timestamp readTime =
new java.sql.Timestamp(System.currentTimeMillis());
float[] tcs = { 100, 200, 200, 50, 310 };
RealtimeDataInput input = new
RealtimeDataInputImpl(readTime,tcs);
ScanJudge.JudgeResult result = this.
scanjudge.judge(input);
this.assertEquals( ScanJudge.JudgeResult.
ALARM ,result);
int actualIndex = this.scanjudge.
getAlarmTc();
this.assertEquals( 4,actualIndex);
}
}
==============end============
=========box 程式3=========
…
…
300
=============end===========
===========box 程式4=============
public class Main {
public static void main(String[] args) {
ApplicationContext context = new
FileSystemXmlApplicationContext("sccbo.xml");
RealtimeServer server =
(RealtimeServer)context.getBean( "realtimeServer");
Thread thread = new Thread((Runnable)server);
thread.start();
}
}
===============end============
=========box 程式5==========
// 繼承JdbcDaoSupport並實作RealtimeTempDao
public class RealtimeTempDaoJdbc extends
JdbcDaoSupport
implements RealtimeTempDao {
public void save(final RealtimeDataInput input) {
String sql = "insert into realtime_temp (
temp_id, read_time, tc_no, tc_value) " + "values
(?, ?, ?, ?)";
long id = System.currentTimeMillis();
for (int i = 0; i < input.getTcs().length; i++) {
//使用JdbcTemplate進行資料庫操作
動作
this.getJdbcTemplate().update( sql,
new Object[] { new Long(id), input.
getReadTime(), new Integer(i), new Float(input.
getTcs()[i]) });
id++;
}
}
以下略…
==============end=========
===========box 程式6============
//繼承HibernateDaoSupport
public class RealtimeTempDaoHibernate extends
HibernateDaoSupport
implements RealtimeTempDao {
public void save(RealtimeDataInput input) {
for (int i=0;i