package open.dolphin.mbean; import java.util.ArrayList; import java.util.GregorianCalendar; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import javax.inject.Singleton; import javax.servlet.AsyncContext; import open.dolphin.infomodel.PatientVisitModel; /** * サーブレットの諸情報を保持するクラス * @author masuda, Masuda Naika */ @Singleton public class ServletContextHolder { // 今日と明日 private GregorianCalendar today; private GregorianCalendar tomorrow; // AsyncContextのリスト private final List<AsyncContext> acList = new ArrayList<>(); // facilityIdとpvtListのマップ private final Map<String, List<PatientVisitModel>> pvtListMap = new ConcurrentHashMap<>(); // サーバーのUUID private String serverUUID; public List<AsyncContext> getAsyncContextList() { return acList; } public void addAsyncContext(AsyncContext ac) { synchronized (acList) { acList.add(ac); } } public void removeAsyncContext(AsyncContext ac) { synchronized (acList) { acList.remove(ac); } } public String getServerUUID() { return serverUUID; } public void setServerUUID(String uuid) { serverUUID = uuid; } public Map<String, List<PatientVisitModel>> getPvtListMap() { return pvtListMap; } public List<PatientVisitModel> getPvtList(String fid) { List<PatientVisitModel> pvtList = pvtListMap.get(fid); if (pvtList == null) { pvtList = new CopyOnWriteArrayList<>(); pvtListMap.put(fid, pvtList); } return pvtList; } // 今日と明日を設定する public void setToday() { today= new GregorianCalendar(); int year = today.get(GregorianCalendar.YEAR); int month = today.get(GregorianCalendar.MONTH); int date = today.get(GregorianCalendar.DAY_OF_MONTH); today.clear(); today.set(year, month, date); tomorrow = new GregorianCalendar(); tomorrow.setTime(today.getTime()); tomorrow.add(GregorianCalendar.DAY_OF_MONTH, 1); } public GregorianCalendar getToday() { return today; } public GregorianCalendar getTomorrow() { return tomorrow; } }