Как экспортировать в файл с помощью java?

Я пытаюсь экспортировать файл фида, используя следующий код:

String appname = "abc";
String path = "//home/exportfile//";
String filename = path + "Uncorrelated_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("Userid~First_Name~Last_Name~Facility/CBO~Title~Menu");
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

        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))
                {
                    if (workforceid == null)
                    {
                        userid = (String) l.getAttribute("Userid");
                        fn = (String) l.getAttribute("First Name");
                        ln = (String) l.getAttribute("Last Name");
                        menu = (String) l.getAttribute("Menu");

                        List fac = l.getAttribute("Facility/CBO");
                        List title = l.getAttribute("Title");

                        for (Object fac1 : fac)
                        {
                            for (Object title1 : title)
                            {
                                // Output file

                                out
                                    .write(userid + "~" + fn + "~" + ln + "~" + fac1 + "~" + title1 + "~"
                                        + menu);
                                out.newLine();
                                out.flush();

                            }
                        }
                    }
                }
            }
        }
    }

    ret = "true";
}
// Close file and return
out.close();
return ret;

Когда я выполняю приведенный выше код, я получаю следующую ошибку:

Произошла непредвиденная ошибка: java.lang.Exception: Sailpoint.tools.GeneralException: ошибка сценария BeanShell: Исходный файл: встроенная оценка: import java.io.FileWriter; импортировать java.io.File; импортировать java.io.B . . . '' : Часть коллекции, массива, карты, итератора или перечисления оператора for не может быть нулевой. : в строке: 80 : в файле: встроенная оценка: ``import java.io.FileWriter; импортировать java.io.File; импортировать java.io.B . . . '' : for ( Object title1 : title ) { Информация BSF:

Я знаю, что в моем файле канала есть несколько пустых записей в столбце заголовка, поэтому в идеале код должен записывать в файл все, кроме столбца заголовка, если он пуст. может ли кто-нибудь помочь мне, где я могу внести изменения в код?


person user1565893    schedule 25.09.2012    source источник


Ответы (1)


                    List fac = l.getAttribute("Facility/CBO");
                    List title = l.getAttribute("Title");

                    for (Object fac1 : fac)
                    {
                        for (Object title1 : title)

Либо fac, либо title устанавливается равным нулю, а затем вы пытаетесь перебрать его. Перед выполнением циклов следует ввести некоторую проверку на нуль.

person allingeek    schedule 25.09.2012