⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultcalendarservice.java.svn-base

📁 Fire-Workflow-Engine-All-In-One-20090208 包含全部文档
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
            return 0;        }//判断date属于哪个时间段        SimpleDateFormat dFormat = new SimpleDateFormat(this.businessCalendarProperties.getProperty(hour_format));        String paramTimeStr = dFormat.format(date);        StringTokenizer stringTokenizer = new StringTokenizer(businessTime, "&");        List timeSpanList = new ArrayList();        while (stringTokenizer.hasMoreTokens()) {            String timeSpan = stringTokenizer.nextToken();            int isInTheSpan = testTimeInTheTimeSpan(date, timeSpan);            if (isInTheSpan == -1) {                timeSpanList.add(timeSpan);            } else if (isInTheSpan == 0) {                String tmp = paramTimeStr + timeSpan.substring(timeSpan.indexOf("-"));                timeSpanList.add(tmp);            }        }        int totalTime = 0;        for (int i = 0; i <                timeSpanList.size(); i++) {            String timeSpan = (String) timeSpanList.get(i);            totalTime =                    totalTime + getTotalWorkingTime(timeSpan);        }        return totalTime;    }    /**     * 检查时间点是否在给定的区间内     * @param timeStr     * @param timeSpan     * @return 0-在给定的区间内,-1在给定的区间前,1在给定的区间后     */    private int testTimeInTheTimeSpan(Date d, String timeSpan) {        SimpleDateFormat dFormat = new SimpleDateFormat(this.businessCalendarProperties.getProperty(day_format));        String dayStr = dFormat.format(d);        dFormat.applyPattern(this.businessCalendarProperties.getProperty(day_format) + " " + this.businessCalendarProperties.getProperty(hour_format));        int idx = timeSpan.indexOf("-");        String date1Str = dayStr + " " + timeSpan.substring(0, idx);        String date2Str = dayStr + " " + timeSpan.substring(idx + 1);        Date date1 = null;        Date date2 = null;        try {            date2 = dFormat.parse(date2Str);        } catch (ParseException ex) {            Logger.getLogger(DefaultCalendarService.class.getName()).log(Level.SEVERE, null, ex);        }        try {            date1 = dFormat.parse(date1Str);        } catch (ParseException ex) {            Logger.getLogger(DefaultCalendarService.class.getName()).log(Level.SEVERE, null, ex);        }        if (d.before(date1)) {            return -1;        } else if (d.after(date2)) {            return 1;        }        return 0;    }    private String getBusinessTime(Date date) {        String businessTime = this.businessCalendarProperties.getProperty(business_time);        Calendar cal = Calendar.getInstance();        cal.setTime(date);        String businessTime2 = null;        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);        switch (dayOfWeek) {            case 1:                businessTime2 = this.businessCalendarProperties.getProperty(business_time_sunday);//周日                break;            case 2:                businessTime2 = this.businessCalendarProperties.getProperty(business_time_monday);//周1                break;            case 3:                businessTime2 = this.businessCalendarProperties.getProperty(business_time_tuesday);//周2                break;            case 4:                businessTime2 = this.businessCalendarProperties.getProperty(business_time_wednesday);//周3                break;            case 5:                businessTime2 = this.businessCalendarProperties.getProperty(business_time_thursday);//周4                break;            case 6:                businessTime2 = this.businessCalendarProperties.getProperty(business_time_friday);//周5                break;            case 7:                businessTime2 = this.businessCalendarProperties.getProperty(business_time_saturday);//周六                break;        }        if (businessTime2 != null) {            businessTime = businessTime2;        }        return businessTime;    }    /**     * 获得时间段的工作时间,以毫秒表示     * @param timeSpan 例如:8:30-12:00     * @return     */    private int getTotalWorkingTime(String timeSpan) {        if (timeSpan == null) {            return 0;        }        StringTokenizer stringTokenizer = new StringTokenizer(timeSpan, "-");        String dStr1 = null;        String dStr2 = null;        if (stringTokenizer.hasMoreTokens()) {            dStr1 = stringTokenizer.nextToken();        }        if (stringTokenizer.hasMoreTokens()) {            dStr2 = stringTokenizer.nextToken();        }        if (dStr1 == null || dStr2 == null) {            return 0;        }        SimpleDateFormat dFormat = new SimpleDateFormat(this.businessCalendarProperties.getProperty(hour_format));        Date d1 = null;        try {            d1 = dFormat.parse(dStr1);        } catch (ParseException ex) {            Logger.getLogger(DefaultCalendarService.class.getName()).log(Level.SEVERE, null, ex);        }        Date d2 = null;        try {            d2 = dFormat.parse(dStr2);        } catch (ParseException ex) {            Logger.getLogger(DefaultCalendarService.class.getName()).log(Level.SEVERE, null, ex);        }        if (d1 == null || d2 == null) {            return 0;        }        return (int) (d2.getTime() - d1.getTime());    }//    private int getDurationInMilliseconds    /**     * 缺省实现,周六周日都是非工作日,其他的都为工作日。     * 实际应用中,可以在数据库中建立一张非工作日表,将周末以及法定节假日录入其中,     * 然后在该方法中读该表的数据来判断工作日和非工作日。     * @param d     * @return     */    public boolean isBusinessDay(Date d) {        if (d == null) {            return false;        }        Calendar cal = Calendar.getInstance();        cal.setTime(d);        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);        if (dayOfWeek == 1 || dayOfWeek == 7) {            return false;        }        return true;    }    public Properties getBusinessCalendarProperties() {        return businessCalendarProperties;    }    /**     * 在外部定义的属性被合并到缺省定义中,这样的话外部之需要修改部分属性即可。     * @param props     */    public void setBusinessCalendarProperties(Properties props) {        this.businessCalendarProperties.putAll(props);    }        public Date getSysDate() {        return new Date();    }    public void setRuntimeContext(RuntimeContext ctx) {        this.rtCtx = ctx;    }        public RuntimeContext getRuntimeContext(){        return this.rtCtx;    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -