]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/ExcelLink.java.keep
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / ExcelLink.java.keep
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.spreadsheet.graph;
13
14 import java.util.UUID;
15
16 import org.simantics.db.Resource;
17 import org.simantics.db.common.utils.Logger;
18 import org.simantics.excel.Excel;
19 import org.simantics.spreadsheet.ClientModel;
20 import org.simantics.spreadsheet.Range;
21 import org.simantics.spreadsheet.common.client.ClientModelListenerAdapter;
22 import org.simantics.spreadsheet.common.exception.CellParseException;
23 import org.simantics.spreadsheet.util.SpreadsheetUtils;
24 import org.simantics.utils.datastructures.Pair;
25
26 public class ExcelLink extends ClientModelListenerAdapter {
27
28     final private ClientModel model;
29     final private String name;
30     final private String prefix;
31     final private Excel excel;
32     private int handle;
33     
34     public ExcelLink(ClientModel model, Resource spreadsheet, String prefix) {
35         
36         this.handle = 0;
37         this.model = model;
38         this.name = "" + spreadsheet.getResourceId();
39         this.prefix = prefix;
40         this.excel = Excel.getInstance(System.out);
41         model.addListener(this);
42         
43     }
44     
45 //    public <T> void load(final Resource spreadsheet) {
46 //
47 //        Excel e = null;
48 //        try {
49 //            e = Excel.getInstance(System.out); 
50 //        } catch (Throwable t) {
51 //            t.printStackTrace();
52 //        }
53 //        excel = e;
54 //        handle = excel.open_(excel.getFile(name + ".xlsx"));
55 //        System.err.println("excel.open " + (name + ".xlsx"));
56 //        
57 //        
58 //    }
59
60     public void dispose() {
61         model.removeListener(this);
62         excel.close_(handle);
63         System.err.println("excel.close " + handle);
64     }
65
66         @Override
67         public void propertyChange(String location, String property, Object value) {
68                 
69                 if(ClientModel.LABEL.equals(property) && value != null && value instanceof String) {
70                         
71                         if(handle == 0) return;
72                         Range range = SpreadsheetUtils.decodeCellAbsolute(location);
73                         excel.setString_(handle, range.startRow, range.startColumn, (String)value);
74 //                      System.err.println("excel.setString " + value);
75                         
76                 } else if("Excel".equals(location) && "Visible".equals(property) && value instanceof Boolean) {
77
78                         Boolean visible = (Boolean)value;
79                         if(visible) {
80                                 
81                         try {
82                                 if(handle == 0) {
83                                         
84                                         Excel excel = Excel.getInstance(System.out); 
85                                         handle = excel.open_(excel.getFile(name + ".xlsx"));
86 //                                      System.err.println("excel.open " + (name + ".xlsx"));
87                                         
88                                                 for(Pair<String, Object> label : model.listAll(ClientModel.LABEL)) {
89                                                         try {
90                                                                 Range range = SpreadsheetUtils.decodeCellAbsolute(label.first);
91                                                                 excel.setString_(handle, range.startRow, range.startColumn, (String)label.second);
92                                                                 System.err.println("excel.setString " + label.second);
93                                                         } catch (CellParseException e) {
94                                                         }
95                                                 }
96                                                 for(Pair<String, Object> label : model.listAll(ClientModel.CONTENT)) {
97                                                         try {
98                                                                 Range range = SpreadsheetUtils.decodeCellAbsolute(label.first);
99                                                                 //excel.setString_(handle, range.startRow, range.startColumn, (String)label.second);
100                                                                 
101                                                                 String uri = (String)label.second;
102                                                                 if(uri.startsWith(prefix)) {
103                                                                         String rvi = uri.substring(prefix.length()+1).replace("#", "_").replace("(", "_").replace(")", "_").replace("+", "p").replace("-", "m");
104                                                                         excel.setName_(handle, range.startRow, range.startColumn, rvi);
105                                                                         System.err.println("excel.setCellName '" + rvi + "'");
106                                                                 }
107                                                                 
108                                                         } catch (CellParseException e) {
109                                                         }
110                                                 }
111                                                 
112                                 }
113                         } catch (Throwable t) {
114                                 Logger.defaultLogError(t);
115                         }
116                                 
117                         } else {
118
119                         try {
120                                 if(handle != 0) {
121                                         Excel excel = Excel.getInstance(System.out); 
122                                         handle = excel.close_(handle);
123                                         handle = 0;
124 //                                      System.err.println("excel.close " + handle);
125                                 }
126                         } catch (Throwable t) {
127                                 Logger.defaultLogError(t);
128                         }
129                                 
130                         }
131 //                      excel.setVisible_(handle, (Boolean)value);
132 //                      System.err.println("excel.setVisible " + value);
133                 }
134         }
135     
136 //    @Override
137 //    public void changed(int row, int column, Cell cell) {
138 //
139 //        String value = cell != null ? cell.toString() : "";
140 //        if(value == null) value = "...";
141 //        excel.setString_(handle, row, column, value);
142 //        
143 //    }
144
145 }