Further workarounds for java being rubbish, by having a dedicated class to create concrete instances of interfaces for you
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@637610 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
379e682366
commit
1f3c93908c
@ -0,0 +1,19 @@
|
||||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
package org.apache.poi.ss.usermodel;
|
||||
|
||||
public interface CreationHelper {}
|
@ -153,17 +153,6 @@ public interface Cell {
|
||||
|
||||
String getCellFormula();
|
||||
|
||||
/**
|
||||
* Creates a RichTextString, which you can then pass to
|
||||
* {@link #setCellValue(RichTextString)}. This is required
|
||||
* because Java is broken, and won't allow you to define
|
||||
* static methods or constructors on interfaces, and without
|
||||
* that there's no way to get a RichTextString without
|
||||
* creating the appropriate concrete class.
|
||||
* @param text The text to initialise the RichTextString with
|
||||
*/
|
||||
RichTextString createRichTextString(String text);
|
||||
|
||||
/**
|
||||
* get the value of the cell as a number. For strings we throw an exception.
|
||||
* For blank cells we return a 0.
|
||||
|
@ -0,0 +1,42 @@
|
||||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
package org.apache.poi.ss.usermodel;
|
||||
|
||||
/**
|
||||
* An object that handles instantiating concrete
|
||||
* classes of the various instances one needs for
|
||||
* HSSF and XSSF.
|
||||
* Works around a major shortcoming in Java, where we
|
||||
* can't have static methods on interfaces or abstract
|
||||
* classes.
|
||||
* This allows you to get the appropriate class for
|
||||
* a given interface, without you having to worry
|
||||
* about if you're dealing with HSSF or XSSF, despite
|
||||
* Java being quite rubbish.
|
||||
*/
|
||||
public interface CreationHelper {
|
||||
/**
|
||||
* Creates a new RichTextString instance
|
||||
* @param text The text to initialise the RichTextString with
|
||||
*/
|
||||
RichTextString createRichTextString(String text);
|
||||
|
||||
/**
|
||||
* Creates a new DataFormat instance
|
||||
*/
|
||||
DataFormat createDataFormat();
|
||||
}
|
@ -18,14 +18,12 @@
|
||||
package org.apache.poi.ss.usermodel;
|
||||
|
||||
public interface DataFormat {
|
||||
|
||||
/**
|
||||
* get the format index that matches the given format string.
|
||||
* Creates a new format if one is not found. Aliases text to the proper format.
|
||||
* @param format string matching a built in format
|
||||
* @return index of format.
|
||||
*/
|
||||
|
||||
short getFormat(String format);
|
||||
|
||||
/**
|
||||
@ -33,7 +31,5 @@ public interface DataFormat {
|
||||
* @param index of a format
|
||||
* @return string represented at index of format or null if there is not a format at that index
|
||||
*/
|
||||
|
||||
String getFormat(short index);
|
||||
|
||||
}
|
@ -455,4 +455,13 @@ public interface Workbook {
|
||||
*/
|
||||
List getAllEmbeddedObjects();
|
||||
|
||||
/**
|
||||
* Returns an object that handles instantiating concrete
|
||||
* classes of the various instances one needs for
|
||||
* HSSF and XSSF.
|
||||
* Works around a major shortcoming in Java, where we
|
||||
* can't have static methods on interfaces or abstract
|
||||
* classes.
|
||||
*/
|
||||
CreationHelper getCreationHelper();
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
package org.apache.poi.xssf.usermodel;
|
||||
|
||||
import org.apache.poi.ss.usermodel.CreationHelper;
|
||||
import org.apache.poi.ss.usermodel.DataFormat;
|
||||
import org.apache.poi.ss.usermodel.RichTextString;
|
||||
|
||||
public class XSSFCreationHelper implements CreationHelper {
|
||||
private XSSFWorkbook workbook;
|
||||
private XSSFDataFormat dataFormat;
|
||||
XSSFCreationHelper(XSSFWorkbook wb) {
|
||||
workbook = wb;
|
||||
|
||||
// Create the things we only ever need one of
|
||||
dataFormat = new XSSFDataFormat();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new XSSFRichTextString for you.
|
||||
*/
|
||||
public RichTextString createRichTextString(String text) {
|
||||
return new XSSFRichTextString(text);
|
||||
}
|
||||
|
||||
public DataFormat createDataFormat() {
|
||||
return dataFormat;
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
package org.apache.poi.xssf.usermodel;
|
||||
|
||||
import org.apache.poi.ss.usermodel.DataFormat;
|
||||
|
||||
/**
|
||||
* TODO - figure out how this should really work for XSSF
|
||||
*/
|
||||
public class XSSFDataFormat implements DataFormat {
|
||||
public short getFormat(String format) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
public String getFormat(short index) {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -27,6 +27,7 @@ import javax.xml.namespace.QName;
|
||||
|
||||
import org.apache.poi.POIXMLDocument;
|
||||
import org.apache.poi.ss.usermodel.CellStyle;
|
||||
import org.apache.poi.ss.usermodel.CreationHelper;
|
||||
import org.apache.poi.ss.usermodel.DataFormat;
|
||||
import org.apache.poi.ss.usermodel.Font;
|
||||
import org.apache.poi.ss.usermodel.Name;
|
||||
@ -533,4 +534,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
|
||||
this.sharedStringSource = sharedStringSource;
|
||||
}
|
||||
|
||||
public CreationHelper getCreationHelper() {
|
||||
return new XSSFCreationHelper(this);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user