1

Novell JLDAPライブラリを使用してUpsertを実行しようとしていますが、残念ながら、この例を見つけるのに問題があります。現在、私はしなければなりません:

 public EObject put(EObject eObject){
Subject s = (Subject) eObject;
//Query and grab attributes from subject
LDAPAttributes attr = resultsToAttributes(getLDAPConnection().get(s)); 

//No modification needed - return
if(s.getAttributes().equals(attr)){
  return eObject;
} else {
  //Keys:
  //REPLACE,ADD,DELETE, depending on which attributes are present in the maps, I choose the operation which will be used
 Map<String,LDAPAttribute> operationalMap = figureOutWhichAttributesArePresent(c.getAttributes(),attr);

 //Add the Modifcations to a modification array
 ArrayList<LDAPModification> modList = new ArrayList<LDAPModification>();
 for(Entry entry: operationalMap.getEntrySet()){
   //Specify whether it is an update, delete, or insert here. (entry.getKey());
   modList.add(new LDAPModification(entry.getKey(),entry.getValue());
 }
 //commit
 connection.modify("directorypathhere",modList.toArray(new LDAPModification[modList.size()]));
}

最初に顧客に問い合わせる必要がないようにしたいと思います。その結果、サブジェクトの属性も循環します。JNDIまたは別のライブラリがLDAPに対して複数のステートメントを実行せずに更新/挿入を実行できるかどうかを知っている人はいますか?

4

2 に答える 2

1

Peteshは正しかった-抽象化はNovellライブラリ(およびUnboundIdライブラリ)内に実装されました。入ってくるすべての属性に対してModify.REPLACEパラメーターを使用して値を「アップサート」し、空の値にはnullを渡すことができました。これにより、最初に属性を解析しなくても、属性が効果的に作成、更新、および削除されました。

于 2013-03-01T15:37:53.070 に答える
0

LDAPでは、LDIFファイルを介して、混乱は2つのステップを持つ単一のイベントになります。値の削除と追加。これは、削除と追加の間の線上の1つのダッシュで示されます。

このライブラリでどのように行うかわかりません。modList.removeを試し、次にmodList.addを次々に試し、それが機能するかどうかを確認します。

于 2013-02-26T18:43:42.983 に答える