#副標=讓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