@@ -41,33 +41,31 @@ class ClassTableWidgetDataProvider {
4141 private val tag = " [PDA ClassTableWidget][ClassTableWidgetDataProvider]"
4242
4343 fun reloadData (isShowingToday : Boolean , context : Context ) {
44- Log .i(tag, " reloadData() called." )
44+ Log .i(" $ tag[reloadData] " , " reloadData() called." )
4545 timeLineItem.clear()
4646
4747 widgetState = ClassTableWidgetLoadState .LOADING
4848 errorMessage = null
4949
5050 currentTime = LocalDateTime .now()
51+
52+ // Whether get tomorrow's timeline items
53+ if (! isShowingToday) {
54+ Log .i(" $tag [reloadData]" , " tomorrow data triggered" )
55+ currentTime = currentTime.plusDays(1 )
56+ }
5157 dayIndex = - 1
5258 weekIndex = - 1
53- Log .i(tag, " currentTime is $currentTime " )
59+ Log .i(" $ tag[reloadData] " , " currentTime is $currentTime " )
5460
5561 // Loading data
5662 loadBasicConfig(context)
5763 if (widgetState != ClassTableWidgetLoadState .LOADING ) {
5864 return
5965 }
6066
61- // Whether get tomorrow's timeline items
62- if (! isShowingToday) {
63- dayIndex + = 1
64- if (dayIndex > 7 ) {
65- dayIndex = 1
66- weekIndex + = 1
67- }
68- }
6967 Log .i(
70- tag,
68+ " $ tag[reloadData] " ,
7169 " Loading data for ${if (isShowingToday) " today" else " tomorrow" } (Week: $weekIndex , Day: $dayIndex )"
7270 )
7371
@@ -79,7 +77,7 @@ class ClassTableWidgetDataProvider {
7977 timeLineItem.sortBy { it.startTime }
8078 }
8179 } catch (e: Exception ) {
82- Log .e(tag, " Error during reloadData" , e)
80+ Log .e(" $ tag[reloadData] " , " Error during reloadData" , e)
8381 widgetState = ClassTableWidgetLoadState .ERROR_OTHER
8482 errorMessage = context.getString(
8583 R .string.widget_classtable_on_error,
@@ -91,7 +89,7 @@ class ClassTableWidgetDataProvider {
9189 }
9290
9391 widgetState = ClassTableWidgetLoadState .FINISHED
94- Log .i(tag, " reloadData() finished. Error: $errorMessage " )
92+ Log .i(" $ tag[reloadData] " , " reloadData() finished. Error: $errorMessage " )
9593 }
9694
9795 fun getCurrentTime (): LocalDateTime = currentTime
@@ -103,10 +101,10 @@ class ClassTableWidgetDataProvider {
103101 private fun loadBasicConfig (context : Context ) {
104102 val lenientJson = Json { ignoreUnknownKeys = true }
105103 try {
106- Log .i(tag, " loadBasicConfig() triggered" )
104+ Log .i(" $ tag[loadBasicConfig] " , " loadBasicConfig() triggered" )
107105
108106 val schoolClassTableData = ClassTableDataHolder .schoolClassJsonData.getOrElse {
109- Log .e(tag, " Failed to load schoolClassJsonData" , it)
107+ Log .e(" $ tag[loadBasicConfig] " , " Failed to load schoolClassJsonData" , it)
110108 widgetState = ClassTableWidgetLoadState .ERROR_COURSE
111109 errorMessage = it.localizedMessage ? : it.message
112110 ? : context.getString(R .string.widget_classtable_unknown_error)
@@ -115,45 +113,45 @@ class ClassTableWidgetDataProvider {
115113 try {
116114 lenientJson.decodeFromString<ClassTableData >(it)
117115 } catch (e: Exception ) {
118- Log .e(tag, " Failed to parse schoolClassJsonData" , e)
116+ Log .e(" $ tag[loadBasicConfig] " , " Failed to parse schoolClassJsonData" , e)
119117 widgetState = ClassTableWidgetLoadState .ERROR_COURSE
120118 errorMessage = e.localizedMessage ? : e.localizedMessage
121119 ? : context.getString(R .string.widget_classtable_unknown_error)
122120 return
123121 }
124122 }
125123 Log .i(
126- tag,
124+ " $ tag[loadBasicConfig] " ,
127125 " schoolClassTableData loaded, " + " semester code: ${schoolClassTableData.semesterCode} , " + " begin time: ${schoolClassTableData.termStartDay} , " + " semester length: ${schoolClassTableData.semesterLength} , " + " class detail length: ${schoolClassTableData.classDetail.size} , " + " time arrangement length: ${schoolClassTableData.timeArrangement.size} "
128126 )
129127
130128 val userDefinedClassData = ClassTableDataHolder .userDefinedClassJsonData.getOrElse {
131- Log .e(tag, " Failed to load userDefinedClassJsonData" , it)
129+ Log .e(" $ tag[loadBasicConfig] " , " Failed to load userDefinedClassJsonData" , it)
132130 widgetState = ClassTableWidgetLoadState .ERROR_COURSE_USER_DEFINED
133131 errorMessage = it.localizedMessage ? : it.message
134132 ? : context.getString(R .string.widget_classtable_unknown_error)
135133 return
136134 }?.takeIf {
137- Log .i(tag, " userDefinedClassJsonData is not blank: ${it.isNotBlank()} " )
135+ Log .i(" $ tag[loadBasicConfig] " , " userDefinedClassJsonData is not blank: ${it.isNotBlank()} " )
138136 it.isNotBlank()
139137 }?.let {
140138 try {
141139 lenientJson.decodeFromString<UserDefinedClassData >(it)
142140 } catch (e: Exception ) {
143- Log .e(tag, " Failed to parse userDefinedClassJsonData" , e)
141+ Log .e(" $ tag[loadBasicConfig] " , " Failed to parse userDefinedClassJsonData" , e)
144142 widgetState = ClassTableWidgetLoadState .ERROR_COURSE_USER_DEFINED
145143 errorMessage = e.localizedMessage ? : e.message
146144 ? : context.getString(R .string.widget_classtable_unknown_error)
147145 return
148146 }
149147 } ? : UserDefinedClassData .EMPTY
150148 Log .i(
151- tag,
149+ " $ tag[loadBasicConfig] " ,
152150 " userDefinedClassJsonData loaded, " + " userDefinedDetail length: ${userDefinedClassData.userDefinedDetail.size} , " + " time arrangement length: ${userDefinedClassData.timeArrangement.size} "
153151 )
154152
155153 examData = ClassTableDataHolder .examJsonData.getOrElse {
156- Log .e(tag, " Failed to load examJsonData" , it)
154+ Log .e(" $ tag[loadBasicConfig] " , " Failed to load examJsonData" , it)
157155 widgetState = ClassTableWidgetLoadState .ERROR_EXAM
158156 errorMessage = it.localizedMessage ? : it.message
159157 ? : context.getString(R .string.widget_classtable_unknown_error)
@@ -162,58 +160,58 @@ class ClassTableWidgetDataProvider {
162160 try {
163161 lenientJson.decodeFromString<ExamData >(it)
164162 } catch (e: Exception ) {
165- Log .e(tag, " Failed to parse examJsonData" , e)
163+ Log .e(" $ tag[loadBasicConfig] " , " Failed to parse examJsonData" , e)
166164 widgetState = ClassTableWidgetLoadState .ERROR_EXAM
167165 errorMessage = e.localizedMessage ? : e.message
168166 ? : context.getString(R .string.widget_classtable_unknown_error)
169167 return
170168 }
171169 }
172- Log .i(tag, " examJsonData loaded, subject length: ${examData.subject.size} " )
170+ Log .i(" $ tag[loadBasicConfig] " , " examJsonData loaded, subject length: ${examData.subject.size} " )
173171
174172 val physicsExperimentData = ClassTableDataHolder .physicsExperimentJsonData.getOrElse {
175- Log .e(tag, " Failed to load PhysicsExperimentData" , it)
173+ Log .e(" $ tag[loadBasicConfig] " , " Failed to load PhysicsExperimentData" , it)
176174 widgetState = ClassTableWidgetLoadState .ERROR_PHYSICS_EXPERIMENT
177175 errorMessage = it.localizedMessage ? : it.message
178176 ? : context.getString(R .string.widget_classtable_unknown_error)
179177 return
180178 }?.takeIf {
181- Log .i(tag, " physicsExperimentJsonData is not blank: ${it.isNotBlank()} " )
179+ Log .i(" $ tag[loadBasicConfig] " , " physicsExperimentJsonData is not blank: ${it.isNotBlank()} " )
182180 it.isNotBlank()
183181 }?.let {
184182 try {
185183 lenientJson.decodeFromString<List <ExperimentData >>(it)
186184 } catch (e: Exception ) {
187- Log .e(tag, " Failed to parse PhysicsExperimentData" , e)
185+ Log .e(" $ tag[loadBasicConfig] " , " Failed to parse PhysicsExperimentData" , e)
188186 widgetState = ClassTableWidgetLoadState .ERROR_PHYSICS_EXPERIMENT
189187 errorMessage = e.localizedMessage ? : e.message
190188 ? : context.getString(R .string.widget_classtable_unknown_error)
191189 return
192190 }
193191 } ? : emptyList()
194- Log .i(tag, " physicsExperimentJsonData loaded, data length: ${physicsExperimentData.size} " )
192+ Log .i(" $ tag[loadBasicConfig] " , " physicsExperimentJsonData loaded, data length: ${physicsExperimentData.size} " )
195193
196194 val otherExperimentData = ClassTableDataHolder .otherExperimentJsonData.getOrElse {
197- Log .e(tag, " Failed to load OtherExperimentData" , it)
195+ Log .e(" $ tag[loadBasicConfig] " , " Failed to load OtherExperimentData" , it)
198196 widgetState = ClassTableWidgetLoadState .ERROR_OTHER_EXPERIMENT
199197 errorMessage = it.localizedMessage ? : it.message
200198 ? : context.getString(R .string.widget_classtable_unknown_error)
201199 return
202200 }?.takeIf {
203- Log .i(tag, " otherExperimentJsonData is not blank: ${it.isNotBlank()} " )
201+ Log .i(" $ tag[loadBasicConfig] " , " otherExperimentJsonData is not blank: ${it.isNotBlank()} " )
204202 it.isNotBlank()
205203 }?.let {
206204 try {
207205 lenientJson.decodeFromString<List <ExperimentData >>(it)
208206 } catch (e: Exception ) {
209- Log .e(tag, " Failed to parse OtherExperimentData" , e)
207+ Log .e(" $ tag[loadBasicConfig] " , " Failed to parse OtherExperimentData" , e)
210208 widgetState = ClassTableWidgetLoadState .ERROR_OTHER_EXPERIMENT
211209 errorMessage = e.localizedMessage ? : e.message
212210 ? : context.getString(R .string.widget_classtable_unknown_error)
213211 return
214212 }
215213 } ? : emptyList()
216- Log .i(tag, " otherExperimentJsonData loaded, data length: ${otherExperimentData.size} " )
214+ Log .i(" $ tag[loadBasicConfig] " , " otherExperimentJsonData loaded, data length: ${otherExperimentData.size} " )
217215
218216 experimentData = physicsExperimentData + otherExperimentData
219217
@@ -222,21 +220,21 @@ class ClassTableWidgetDataProvider {
222220 userDefinedDetail = userDefinedClassData.userDefinedDetail,
223221 timeArrangement = schoolClassTableData.timeArrangement + userDefinedClassData.timeArrangement,
224222 )
225- Log .i(tag, " Class table merged." )
223+ Log .i(" $ tag[loadBasicConfig] " , " Class table merged." )
226224
227225 // calculate day index of today
228226 val termStartDayStr = classTableData.termStartDay
229227 if (termStartDayStr.isBlank()) {
230228 if (classTableData == ClassTableData .EMPTY && userDefinedClassData == UserDefinedClassData .EMPTY ) {
231- Log .w(tag, " Term start day is blank and no class data loaded." )
229+ Log .w(" $ tag[loadBasicConfig] " , " Term start day is blank and no class data loaded." )
232230 } else {
233- Log .e(tag, " Term start day is blank, cannot calculate week/day index!" )
231+ Log .e(" $ tag[loadBasicConfig] " , " Term start day is blank, cannot calculate week/day index!" )
234232 errorMessage =
235233 context.getString(R .string.widget_classtable_parse_term_start_time_error)
236234 }
237235 return
238236 }
239- Log .i(tag, " Term start day: $termStartDayStr " )
237+ Log .i(" $ tag[loadBasicConfig] " , " Term start day: $termStartDayStr " )
240238
241239 try {
242240 val weekOffset = ClassTableDataHolder .weekSwift
@@ -245,22 +243,22 @@ class ClassTableWidgetDataProvider {
245243 )
246244 val startDay =
247245 LocalDateTime .parse(termStartDayStr, dateFormat).plusWeeks(weekOffset)
248- Log .i(tag, " Effective start day (after weekSwift $weekOffset ): $startDay " )
246+ Log .i(" $ tag[loadBasicConfig] " , " Effective start day (after weekSwift $weekOffset ): $startDay " )
249247
250248 var deltaDays = ChronoUnit .DAYS .between(startDay, currentTime)
251249 if (deltaDays < 0 ) {
252250 Log .w(
253- tag,
251+ " $ tag[loadBasicConfig] " ,
254252 " Current date is before the effective start date. Delta days: $deltaDays . Applying original logic (delta=-7)."
255253 )
256254 deltaDays = - 7
257255 }
258256
259257 weekIndex = (deltaDays / 7 ).toInt()
260258 dayIndex = currentTime.dayOfWeek.value
261- Log .i(tag, " Calculation finished. curWeekIndex: $weekIndex , todayIndex: $dayIndex " )
259+ Log .i(" $ tag[loadBasicConfig] " , " Calculation finished. curWeekIndex: $weekIndex , todayIndex: $dayIndex " )
262260 } catch (e: Exception ) {
263- Log .e(tag, " Error calculating date indices" , e)
261+ Log .e(" $ tag[loadBasicConfig] " , " Error calculating date indices" , e)
264262 widgetState = ClassTableWidgetLoadState .ERROR_OTHER
265263 errorMessage =
266264 e.message ? : context.getString(R .string.widget_classtable_unknown_error)
@@ -269,7 +267,7 @@ class ClassTableWidgetDataProvider {
269267 }
270268 } catch (e: DateTimeParseException ) {
271269 Log .e(
272- tag,
270+ " $ tag[loadBasicConfig] " ,
273271 " Error parsing term start date string: '${classTableData.termStartDay} ' " + " with format '${ClassTableConstants .DATE_FORMAT_STR } '" ,
274272 e
275273 )
@@ -278,7 +276,7 @@ class ClassTableWidgetDataProvider {
278276 R .string.widget_classtable_parse_term_start_time_error,
279277 )
280278 } catch (e: Exception ) {
281- Log .e(tag, " Error calculating date indices (outer catch)" , e)
279+ Log .e(" $ tag[loadBasicConfig] " , " Error calculating date indices (outer catch)" , e)
282280 widgetState = ClassTableWidgetLoadState .ERROR_OTHER
283281 errorMessage =
284282 " ${e.message ? : context.getString(R .string.widget_classtable_unknown_error)} at ${e.stackTrace.first()} "
@@ -317,24 +315,32 @@ class ClassTableWidgetDataProvider {
317315 val curYear: Int = currentTime.year
318316 val curMonth: Int = currentTime.monthValue
319317 val curDay: Int = currentTime.dayOfMonth
318+ Log .i(
319+ " $tag [loadOneDayExam]" ,
320+ " curTime: $curYear -$curMonth -$curDay " ,
321+ )
320322 for (subject in examData.subject) {
321323 val startTime = subject.startTime.getOrElse {
322324 Log .e(
323- tag,
325+ " $ tag[loadOneDayExam] " ,
324326 " Failed to get startTime from subject $subject on loadOneDayExam, this subject will be omitted" ,
325327 it
326328 )
327329 continue
328330 }
329331 val endTime = subject.endTime.getOrElse {
330332 Log .e(
331- tag,
333+ " $ tag[loadOneDayExam] " ,
332334 " Failed to get endTime from subject $subject on loadOneDayExam, this subject will be omitted" ,
333335 it
334336 )
335337 continue
336338 }
337339 if (startTime.year == curYear && startTime.monthValue == curMonth && startTime.dayOfMonth == curDay) {
340+ Log .i(
341+ " $tag [loadOneDayExam]" ,
342+ " Adding data $subject " ,
343+ )
338344 timeLineItem.add(
339345 TimeLineItem (
340346 type = Source .EXAM ,
@@ -346,6 +352,11 @@ class ClassTableWidgetDataProvider {
346352 colorIndex = examData.subject.indexOf(subject)
347353 )
348354 )
355+ } else {
356+ Log .i(
357+ " $tag [loadOneDayExam]" ,
358+ " $subject is not at the current day" ,
359+ )
349360 }
350361 }
351362 }
@@ -354,9 +365,17 @@ class ClassTableWidgetDataProvider {
354365 val curYear: Int = currentTime.year
355366 val curMonth: Int = currentTime.monthValue
356367 val curDay: Int = currentTime.dayOfMonth
368+ Log .i(
369+ " $tag [loadOneDayExperiment]" ,
370+ " curTime: $curYear -$curMonth -$curDay " ,
371+ )
357372 for (data in experimentData) {
358373 for (timeRange in data.timeRanges) {
359374 if (timeRange.first.year == curYear && timeRange.first.monthValue == curMonth && timeRange.first.dayOfMonth == curDay) {
375+ Log .i(
376+ " $tag [loadOneDayExperiment]" ,
377+ " Adding data $data at date ${timeRange.first} " ,
378+ )
360379 timeLineItem.add(
361380 TimeLineItem (
362381 type = Source .EXPERIMENT ,
@@ -368,6 +387,11 @@ class ClassTableWidgetDataProvider {
368387 colorIndex = experimentData.indexOf(data),
369388 )
370389 )
390+ } else {
391+ Log .i(
392+ " $tag [loadOneDayExperiment]" ,
393+ " $data is not the same day as today" ,
394+ )
371395 }
372396 }
373397 }
0 commit comments