add HolidayManager
This commit is contained in:
parent
2052812189
commit
ef8fff6cf4
|
@ -0,0 +1,96 @@
|
|||
package org.cutem.cutecalendar.model;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import org.cutem.cutecalendar.util.CalendarUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Calendar;
|
||||
|
||||
public class HolidayManager {
|
||||
private static final String HOLIDAY_FILE = "res/holiday.json";
|
||||
|
||||
|
||||
private static HolidayManager ourInstance;
|
||||
private JsonArray mHoliday;
|
||||
private JsonArray mWorkday;
|
||||
private ClassLoader mClassLoader = getClass().getClassLoader();
|
||||
|
||||
private HolidayManager() {
|
||||
loadHoliday();
|
||||
}
|
||||
|
||||
public static HolidayManager getInstance() {
|
||||
if (ourInstance == null) {
|
||||
ourInstance = new HolidayManager();
|
||||
}
|
||||
return ourInstance;
|
||||
}
|
||||
|
||||
private void loadHoliday() {
|
||||
try (
|
||||
InputStream in = new BufferedInputStream(mClassLoader.getResourceAsStream(HOLIDAY_FILE))
|
||||
) {
|
||||
InputStreamReader reader = new InputStreamReader(in);
|
||||
JsonObject o = new JsonParser().parse(reader).getAsJsonObject();
|
||||
|
||||
mHoliday = o.get("holiday").getAsJsonArray();
|
||||
mWorkday = o.get("workday").getAsJsonArray();
|
||||
|
||||
} catch (IOException ex) {
|
||||
mHoliday = new JsonArray();
|
||||
mWorkday = new JsonArray();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String getFestivalName(@NotNull Calendar date) {
|
||||
for (JsonElement e : mHoliday) {
|
||||
JsonObject o = e.getAsJsonObject();
|
||||
String time = o.get("holiday_time").getAsString();
|
||||
Calendar c = CalendarUtil.constructCalendar(time, "0:0");
|
||||
|
||||
if (c != null && CalendarUtil.isSameDay(c, date)) {
|
||||
return o.get("name").getAsString();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isInHoliday(@NotNull Calendar date) {
|
||||
for (JsonElement e : mHoliday) {
|
||||
String bgn = e.getAsJsonObject().get("start_time").getAsString();
|
||||
String end = e.getAsJsonObject().get("end_time").getAsString();
|
||||
|
||||
Calendar c1 = CalendarUtil.constructCalendar(bgn, "0:0");
|
||||
Calendar c2 = CalendarUtil.constructCalendar(end, "23:59");
|
||||
|
||||
if (!date.before(c1) && !date.after(c2)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isWorkday(@NotNull Calendar date) {
|
||||
for (JsonElement e : mWorkday) {
|
||||
String time = e.getAsString();
|
||||
Calendar c = CalendarUtil.constructCalendar(time, "0:0");
|
||||
|
||||
if (c != null && CalendarUtil.isSameDay(c, date)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package org.cutem.cutecalendar.model;
|
||||
|
||||
import org.cutem.cutecalendar.util.CalendarUtil;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class HolidayManagerTest {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getFestivalName() {
|
||||
HolidayManager manager = HolidayManager.getInstance();
|
||||
String nameExpected = "yuandan";
|
||||
String ans = manager.getFestivalName(CalendarUtil.constructCalendar("2018-1-1", "0:0"));
|
||||
System.out.println(ans);
|
||||
assertEquals(ans, nameExpected);
|
||||
assertNull(manager.getFestivalName(CalendarUtil.constructCalendar("2018-2-1", "0:0")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isInHoliday() {
|
||||
HolidayManager manager = HolidayManager.getInstance();
|
||||
Calendar date = CalendarUtil.constructCalendar("2018-1-1", "0:0");
|
||||
assertTrue(manager.isInHoliday(date));
|
||||
date = CalendarUtil.constructCalendar("2018-1-2", "0:0");
|
||||
assertFalse(manager.isInHoliday(date));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isWorkday() {
|
||||
HolidayManager manager = HolidayManager.getInstance();
|
||||
Calendar date = CalendarUtil.constructCalendar("2018-2-11", "0:0");
|
||||
assertTrue(manager.isWorkday(date));
|
||||
date = CalendarUtil.constructCalendar("2018-2-12", "0:0");
|
||||
assertFalse(manager.isWorkday(date));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue