1

4列の値をエクスポートする必要があります。3列の値は正しく入力されています。組織の列である4番目の列に問題があります。これは複数値の列です。つまり、複数の値があります。

組織列のオブジェクトから文字列に変換しようとしましたが、役に立ちませんでした。

以下のコードを参照してください。

    String appname = "abc";
    String path = "//home/exportfile//";
    String filename = path+"ApplicationExport-"+appname+".txt";
    String ret = "false";

    QueryOptions ops = new QueryOptions();
    Filter [] filters = new Filter[1];
    filters[0] = Filter.eq("application.name", appname);
    ops.add(filters);

    List props = new ArrayList();
    props.add("identity.name");

    //Do search
    Iterator it = context.search(Link.class, ops, props);

    //Build file and export header row
    BufferedWriter out = new BufferedWriter(new FileWriter(filename));
    out.write("Name,UserName,WorkforceID,organization");
    out.newLine();          

    //Iterate Search Results
    if (it!=null)
    {                               
            while (it.hasNext()) {

                    //Get link and create object
                    Object [] record = it.next();
                    String identityName = (String) record[0];
                    Identity user = (Identity) context.getObject(Identity.class, identityName);

                    //Get Identity attributes for export
                    String workforceid = (String) user.getAttribute("workforceID");                 

                    //Get application attributes for export
                    String userid="";

                    List links = user.getLinks();
                    if (links!=null)
                    {
                            Iterator lit = links.iterator();
                            while (lit.hasNext())
                            {
                                    Link l = lit.next();
                                    String lname = l.getApplicationName();
                                    if (lname.equalsIgnoreCase(appname))
                                    {
                                              userid = (String) l.getAttribute("User Name");
                                              List orgList = l.getAttribute("Organization");

                                    }
                            }
                    }                               

                    //Output file
                    out.write(identityName+","+userid+","+workforceid+","+org);                             
                    out.newLine();                                                                          
                    out.flush();
            }                       
            ret="true";
    }
    //Close file and return
    out.close();
    return ret;

このコードの出力は次のようになります。

例:Name、UserName、WorkforceID、organization abc、abc、123、xy qwe、q01,234、xy

このコードを修正する手助けをいただければ幸いです。

4

2 に答える 2

1

編集:

これにより、必要な出力が得られます。

out.write(identityName + "、" + userid + "、" + workforceid + "、" + Arrays.toString(orgList.toArray());

于 2012-08-01T00:06:26.387 に答える
0

List orgListwhileループが作成されるたびに、またorgを使用していて、コードの他の場所でorgを見たことがないため、whileループの外側で宣言することをお勧めします。

于 2012-07-31T22:47:35.393 に答える