SDO For Java 规范(六)——顺序(Sequence)

顺序是一个设置(settings)的有序集合。顺序的每一个入口都有一个索引。

顺序的关键点是设置的顺序可以被保存,跨越多个不同属性之间的设置也可以被保存。因此,如果属性A被更新了,接着属性B被更新,最后属性A又被更新,则一个顺序可以反映这个过程。

每一个设置都是一个属性和值对。对于SDO文本属性,具有一个使用文本的快捷方式。

非结构化的文本

使用SDO文本属性,非结构化的文本可以被添加入顺序。add(String text)方法使用SDO文本属性添加一个新的入口到顺序的末尾。add(int index, String text)方法使用SDO文本属性将一个新的入口添加到顺序中指定索引的位置。

使用顺序

顺序经常用在处理半结构化业务数据时,例如混有文本的XML元素。假定一个顺序有两个多值属性,分别为numbers(整型属性)和letters(字符串型属性)。同时,假定顺序被如下初始化:

  1. 1 被加入到 numbers 属性。
  2. 字符串 annotation text 被添加到顺序中。
  3. A 被添加到 letters 属性。
  4. 2 被加入到 numbers 属性。
  5. B 被添加到 letters 属性。

则初始化结束后,顺序包含如下设置:

{<numbers, 1>, <text, ”annotation text”>, <letters, ”A”>, <numbers, 2>, <letters, ”B”>}

numbers属性被设置为{1, 2}letters属性将被设置为{“A”, ”B”},,但是如果只是使用访问器(accessors)而不使用顺序的话,则将无法获得跨越numbers属性和letters属性的设置顺序。

顺序和数据对象的比较

数据对象跟踪属性和值的顺序的方式与顺序(Sequence)使用的跟踪方式很不同。

数据对象是不保存添加到其之中的不同属性之间的顺序的。在一个多值属性的情况下,添加到该属性的不同值之间的顺序是可以保存的,但是当值被加入到两个不同的属性时,就没有办法知道哪一个属性被先设置了。在一个顺序内,对于多个属性的设置顺序是可以被保存的。

顺序(Sequence)内出现的相同属性同样可以通过数据对象获得,但是数据对象没有保存多个属性设置的顺序(order)。

注意如果数据对象的类型是一个顺序类型(即getType().isSequenced()返回值为true),那么该数据对象将有一个顺序(Sequence)。

顺序的方法:

  • size() 方法返回顺序上的入口的数目。
  • getProperty(int index) 访问器返回指定索引位置的属性。
  • getValue(int index) 访问器返回指定索引位置的值。
  • setValue(int index, Object value) 访问器更新指定索引位置的值并且维护顺序的位置。
  • 布尔型 add() 访问器添加到顺序的末尾。
  • add(int index, String text) 访问器在指定的索引位置添加非结构化的文本。
  • add(String text) 访问器将非结构化文本添加到顺序的末尾。
  • 其它 add(int index) 访问器将一个特定的位置添加到顺序中,如同 java.util.List ,将其后位置的接口依次加一。
  • remove() 方法移走指定索引位置的入口并且将其之后位置的索引依次减一。
  • move() 方法移走从 fromIndextoIndex 之间的入口。

为了在顺序的末尾创建数据对象,可以使用数据对象的create()方法。

顺序接口

public interface Sequence

{

int size();

Property getProperty(int index);

Object getValue(int index);

Object setValue(int index, Object value);

boolean add(String propertyName, Object value);

boolean add(int propertyIndex, Object value);

boolean add(Property property, Object value);

void add(int index, String propertyName, Object value);

void add(int index, int propertyIndex, Object value);

void add(int index, Property property, Object value);

void add(int index, String text);

void add(String text);

void remove(int index);

void move(int toIndex, int fromIndex);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值