2014-03-28 1 views
0

Я новичок в activePivot. Мы выписали запрос mdx и вернули CellSetDTO. Есть ли какой-либо библиотечный код для преобразования этого объекта CellSetDTO в формат CSV, Excel или другого типа?ActivePivot: Любой код для преобразования объекта CellSetDTO в csv, excel или другие форматы?

Я смотрю на javadoc из quartetfs на классе CellSetDTO, но у javaDoc нет описания. В качестве альтернативы, я могу написать собственный код для создания CSV, но поскольку я новичок в этом, и нет описания в javaDoc, его немного сложно запустить.

Оценен любой указатель на любую документацию.

Спасибо, Грейс

ответ

1

вы можете использовать образец, который вы можете найти в проекте песочнице, см класс CellSetPrinter, установите CellSetDTO в конструктор арг. См. Класс CellSetPrinter:

public class CellSetPrinter { 

protected final CellSetDTO cellSet; 

protected final AxisDTO slicer; 

protected final List<AxisDTO> axes; 

protected final List<CellDTO> cells; 

public CellSetPrinter(CellSetDTO cellSet) { 
    this.cellSet = cellSet; 
    this.axes = cellSet.getAxes().getAxis(); 
    this.slicer = cellSet.getSlicerAxis(); 
    this.cells = cellSet.getCells().getCell(); 
} 

/** 
* Compute axis positions from the cell ordinal with the classic formula: 
* <ul> 
* <li>(x0, x1, x2) -> x0 + x1 * n0 + x2 * n1 * n2 
* <li>ordinal -> (ordinal % n0, (ordinal/n0) % n1, (ordinal/(n0*n1)) % n2) 
* </ul> 
* 
* @param ordinal 
* @return tuple expressed by coordinates 
*/ 
protected List<String> getTuple(int ordinal) { 
    List<String> tuple = new ArrayList<>(); 

    // Lookup positions on axes 
    final int[] axisCoordinates = new int[axes.size()]; 

    int coeff = 1; 
    for(int a = 0; a < axisCoordinates.length; a++) { 
     int positionCount = axes.get(a).getPositions().getPosition().size(); 
     axisCoordinates[a] = (ordinal/coeff) % positionCount; 
     coeff *= positionCount; 
    } 

    for(int a = 0; a < axisCoordinates.length; a++) { 
     AxisPositionDTO position = axes.get(a).getPositions().getPosition().get(axisCoordinates[a]); 
     for(MemberDTO member : position.getMembers().getMember()) { 
      for(String pathElement : member.getPath().getItems().getItem()) { 
       if(!"AllMember".equals(pathElement)) { 
        tuple.add(pathElement); 
       } 
      } 
     } 
    } 

    // Append slicer content 
    for(AxisPositionDTO position : slicer.getPositions().getPosition()) { 
     for(MemberDTO member : position.getMembers().getMember()) { 
      for(String pathElement : member.getPath().getItems().getItem()) { 
       if(!"AllMember".equals(pathElement)) { 
        tuple.add(pathElement); 
       } 
      } 
     } 
    } 
    return tuple; 
} 

public void print(PrintStream out) { 
    for(CellDTO cell : cells) { 
     System.out.println(getTuple(cell.getOrdinal()) + " " + cell.getFormattedValue()); 
    } 
} 
} 
+0

Спасибо Tuxmobil. Это полезно. Я замечаю, что есть два класса cellDTO, и оба они очень похожи. com.quartetfs.biz.pivot.dto.CellDTO и com.quartetfs.webservices.CellDTO. Я не уверен, почему есть два подобных класса. У меня есть объект dto.CellDTO. Когда вы обратитесь к образцу, не могли бы вы указать мне на какой пакет? – user3474390

+0

добавьте следующие классы в import: import com.quartetfs.webservices.AxisDTO; импорт com.quartetfs.webservices.AxisPositionDTO; импорт com.quartetfs.webservices.CellDTO; импорт com.quartetfs.webservices.CellSetDTO; импорт com.quartetfs.webservices.MemberDTO; – tuxmobil