diff options
Diffstat (limited to 'src/ooxml/java/org/apache/poi/xssf/model')
4 files changed, 68 insertions, 41 deletions
diff --git a/src/ooxml/java/org/apache/poi/xssf/model/CommentsTable.java b/src/ooxml/java/org/apache/poi/xssf/model/CommentsTable.java index f3799ab24e..95bbf2907c 100644 --- a/src/ooxml/java/org/apache/poi/xssf/model/CommentsTable.java +++ b/src/ooxml/java/org/apache/poi/xssf/model/CommentsTable.java @@ -98,9 +98,11 @@ public class CommentsTable extends POIXMLDocumentPart { return comments.getAuthors().getAuthorArray((int)authorId); } + @SuppressWarnings("deprecation") public int findAuthor(String author) { - for (int i = 0 ; i < comments.getAuthors().sizeOfAuthorArray() ; i++) { - if (comments.getAuthors().getAuthorArray(i).equals(author)) { + String[] authorArray = comments.getAuthors().getAuthorArray(); + for (int i = 0 ; i < authorArray.length; i++) { + if (authorArray[i].equals(author)) { return i; } } @@ -149,15 +151,18 @@ public class CommentsTable extends POIXMLDocumentPart { public boolean removeComment(String cellRef) { CTCommentList lst = comments.getCommentList(); - if(lst != null) for(int i=0; i < lst.sizeOfCommentArray(); i++) { - CTComment comment = lst.getCommentArray(i); - if (cellRef.equals(comment.getRef())) { - lst.removeComment(i); - - if(commentRefs != null) { - commentRefs.remove(cellRef); + if(lst != null) { + CTComment[] commentArray = lst.getCommentArray(); + for (int i = 0; i < commentArray.length; i++) { + CTComment comment = commentArray[i]; + if (cellRef.equals(comment.getRef())) { + lst.removeComment(i); + + if(commentRefs != null) { + commentRefs.remove(cellRef); + } + return true; } - return true; } } return false; diff --git a/src/ooxml/java/org/apache/poi/xssf/model/MapInfo.java b/src/ooxml/java/org/apache/poi/xssf/model/MapInfo.java index f664f6bbc0..33c161b4c3 100644 --- a/src/ooxml/java/org/apache/poi/xssf/model/MapInfo.java +++ b/src/ooxml/java/org/apache/poi/xssf/model/MapInfo.java @@ -24,7 +24,6 @@ import java.util.Collection; import java.util.HashMap; import java.util.Map; - import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationship; @@ -66,13 +65,14 @@ public class MapInfo extends POIXMLDocumentPart { readFrom(part.getInputStream()); } + @SuppressWarnings("deprecation") public void readFrom(InputStream is) throws IOException { try { MapInfoDocument doc = MapInfoDocument.Factory.parse(is); mapInfo = doc.getMapInfo(); maps= new HashMap<Integer, XSSFMap>(); - for(CTMap map :mapInfo.getMapList()){ + for(CTMap map :mapInfo.getMapArray()){ maps.put((int)map.getID(), new XSSFMap(map,this)); } @@ -104,10 +104,11 @@ public class MapInfo extends POIXMLDocumentPart { * @param schemaId the schema ID * @return CTSchema by it's ID */ + @SuppressWarnings("deprecation") public CTSchema getCTSchemaById(String schemaId){ CTSchema xmlSchema = null; - for(CTSchema schema: mapInfo.getSchemaList()){ + for(CTSchema schema: mapInfo.getSchemaArray()){ if(schema.getID().equals(schemaId)){ xmlSchema = schema; break; diff --git a/src/ooxml/java/org/apache/poi/xssf/model/SingleXmlCells.java b/src/ooxml/java/org/apache/poi/xssf/model/SingleXmlCells.java index 63c514b130..cb1542e87b 100644 --- a/src/ooxml/java/org/apache/poi/xssf/model/SingleXmlCells.java +++ b/src/ooxml/java/org/apache/poi/xssf/model/SingleXmlCells.java @@ -94,10 +94,11 @@ public class SingleXmlCells extends POIXMLDocumentPart { * * @return all the SimpleXmlCell contained in this SingleXmlCells element */ + @SuppressWarnings("deprecation") public List<XSSFSingleXmlCell> getAllSimpleXmlCell(){ List<XSSFSingleXmlCell> list = new Vector<XSSFSingleXmlCell>(); - for(CTSingleXmlCell singleXmlCell: singleXMLCells.getSingleXmlCellList()){ + for(CTSingleXmlCell singleXmlCell: singleXMLCells.getSingleXmlCellArray()){ list.add(new XSSFSingleXmlCell(singleXmlCell,this)); } return list; diff --git a/src/ooxml/java/org/apache/poi/xssf/model/ThemesTable.java b/src/ooxml/java/org/apache/poi/xssf/model/ThemesTable.java index 3bd00f4a2f..0e8f906339 100644 --- a/src/ooxml/java/org/apache/poi/xssf/model/ThemesTable.java +++ b/src/ooxml/java/org/apache/poi/xssf/model/ThemesTable.java @@ -23,20 +23,22 @@ import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.poi.xssf.usermodel.XSSFColor; import org.apache.xmlbeans.XmlException; -import org.apache.xmlbeans.XmlObject; +import org.openxmlformats.schemas.drawingml.x2006.main.CTColor; import org.openxmlformats.schemas.drawingml.x2006.main.CTColorScheme; import org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument; -import org.openxmlformats.schemas.drawingml.x2006.main.CTColor; /** * Class that represents theme of XLSX document. The theme includes specific * colors and fonts. - * - * @author Petr Udalau(Petr.Udalau at exigenservices.com) - theme colors */ public class ThemesTable extends POIXMLDocumentPart { private ThemeDocument theme; + /** + * Construct a ThemesTable. + * @param part A PackagePart. + * @param rel A PackageRelationship. + */ public ThemesTable(PackagePart part, PackageRelationship rel) throws IOException { super(part, rel); @@ -47,38 +49,56 @@ public class ThemesTable extends POIXMLDocumentPart { } } + /** + * Construct a ThemesTable from an existing ThemeDocument. + * @param theme A ThemeDocument. + */ public ThemesTable(ThemeDocument theme) { this.theme = theme; } + /** + * Convert a theme "index" into a color. + * @param idx A theme "index" + * @return The mapped XSSFColor, or null if not mapped. + */ public XSSFColor getThemeColor(int idx) { + // Theme color references are NOT positional indices into the color scheme, + // i.e. these keys are NOT the same as the order in which theme colors appear + // in theme1.xml. They are keys to a mapped color. CTColorScheme colorScheme = theme.getTheme().getThemeElements().getClrScheme(); - CTColor ctColor = null; - int cnt = 0; - for (XmlObject obj : colorScheme.selectPath("./*")) { - if (obj instanceof org.openxmlformats.schemas.drawingml.x2006.main.CTColor) { - if (cnt == idx) { - ctColor = (org.openxmlformats.schemas.drawingml.x2006.main.CTColor) obj; - - byte[] rgb = null; - if (ctColor.getSrgbClr() != null) { - // Colour is a regular one - rgb = ctColor.getSrgbClr().getVal(); - } else if (ctColor.getSysClr() != null) { - // Colour is a tint of white or black - rgb = ctColor.getSysClr().getLastClr(); - } + CTColor ctColor; + switch (idx) { + case 0: ctColor = colorScheme.getLt1(); break; + case 1: ctColor = colorScheme.getDk1(); break; + case 2: ctColor = colorScheme.getLt2(); break; + case 3: ctColor = colorScheme.getDk2(); break; + case 4: ctColor = colorScheme.getAccent1(); break; + case 5: ctColor = colorScheme.getAccent2(); break; + case 6: ctColor = colorScheme.getAccent3(); break; + case 7: ctColor = colorScheme.getAccent4(); break; + case 8: ctColor = colorScheme.getAccent5(); break; + case 9: ctColor = colorScheme.getAccent6(); break; + case 10: ctColor = colorScheme.getHlink(); break; + case 11: ctColor = colorScheme.getFolHlink(); break; + default: return null; + } - return new XSSFColor(rgb); - } - cnt++; - } + byte[] rgb = null; + if (ctColor.isSetSrgbClr()) { + // Color is a regular one + rgb = ctColor.getSrgbClr().getVal(); + } else if (ctColor.isSetSysClr()) { + // Color is a tint of white or black + rgb = ctColor.getSysClr().getLastClr(); + } else { + return null; } - return null; + return new XSSFColor(rgb); } /** - * If the colour is based on a theme, then inherit + * If the colour is based on a theme, then inherit * information (currently just colours) from it as * required. */ @@ -91,13 +111,13 @@ public class ThemesTable extends POIXMLDocumentPart { // No theme set, nothing to do return; } - + // Get the theme colour XSSFColor themeColor = getThemeColor(color.getTheme()); // Set the raw colour, not the adjusted one // Do a raw set, no adjusting at the XSSFColor layer either color.getCTColor().setRgb(themeColor.getCTColor().getRgb()); - + // All done } } |