Я пытаюсь написать какой-нибудь сценарий, который упрощает сортировку таблиц и уже достаточно близко, но сейчас мне интересно, нашел ли я ошибку ... или просто неправильно понял ограничения.
Итак, мой соответствующий код:
var reportRunnable = reportContext.getReportRunnable();
var reportDesign = reportRunnable.getDesignInstance();
var table = reportDesign.getTable(tableName);
var sortCondition = org.eclipse.birt.report.engine.api.script.element.StructureScriptAPIFactory.createSortCondition();
sortCondition.setKey("row[\"" + columnKey + "\"]");
sortCondition.setDirection("desc");
table.removeSortConditions();
table.addSortCondition(sortCondition);
Я получаю исключение NullPointerException в строке 164 в листинге класса:
org.eclipse.birt.report.engine.script.internal.element.Listing, в методе removeSortConditions ...
((org.eclipse.birt.report.model.api.simpleapi.IListing) designElementImpl).removeSortConditions();
Таким образом, из вышесказанного следует, что 'designElementImpl' равен нулю, и, посмотрев далее на источник, казалось, что для создания экземпляра объекта 'table' использовался следующий конструктор:
public Table( TableHandle table );
И продвигаясь вверх по иерархии суперклассов, это подразумевает, что в конструкторе DesignElement следующее возвращает нуль:
designElementImpl = SimpleElementFactory.getInstance( ).getElement(handle);
У кого-нибудь есть мысли? Разве я не в состоянии сделать то, что пытаюсь сделать?
Заранее спасибо.
РЕДАКТИРОВАТЬ: Должно быть, вероятно, добавить; Я использую BIRT 2.5.1.