我正在尝试导出文件。
我的代码如下:
import java.io.FileWriter;
import java.io.File;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.*;
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("IdentityName,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="";
String org="";
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");
sailpoint.tools.xml.PersistentArrayList orgList = (sailpoint.tools.xml.PersistentArrayList) 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;
代码正在写入除“组织”列以外的3列的值。不确定为什么?
你能帮我识别一下代码有什么问题吗?或者我错过了什么。
顺便说一下,Organization列是多值的,即该列可能有多个值。
所以最终的输出应该是,
IdentityName, UserName, WorkforceID, Organization
1, abc, 123, internal
1, abc, 123, external
非常感谢任何帮助。
答案 0 :(得分:1)
String org =“”;是空的。似乎没有为org分配值,因此将空值写入文件。
答案 1 :(得分:0)
你定义了org=""
所以它会写一个空字符串。
您获得了一个组织列表:
sailpoint.tools.xml.PersistentArrayList orgList = (sailpoint.tools.xml.PersistentArrayList) l.getAttribute("Organization");
此对象可能有获取所需值的方法,因此您可以执行以下操作:
org = orgList.getOrganization();
当然这只是一个例子,因为我不知道对象的确切结构,使用IDE可以探索这个对象的不同方法并找出你需要的东西。