`

PIM Event的循环数据读取与设置

    博客分类:
  • J2me
阅读更多

 

1. 遍历EventList列表取得Item(Event)

 

PIMList list = PIM.getInstance().openPIMList(PIM.EVENT_LIST,PIM.READ_ONLY,name);
// 遍历所有的记录,获取Event
PIMItem item;
for (Enumeration e = list.items(); e.hasMoreElements();)
{
     item = (PIMItem)e.nextElement();
}

 

 

 

2. 读取Event循环数据

 

private void populateRepeatForm() throws PIMException {     //重复部分的处理
    RepeatRule repeat = ((Event)item).getRepeat();
    if(repeat != null) {    //存在重复
        int[] fields = repeat.getFields();
        for(int i=0; i<fields.length; i++) {
           switch(fields[i]) {
               case RepeatRule.FREQUENCY:       //判断日程循环类型
                   String value = null;
                   int frequency = repeat.getInt(RepeatRule.FREQUENCY);
                   switch(frequency) {
                       //按天循环
                       case RepeatRule.DAILY:   value = "dayly";    break;
                       //按周循环
                       case RepeatRule.WEEKLY:  value = "weekly";   break;
                       //按月循环
                       case RepeatRule.MONTHLY: value = "monthly";  break;
                       //按年循环
                       case RepeatRule.YEARLY:  value = "yearly";   break;
                   }
                   Item repeatItem = 
                       new TextField("repeat", value, 64, TextField.ANY);
                   append(repeatItem);
                   break;
               case RepeatRule.DAY_IN_MONTH:
                   //按月循环,取得是每月的第几天
                   int dayInMonth = repeat.getInt(RepeatRule.DAY_IN_MONTH);
                   Item dayItem = 
                       new TextField("day", dayInMonth+"", 128, TextField.DECIMAL);
                   append(dayItem);
                   break;
               case RepeatRule.DAY_IN_WEEK:
                   /* dayInWeek会返回一个int的数值,该数值为相应的星期对应的int值得和:
                    * 星期字段及对应值
                    * SUNDAY                65536
                    * MONDAY                32768
                    * TUESDAY               16384
                    * WEDNESDAY             8192
                    * THURSDAY              4096
                    * FRIDAY                2048
                    * 如果event选择每周一、三循环,则dayInWeek值为40960(32768+8192)
                    * 将得到的和进行拆分,判断选择的是周几
                    */
                   int dayInWeek = repeat.getInt(RepeatRule.DAY_IN_WEEK);
                   Item weekItem = 
                       new TextField("week", dayInWeek+"", 128, TextField.DECIMAL);
                   append(weekItem);
                   break;
               case RepeatRule.MONTH_IN_YEAR:
                   //monthInYear会返回RepeatRule.JANUARY等十二月的已定义常量定义
                   int monthInYear = repeat.getInt(RepeatRule.MONTH_IN_YEAR);
                   Item monthItem = 
                       new TextField("month", monthInYear+"", 128, TextField.DECIMAL);
                   append(monthItem);
                   break;
               case RepeatRule.INTERVAL:
                   //读取循环间隔
                   int interval = repeat.getInt(RepeatRule.INTERVAL);
                   Item intervalItem = 
                        new TextField("interval", interval+"", 128, TextField.DECIMAL);
                   append(intervalItem);
                   break;
               case RepeatRule.COUNT://搞不清干嘛的
                   int count = repeat.getInt(RepeatRule.COUNT);
                   Item countItem = 
                       new TextField("count",  count+"", 128, TextField.DECIMAL);
                   append(countItem);
                   break;
               case RepeatRule.END:
                   //如果有重复结束时间,取得结束时间
                   long end = repeat.getDate(RepeatRule.END);
                   Item endItem = 
                       new DateField("end", DateField.DATE_TIME);
                   ((DateField)endItem).setDate(new Date(end));
                   append(endItem);
                   break;
           }
        }
    }
}


3. 日历Event循环设置
   

RepeatRule repeat = new RepeatRule();
/*
 * 设置重复类型,
 * 每天重复:RepeatRule.DAILY
 * 每周重复:RepeatRule.WEEKLY
 * 每月重复:RepeatRule.MONTHLY
 * 每年重复:RepeatRule.YEARLY
 */
repeat.setInt(RepeatRule.FREQUENCY, RepeatRule.MONTHLY);

/*
 * 设置重复日期为每月的第二周的星期三
 */
repeat.setInt(RepeatRule.WEEK_IN_MONTH, RepeatRule.SECOND);	
repeat.setInt(RepeatRule.DAY_IN_WEEK, RepeatRule.WEDNESDAY);

/*
 * 设置重复到期时间12月31日下午23:59
 */
java.util.Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, Calendar.DECEMBER);
cal.set(Calendar.DAY_OF_MONTH, 31);
cal.set(Calendar.AM_PM, Calendar.PM);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
setDate(RepeatRule.END, cal.getTime().getTime());	//第二个参数为long型

((Event)item).setRepeatRule(repeat);	//将循环规则加入到Event

 

 

 

 

分享到:
评论

相关推荐

    pim.rar_PIM

    1. **初始化PIM系统**: 首先,通过调用PIM.getdefault()获取PIM实例,这允许访问设备上的PIM服务。 2. **选择PIMList**: 使用PIMList的enumerateLists()方法列出可用的PIMList,然后选择或创建所需的列表。 3. **...

    PIM API Developer's Guide

    PIM API 通过权限模型来控制对数据的访问,只有在获得了相应的权限后,应用才能读取或修改数据。 ##### 4.2 PIM 列表数据库 PIM API 支持多种类型的数据存储,主要包括以下几种: ###### 4.2.1 联系人列表数据库 ...

    基于IPv6 Linux内核PIM-SMv2协议的研究与实现.pdf

    为了实现PIM-SMv2协议,需要设计和实现三个部分:预处理模块、数据转发模块和套接口设置模块。 在预处理模块中,需要对组播消息进行分析和处理,以确保消息的正确性和可靠性。该模块需要与用户空间中的应用程序进行...

    PIM_API.rar_PIM_j2me PIM_j2me pim a

    这个例子首先获取了PIM实例,然后打开了联系人列表,接着创建了一个新的PIMItem并设置了姓名、电子邮件和工作电话。最后,将新联系人提交到列表中。 **7. 性能优化** 由于J2ME运行在资源有限的设备上,因此在使用...

    组播pim DR 和IGMP 查询器谁负责转发数据流的实验

    在实验环境中,我们通常会设置一个模拟网络,包括IGMP查询器(通常是路由器)、PIM DR(可能也是路由器)以及使用VLC软件的组播数据流接收者。VLC是一款强大的开源媒体播放器,支持接收组播流。实验的目的是通过实际...

    PIM技术介绍

    PIM技术主要应用于多媒体流服务,如视频会议、在线直播、分布式计算以及大规模数据分发等场景。与单播和广播相比,多播能更有效地处理一对多的通信需求,尤其适合于那些对带宽需求高、实时性要求强的应用。 **PIM的...

    PIM-SM协议原理最新的

    基于给定文件的信息,我们可以详细地探讨PIM-SM(Protocol Independent Multicast Sparse Mode)的相关知识点,特别是关于其原理及工作机制。 ### PIM-SM基础知识 #### 什么是PIM? PIM,全称Protocol Independent...

    Essential PIM Port 4.24 Pro

    在联系人管理方面,Essential PIM 提供了详细的字段来存储每个联系人的信息,如姓名、电话、电子邮件、地址等,还支持导入和导出联系人数据,方便与其它设备或应用同步。密码管理功能则为用户提供了安全存储密码的...

    PIM协议图示

    与PIM-DM中的泛洪机制不同,PIM-SM使用加入机制来构建多播树,只有在有接收者需要特定源数据时,路由器才会向源方向发送加入消息。PIM-SM还涉及一系列复杂的定时器和状态信息,例如加入延迟定时器(Join-delay timer...

    momo_pimmomo_pimmomo_pim

    在【压缩包子文件的文件名称列表】中提到的"PIM",可能是指一个包含与PIM相关的数据或软件的文件夹。这样的压缩包可能包含各种文件,如配置文件、数据库备份、软件安装程序等,这些都与个人信息管理有关。 在深入...

    PIM.zip_PIM_PIM-DM

    **PIM-SM:协议详解与PIM-DM的区别** PIM(Protocol Independent Multicast)是一种在IP网络中实现多播路由的协议,主要用于高效地将数据流从一个源节点分发到多个接收者。PIM-SM(Protocol Independent Multicast ...

    PIM产生机理及根源答问---认识PIM

    - **服务质量降低:**PIM的存在会直接影响到通信系统的整体性能,导致通话质量下降、数据传输速率降低等问题。 - **维护成本增加:**为了减少PIM带来的负面影响,运营商需要定期检查和维护射频系统,这无疑增加了...

    funambol-j2me-api-6.5.1000.zip_PIM_phone_pim java

    《J2ME PIM数据处理与手机应用》 在移动设备上,个人信息管理(Personal Information Management,简称PIM)是至关重要的功能,它涵盖了联系人、日程、任务、备忘录等一系列个人信息的存储和管理。对于Java Micro ...

    PIM-DM基础教材

    在实际网络环境中,PIM-DM的配置和优化涉及多个方面,包括RP的设置、接口的组播模式、DR(Designated Router,指定路由器)选举等。合理的配置可以确保组播流量的有效传输,避免不必要的带宽消耗。 **六、PIM-DM的...

    PIM.rar_PIM_java PIM_pim java_日程

    在PIM系统中,Java的面向对象特性使得我们可以创建清晰的模型来表示不同的信息类型,如Contact类表示联系人,Event类表示日程事件,Note类表示记事本条目。 在联系人管理模块,Java可以用于构建一个包含姓名、电话...

    pim.rar_PIM_PIM MATLAB_meshless_meshless matlab_pim method

    标题中的“pim.rar_PIM_PIM MATLAB_meshless_meshless matlab_pim method”指的是一个关于PIM(Point Interpolation Method,点插值方法)在MATLAB环境中应用的压缩包文件,其中包含了无网格方法(Meshless Method)...

    中国移动PIM业务接口规范.doc

    PIM业务接口规范的范围包括网元设备间的通信接口、PIM服务器与各网元之间的接口、业务中涉及的网元在PIM系统中的功能等方面的内容。 知识点3:PIM业务接口规范的主要内容 PIM业务接口规范的主要内容包括网元功能...

    19 PIM原理与配置.pptx

    PIM(Protocol Independent Multicast,协议无关组播)是一种组播路由协议,主要用于构建组播分发树,实现组播数据的转发。PIM协议可以分为两种模式:PIM-DM(Dense Mode,稠密模式)和PIM-SM(Sparse Mode,稀疏...

Global site tag (gtag.js) - Google Analytics