![](/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.