看板 java 關於我們 聯絡資訊
(更新說明方式)請問大家如何將code不要寫死,不需要重新編譯code就有擴充性 對不起,之前描述太簡略,讓大家都聽不懂。 如果聽不懂我說的問題,麻煩請大家跟我說。 1.1 寫入google calendar 網頁 寫一個HTML網頁,讓使用者可以選"兩個title選項"選擇一POST到servlet, 透過servlet(使用gdate)把選好title data 寫入 Google 日曆 PS:google calendar 目的是 記錄使用者資料 ----------------------------------------------------------------------------- 1.2 抓取google calendar 程式 已知寫入google日曆有兩個事件選項。 自己用gdata for java 抓取 google calendar 每一天所有 title , 之後並區分(分類)title再寫入DB. PS:一天中會做"看書"、"吃飯" 、"看書"...等 很多title, 從 google calendar 全部抓出title 並計算每個title花費時間...等。 再區分(分類)title寫入自己DB" 以上Code已經寫好了 PS:抓出google calendar資料目的是要寫入自己DB,日後要做資料上研究分析 -------------------------------------------------------------------------------------------------------------------------------- 現在要把程式變成活(不能重新編譯)的改成 2.1 寫入google calendar 網頁 如果要將原本html網頁兩個選項"擴充,新增" 第多個 title選項 (三個四個以上) 2.2 抓取google calendar 程式 再抓取google calendar時,必須先得知(html網頁)有多少title並將title區分分類並寫 入自己的DB PS:如果 寫入google calendar 網頁 有3個title ,那 抓取google calendar 程式 必 須要區分分類 3個title 寫入自己DB PS:如果 寫入google calendar 網頁 有4個title ,那 抓取google calendar 程式 必 須要區分分類 4個title 寫入自己DB -------------------------------------------------------------------------------------------------------------------------------- 目前我知道重新改寫解決這問題,如果 不能改寫code重新編譯,要如何 設計 撰寫 呢? ========================================================================================== public class test { private static String id = "id@gmail.com"; private static String pw = "pw"; private static String StartYear = "2009"; private static String StartMonths = "08"; private static String StartDay = "01"; private static String EndYear = "2009"; private static String EndMonths = "10"; private static String EndDay = "01"; private static float titelnum011 = 0; private static float titelnum012 = 0; private static String titel011 = "日曆"; private static String titel012 = "meeting"; private static int num01 = 0; private static int daynum011 = 0; private static int daynum012 = 0; public static void main(String args[]) throws ServiceException, IOException, ParseException { SimpleDateFormat formatter = new SimpleDateFormat("yyyy" + "-" + "MM" + "-" + "dd"); Date date1 = formatter.parse(StartYear + "-" + StartMonths + "-" + StartDay); Calendar calendar = Calendar.getInstance(); calendar.setTime(date1); Date date2 = formatter.parse(EndYear + "-" + EndMonths + "-" + EndDay); long total = (date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24) + 1; System.out.println("總共 " + total + " 天數"); //============================================================================= CalendarService myService = new CalendarService("exampleCo-exampleApp-1"); myService.setUserCredentials(id, pw); URL feedUrl = new URL("http://www.google.com/calendar/feeds/default/private/full"); CalendarQuery myQuery = new CalendarQuery(feedUrl); int day = 0; //============================================================================= while (calendar.getTime().compareTo(date2) <= 0) {//一天一天抓取,解決 google一次只能抓取25DATA int y = calendar.get(Calendar.YEAR); int m = calendar.get(Calendar.MONTH) + 1; int d = calendar.get(Calendar.DATE); day = day + 1; String yyy = String.valueOf(y); String mmm; if (m < 10) { mmm = String.valueOf(m); mmm = "0" + mmm;//符合google api 輸入日期格式 } else { mmm = String.valueOf(m); } String ddd; if (d < 10) { ddd = String.valueOf(d); ddd = "0" + ddd;//符合google api 輸入日期格式 } else { ddd = String.valueOf(d); } //============================================================================= myQuery.setMinimumStartTime(DateTime.parseDateTime(yyy + "-" + mmm + "-" + ddd + "T00:00:00")); myQuery.setMaximumStartTime(DateTime.parseDateTime(yyy + "-" + mmm + "-" + ddd + "T23:59:59")); // Send the request and receive the response: CalendarEventFeed resultFeed = myService.query(myQuery, CalendarEventFeed.class); int size = resultFeed.getTotalResults();//取得日曆當天是否有資料筆 數 if (size != 0) { for (int i = 0; i < resultFeed.getEntries().size(); i++) { CalendarEventEntry entry = resultFeed.getEntries().get(i); String title = entry.getTitle().getPlainText();//日曆事件 //============================================================================= When t = entry.getTimes().get(0); DateTime start = t.getStartTime(); String s = start.toUiString(); int aa = (int) start.getValue();//日曆title開始時間 DateTime end = t.getEndTime(); String e = end.toUiString(); int bb = (int) end.getValue();//日曆title結束時間 int cc = (bb - aa) / 1000 / 60;//計算日曆title花費時間 float dd = (float) (cc / 60f); //========================================================== // 當 輸入(post)google日曆事件選項 新增第三筆" // 再 抓取google資料時必須要改寫並"新增第三筆"並區分事件 (titel)分別寫入DB // 如何把下程式碼寫活的, 具備擴充性, if (title.equals(titel011) || title.equals(titel012)) { System.out.println(); System.out.println("開始 " + s); System.out.println("事件 " + (i + 1) + " " + title); System.out.println("結束 " + e); System.out.println("花費時間 " + dd + "小時"); System.out.println("~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~"); if (title.equals(titel011)) { daynum011 = daynum011 + 1; titelnum011 = titelnum011 + dd; } if (title.equals(titel012)) { daynum012 = daynum012 + 1; titelnum012 = titelnum012 + dd; } //========================================================== }//for }//if } calendar.add(Calendar.DAY_OF_YEAR, 1);//while//日期加一天 }//while //統計各項事件 總次數 總時數 System.out.println("事件一 " + titel011 + " 總次數 " + daynum011 + " 總時數 " + titelnum011); System.out.println("事件二 " + titel012 + " 總次數 " + daynum012 + " 總時數 " + titelnum012); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.197.117
xlk:完全不OO 如果不能改寫重新編譯就砍掉重練XD 10/19 20:14
slalala:從CODE看 的確不OO 10/19 20:33
xlk:程式中判斷是否符合title的部分 若不改寫獨立到class外怎麼活? 10/19 20:44
slalala:感覺沒有那麼慘 如果OO化 應該可透過小技巧加上IoC 10/20 01:15
xlk:寫活是什麼意思? 跟不能重新編譯不是矛盾嗎? 原po請解釋一下ꀠ 10/20 02:07
costbook:我猜是如何設計UI的問題 10/20 05:57
nation6238:寫活的意似是 隨時能增加 title.equals("事件一") 10/20 13:26
nation6238:隨時增加或減少title.equals判斷 10/20 13:28
nation6238:網頁UI部分因該可以用AJAX辦到吧 10/20 13:31