`
歆渊
  • 浏览: 307804 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

TOB 6 编程界面重大简化

阅读更多
TOB 6 的编程界面最近完成了一次重大简化, 附件是更新后的持久应用样板程序, 用6.0的SUN JDK和1.6.5或更新的Apache Ant就可以编译.

简化后的持久类模样从下面代码可见一斑, 特别注意 getAllProducts() 的实现.
完整项目源码在附件zip中.
package tob.bookstore;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import av.tob.IAm;
import av.tob.Index;
import av.tob.Kin;
import av.tob.KinSet;
import av.tob.Retying;
import av.tob.Swappable;
import av.tob.TheRelation;
import av.tob.Writing;

@Swappable(typeInSwap = "Category")
public class Category extends TheRelation
{

    @Index(unique = false)
    protected static final String NAME_INDEX = "name";

    protected Tie<Category> parent;

    @IAm("parent")
    protected KinSet<Category, Category> subcategories = null;

    @IAm("maincate")
    protected KinSet<Product, Product> products = null;

    protected KinSet<Categorization, Product> moreProducts = null;

    private String name;

    private String description;

    protected Category()
    {
    }

    public Category(Category parentCate, String name, String desc)
    {
        this.parent = (parentCate == null) ? null : new Tie<Category>(
                parentCate);
        this.name = name;
        this.description = desc;
    }

    public Category getParent()
    {
        return parent == null ? null : parent.o;
    }

    @Retying("parent")
    public void changeParent(Category newParent)
    {
        this.parent = (newParent == null) ? null : new Tie<Category>(newParent);
    }

    public KinSet<Category, Category> getSubcategories()
    {
        return this.subcategories;
    }

    public KinSet<Product, Product> getMainProducts()
    {
        return this.products;
    }

    public KinSet<Categorization, Product> getMoreProducts()
    {
        return this.moreProducts;
    }

    private void enlistProducts(List<Product> l)
    {
        for (Kin<?, Product> p : products)
            l.add(p.getO());
        for (Kin<?, Product> p : moreProducts)
            l.add(p.getO());
        for (Kin<?, Category> subcate : subcategories)
            subcate.getO().enlistProducts(l);
    }

    public List<Product> getAllProducts()
    {
        List<Product> all = new ArrayList<Product>(100);
        this.enlistProducts(all);
        return Collections.unmodifiableList(all);
    }

    public String getName()
    {
        return this.name;
    }

    @Writing
    public void setName(String name)
    {
        this.name = name;
    }

    public String getDesciption()
    {
        return this.description;
    }

    @Writing
    public void setDescription(String desc)
    {
        this.description = desc;
    }

}

分享到:
评论
2 楼 歆渊 2007-02-25  
zrweng 写道
TestBookStore 的OrderQ.STATUS 和TestContant的UserQ.NAME等这是什么表示法啊
JDK5.0无法编译通过,只能使用JDK6.0?


编译时TOB自动生成用于拼装SQL的查询条件类, 对应应用自己的持久类名, 后面加个 Q.

TOB 6 是基于 JSR 269 的 Annotation Processor 的, 所以必须是JDK 6才行. 不过这样其实简化了编译步骤, 和平常javac/ant没有什么差别了, 原来5的时候还必须用apt编译才行的.
1 楼 zrweng 2007-02-25  
TestBookStore 的OrderQ.STATUS 和TestContant的UserQ.NAME等这是什么表示法啊
JDK5.0无法编译通过,只能使用JDK6.0?

相关推荐

    TOB.rar_GoagoSpace_tob

    【TOB.rar_GoagoSpace_tob】是一个包含原创博客系统的压缩包,它采用的是C#编程语言,并基于三层架构设计。三层架构是一种常见的软件设计模式,它将应用程序分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)...

    BtoC购物电子商城

    它支持多种编程语言,如C#和VB.NET,提供了丰富的控件、内置的安全特性以及自动化的生命周期管理,简化了开发过程。 **标签中的关键词** 还包括"购物"和"源码"。购物指的是系统提供的各种购物功能,如搜索、比较、...

    Windows并发编程指南pdf

    - 如何通过使用不可变对象来简化并发编程。 - **同步种类和技术** - 数据同步:确保数据在并发访问时的一致性。 - 协调与控制同步:确保程序的不同部分能够按照预期的方式协同工作。 - **当前状态 (Where Are ...

    Introduction to Java Programming

    总体来说,《Introduction to Java Programming》是一本适合初学者的Java编程教程,通过这本书,读者可以掌握Java编程的基础知识和技能,为进一步深入学习打下坚实的基础。对于初学者而言,通过阅读英文原版书籍并...

    JDK 1.8 API 应用程序编程接口

    JDK 1.8引入了lambda表达式,这是一种简洁的匿名函数表示方式,可以简化回调函数和函数式编程。例如,`Collections.sort(list, (a, b) -&gt; a.compareTo(b))` 就是使用lambda对列表进行排序。 6. **Stream API**: ...

    B.zip_bin to hex_visual c

    通过以上分析,我们可以推断出"B.zip_bin to hex_visual c"项目的实现可能涉及了文件读取、位操作、类型转换、字符串处理、用户界面、错误处理等多个方面的知识。实际的源代码将把这些概念具体化,以完成从二进制到...

    C++重载运算符实现分数的运算(有界面)

    在C++编程语言中,重载运算符是一种强大的特性,允许我们为已有的运算符赋予新的含义或行为,以适应自定义数据类型。本项目"分数运算器"就是利用这一特性来实现分数的加减乘除等运算,并通过界面提供用户友好的交互...

    spi方式FPGA配置和spi flash 编程

    2. **SPI Flash编程准备**:为了确保SPI Flash编程过程中FPGA不会影响编程过程,需要通过跳线JP8将PROG_B脚拉低,使得FPGA处于复位状态。 3. **下载接口连接**:确保下载电缆正确连接到开发板上的J12接口。 4. **SPI...

    源代码-access数据库转换工具a-to-b.zip

    【标题】"源代码-access数据库转换工具a-to-b.zip" 提供的是一个源代码实现,其功能是将Access数据库从一种格式(A)转换到另一种格式(B)。Access数据库是微软公司开发的一种关系型数据库管理系统,它使用Jet...

    ASP汽车销售系统BtoC电子商务网站.zip

    此外,考虑到BtoC(Business-to-Consumer)模式,网站设计应注重用户体验,包括易用的界面、快速的页面加载速度、良好的移动适配性等。为了确保安全性,还需要对用户数据进行加密处理,防止未授权访问和数据泄露。 ...

    bin to C language的转换工具

    这种方式使得音频数据可以直接被C语言程序加载和播放,简化了开发流程。 首先,让我们了解二进制文件(.bin)和C语言的关系。二进制文件通常包含原始的机器码或者未经解释的数据,它们可以直接由计算机硬件执行。而...

    B样条曲线的绘制

    通过对MFC编程技术的掌握和B样条曲线数学原理的理解,你可以创建出功能完善的图形化界面,不仅能够绘制曲线,还能实现对曲线形状的动态编辑,这对于理解和应用计算机图形学的知识是非常有价值的实践。

Global site tag (gtag.js) - Google Analytics