]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/ExcelImport.java
Adopt spreadsheet changes made in Balas development
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / ExcelImport.java
index 246f38edf8654dc7145ffd63c33bbe56e4dd99b3..24a0a85d0ce15c204e14da3eb7b9ddef85daba48 100644 (file)
@@ -28,7 +28,7 @@ import org.simantics.datatypes.utils.BTree;
 import org.simantics.db.Resource;
 import org.simantics.db.WriteGraph;
 import org.simantics.db.common.request.DelayedWriteRequest;
-import org.simantics.db.common.request.WriteRequest;
+import org.simantics.db.common.request.WriteResultRequest;
 import org.simantics.db.common.utils.NameUtils;
 import org.simantics.db.exception.BindingException;
 import org.simantics.db.exception.DatabaseException;
@@ -39,19 +39,32 @@ import org.simantics.db.layer0.util.Layer0Utils;
 import org.simantics.db.service.XSupport;
 import org.simantics.layer0.Layer0;
 import org.simantics.operation.Layer0X;
-import org.simantics.spreadsheet.graph.SpreadsheetStyle.SpreadsheetStyleBuilder;
-import org.simantics.spreadsheet.graph.formula.SpreadsheetEvaluationEnvironment;
-import org.simantics.spreadsheet.graph.parser.SheetFormulaParser;
-import org.simantics.spreadsheet.graph.parser.ast.AstValue;
+import org.simantics.spreadsheet.Spreadsheets;
 import org.simantics.spreadsheet.resource.SpreadsheetResource;
-import org.simantics.spreadsheet.util.SpreadsheetUtils;
+import org.simantics.spreadsheet.solver.SpreadsheetBook;
+import org.simantics.spreadsheet.solver.SpreadsheetStyle;
+import org.simantics.spreadsheet.solver.SpreadsheetStyle.SpreadsheetStyleBuilder;
+import org.simantics.spreadsheet.solver.formula.CellValueVisitor;
+import org.simantics.spreadsheet.solver.formula.SpreadsheetEvaluationEnvironment;
+import org.simantics.spreadsheet.solver.formula.parser.SheetFormulaParser;
+import org.simantics.spreadsheet.solver.formula.parser.ast.AstValue;
+import org.simantics.spreadsheet.synchronization.ExcelArrayFormula;
+import org.simantics.spreadsheet.synchronization.ExcelFormula;
 import org.simantics.utils.DataContainer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class ExcelImport {
-       
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ExcelImport.class);
+    
        private static final double POINT_TO_PIXEL_RATIO = 1.33;
        
-    public static void importBook(Resource container, File file) {
+       public static void importBook(Resource container, File file) {
+           importBookR(container, file);
+       }
+       
+    public static Resource importBookR(Resource container, File file) {
         
         try {
             
@@ -116,7 +129,7 @@ public class ExcelImport {
                                 graph.claim(sheet, L0.ConsistsOf, L0.PartOf, newCell);
                             }
 
-                            BTree bt = new BTree(graph, SpreadsheetUtils.SPREADSHEET_BTREE_SIZE, SR.Lines, SR.LineNode, L0.PartOf, true);
+                            BTree bt = new BTree(graph, Spreadsheets.SPREADSHEET_BTREE_SIZE, SR.Lines, SR.LineNode, L0.PartOf, true);
                             result.add(bt);
                             Resource lines = bt.rootOfBTree();
 
@@ -164,7 +177,7 @@ public class ExcelImport {
                                     Cell val = row.getCell(i, Row.RETURN_BLANK_AS_NULL);
                                     if(val != null) {
                                        
-                                        String cellName = SpreadsheetUtils.cellName(rowN, i);
+                                        String cellName = Spreadsheets.cellName(rowN, i);
                                         
                                         int ccIndx = val.getColumnIndex();
                                         if(columnWidths.size()<=ccIndx){
@@ -254,7 +267,7 @@ public class ExcelImport {
                         btreeContainer.set(result);
                         bookContainer.set(book);
                     } catch (Exception e) {
-                        e.printStackTrace();
+                        LOGGER.error("Could not import book " + file.getAbsolutePath(), e);
                         btreeContainer.add(Collections.emptyList());
                     }
                 }
@@ -269,20 +282,21 @@ public class ExcelImport {
                 }
             });
             
-            Simantics.getSession().sync(new WriteRequest() {
+            return Simantics.getSession().sync(new WriteResultRequest<Resource>() {
                 
                 @Override
-                public void perform(WriteGraph graph) throws DatabaseException {
+                public Resource perform(WriteGraph graph) throws DatabaseException {
                     Resource delayedBook = bookContainer.get();
                     XSupport support = graph.getService(XSupport.class);
                     Resource book = support.convertDelayedResourceToResource(delayedBook);
                     SpreadsheetGraphUtils.constructAndInitializeRunVariable(graph, book);
+                    return book;
                 }
             });
         } catch (Exception e) {
-            e.printStackTrace();
+            LOGGER.error("Could not import book " + file.getAbsolutePath(), e);
+            return null;
         }
-        
     }
     
     private static Resource assignStyles(WriteGraph graph, SpreadsheetResource SR, Cell cell, Resource book, Map<Integer, Resource> existingStyles, Map<Integer, SpreadsheetStyle> existingStyles2, String styleName) throws DatabaseException {
@@ -581,7 +595,7 @@ public class ExcelImport {
             SheetFormulaParser p = new SheetFormulaParser(new StringReader("(-(0.2/2)+SQRT((0.2/2)^2-4*((0.2/2)^2-(3*0.17625)/(PI()*4.7))))"));
             AstValue v = p.relation();
             System.err.println("v="+v);
-            SpreadsheetBook book = new SpreadsheetBook();
+            SpreadsheetBook book = new SpreadsheetBook("http:/");
             Object o = v.accept(new CellValueVisitor(SpreadsheetEvaluationEnvironment.getInstance(book), null));
             System.err.println("o="+o);
         }