projects
/
lgpl
/
argeo-commons.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
INtroduce JUNit Support
[lgpl/argeo-commons.git]
/
server
/
runtime
/
org.argeo.server.jxl
/
src
/
main
/
java
/
org
/
argeo
/
server
/
jxl
/
dao
/
JxlDaoSupport.java
diff --git
a/server/runtime/org.argeo.server.jxl/src/main/java/org/argeo/server/jxl/dao/JxlDaoSupport.java
b/server/runtime/org.argeo.server.jxl/src/main/java/org/argeo/server/jxl/dao/JxlDaoSupport.java
index 0488d519815896da54ccde15f204a2860e12bb02..7b4110d8e487e31428398d37ccc7791f4dca5092 100644
(file)
--- a/
server/runtime/org.argeo.server.jxl/src/main/java/org/argeo/server/jxl/dao/JxlDaoSupport.java
+++ b/
server/runtime/org.argeo.server.jxl/src/main/java/org/argeo/server/jxl/dao/JxlDaoSupport.java
@@
-45,37
+45,42
@@
public class JxlDaoSupport implements LightDaoSupport, ApplicationContextAware,
private List<Resource> workbooks = new ArrayList<Resource>();
public void afterPropertiesSet() throws Exception {
private List<Resource> workbooks = new ArrayList<Resource>();
public void afterPropertiesSet() throws Exception {
+ init();
+ }
+
+ public void init() {
+ // used to resolve inner references
+ Map<String, List<Object>> tempRefs = new HashMap<String, List<Object>>();
+
+ List<Reference> references = new ArrayList<Reference>();
+
for (Resource res : workbooks) {
InputStream in = null;
try {
in = res.getInputStream();
for (Resource res : workbooks) {
InputStream in = null;
try {
in = res.getInputStream();
- load(in);
+ load(in, references, tempRefs);
+ } catch (Exception e) {
+ throw new ArgeoServerException("Cannot load stream", e);
} finally {
IOUtils.closeQuietly(in);
}
}
} finally {
IOUtils.closeQuietly(in);
}
}
+ // Inject references
+ for (Reference ref : references) {
+ injectReference(ref, tempRefs);
+ }
+ if (log.isDebugEnabled())
+ log.debug(references.size() + " references linked");
}
}
- public void load(InputStream in) {
+ public void load(InputStream in, List<Reference> references,
+ Map<String, List<Object>> tempRefs) {
try {
try {
- // used to resolve inner references
- Map<String, List<Object>> tempRefs = new HashMap<String, List<Object>>();
-
- List<Reference> references = new ArrayList<Reference>();
-
Workbook workbook = Workbook.getWorkbook(in);
Workbook workbook = Workbook.getWorkbook(in);
-
for (Sheet sheet : workbook.getSheets()) {
loadSheet(sheet, references, tempRefs);
}
for (Sheet sheet : workbook.getSheets()) {
loadSheet(sheet, references, tempRefs);
}
-
- for (Reference ref : references) {
- injectReference(ref, tempRefs);
- }
- if (log.isDebugEnabled())
- log.debug(references.size() + " references linked");
-
} catch (Exception e) {
throw new ArgeoServerException("Cannot load workbook", e);
}
} catch (Exception e) {
throw new ArgeoServerException("Cannot load workbook", e);
}
@@
-130,6
+135,10
@@
public class JxlDaoSupport implements LightDaoSupport, ApplicationContextAware,
if (cell instanceof FormulaCell) {
String formula = ((FormulaCell) cell).getFormula();
int index = formula.indexOf('!');
if (cell instanceof FormulaCell) {
String formula = ((FormulaCell) cell).getFormula();
int index = formula.indexOf('!');
+ if (index < 0)
+ throw new ArgeoServerException("Cannot interpret formula "
+ + formula);
+ ;
String targetSheet = formula.substring(0, index);
// assume no double letters!!
String targetRowStr = formula.substring(index + 2);
String targetSheet = formula.substring(0, index);
// assume no double letters!!
String targetRowStr = formula.substring(index + 2);