![](/img/trans.png)
[英]reading through a file which contains the same entries multiple times, but only want to change one of those entries
[英]Reading multiple Entries template
我正在与Apache River javaspaces项目一起工作,并且试图找到一种写模板的方法,该模板可以读取空间中的多个条目并返回我尚未存储的条目,例如:
用户将三个条目写入空间“ entry1”,“ entry2”,“ entry3”。 稍后,同一用户尝试从该空间读取条目,每次该空间返回“ entry1”时,因为未从空间中删除它,它将始终与给定模板匹配。
写空间:
SpaceEntry string = new SpaceEntry("User","entry1");
space.write(string, null, Lease.FOREVER);
从太空读取:
SpaceEntry template = new SpaceEntry();
SpaceEntry read = (SpaceEntry)space.readIfExists(template,null,Long.MAX_VALUE);
$ read存储在列表中,重复读取过程。
模板:
public SpaceEntry (String o, String m){
this.Owner = o;
this.Message = m;
}
最后,关于使用已获取的值列表动态修改模板的任何建议,以便条目保留在空间中,但返回不同的条目?
我考虑过从空间中获取条目并将它们存储在列表中,然后在没有新条目留下时将它们返回到空间,但这会引起各种混乱,丢失数据和松散的多用户兼容性。
编辑1:
好吧,在摆弄我的代码之后,我想出了一种方法。
模板必须更改为使用另一个参数ID。
public SpaceEntry (int id, String o, String m){
this.ID = id;
this.Owner = o;
this.Message = m;
}
现在,每次用户想要添加一条消息时,代码都必须通过将模板中的id值增加1直到不留任何内容,并使用缺少的ID号添加新消息来读取空间中的现有条目。 可以运行相同的代码来读取空间中的所有条目,并按ID号返回它们。
但是,如果删除其中一个条目,这将构成威胁,代码将如何处理缺少的ID,例如1,2, ,4 ,,_,7有什么建议?
编辑2:
似乎事务管理器可能是解决方法。
在进行了其他一些研究之后,我遇到了这个问题的答案。 为了读取多个条目,您必须实现一个事务管理器,该管理器基本上将与该模板匹配的所有条目读入一个事务,一个排序列表,并且该管理器仅添加尚未在事务中的条目。 提交事务后,空间“条目”将保持不变,但您将获得它们的完整列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.