in poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSourcesFactory.java [44:195]
public static XDDFCategoryDataSource fromDataSource(final CTAxDataSource categoryDS) {
if (categoryDS == null) {
return null;
}
if (categoryDS.getNumRef() != null && categoryDS.getNumRef().getNumCache() != null) {
return new XDDFCategoryDataSource() {
private final CTNumData category = (CTNumData) categoryDS.getNumRef().getNumCache().copy();
private final String formatCode = category.isSetFormatCode() ? category.getFormatCode() : null;
@Override
public boolean isCellRange() {
return true;
}
@Override
public boolean isNumeric() {
return true;
}
@Override
public String getDataRangeReference() {
return categoryDS.getNumRef().getF();
}
@Override
public int getPointCount() {
return (int) category.getPtCount().getVal();
}
@Override
public String getPointAt(int index) {
if (category.sizeOfPtArray() <= index) {
throw new IllegalArgumentException("Cannot access 0-based index " + index +
" in point-array with " + category.sizeOfPtArray() + " items");
}
return category.getPtArray(index).getV();
}
@Override
public String getFormatCode() { return formatCode; }
};
} else if (categoryDS.getStrRef() != null && categoryDS.getStrRef().getStrCache() != null) {
return new XDDFCategoryDataSource() {
private final CTStrData category = (CTStrData) categoryDS.getStrRef().getStrCache().copy();
@Override
public boolean isCellRange() {
return true;
}
@Override
public String getDataRangeReference() {
return categoryDS.getStrRef().getF();
}
@Override
public int getPointCount() {
return (int) category.getPtCount().getVal();
}
@Override
public String getPointAt(int index) {
return category.getPtArray(index).getV();
}
@Override
public String getFormatCode() { return null; }
};
} else if (categoryDS.getNumLit() != null) {
return new XDDFCategoryDataSource() {
private final CTNumData category = (CTNumData) categoryDS.getNumLit().copy();
private final String formatCode = category.isSetFormatCode() ? category.getFormatCode() : null;
@Override
public boolean isCellRange() {
return false;
}
@Override
public boolean isLiteral() {
return true;
}
@Override
public boolean isNumeric() {
return true;
}
@Override
public boolean isReference() {
return false;
}
@Override
public String getDataRangeReference() {
return null;
}
@Override
public int getPointCount() {
return (int) category.getPtCount().getVal();
}
@Override
public String getPointAt(int index) {
return category.getPtArray(index).getV();
}
@Override
public String getFormatCode() { return formatCode; }
};
} else if (categoryDS.getStrLit() != null) {
return new XDDFCategoryDataSource() {
private final CTStrData category = (CTStrData) categoryDS.getStrLit().copy();
@Override
public boolean isCellRange() {
return false;
}
@Override
public boolean isLiteral() {
return true;
}
@Override
public boolean isReference() {
return false;
}
@Override
public String getDataRangeReference() {
return null;
}
@Override
public int getPointCount() {
return (int) category.getPtCount().getVal();
}
@Override
public String getPointAt(int index) {
return category.getPtArray(index).getV();
}
@Override
public String getFormatCode() { return null; }
};
} else {
return null; // in some weird cases the element is empty
}
}