-
Notifications
You must be signed in to change notification settings - Fork 1
/
ManagerApp.java
135 lines (123 loc) · 5.72 KB
/
ManagerApp.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package io.keikai.demo.app;
import static io.keikai.demo.Configuration.getUriForBrowser;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map;
import io.keikai.client.api.AbortedException;
import io.keikai.client.api.DuplicateNameException;
import io.keikai.client.api.Keikai;
import io.keikai.client.api.Range;
import io.keikai.client.api.Range.DeleteShiftDirection;
import io.keikai.client.api.Range.InsertFormatOrigin;
import io.keikai.client.api.Range.InsertShiftDirection;
import io.keikai.client.api.Spreadsheet;
import io.keikai.client.api.Workbook;
import io.keikai.client.api.Worksheet;
import io.keikai.client.api.ctrl.Checkbox;
import io.keikai.client.api.ui.UIActivity;
import io.keikai.demo.persistence.PersistenceUtil;
import io.keikai.demo.persistence.VendorMap;
/**
* enable collaboration edit with the same application ID.
*/
public class ManagerApp {
private Spreadsheet spreadsheetTable;
static private String tableXlsx = "managerapp.xlsx";
public final static Map<String, String> DISPLAY_COLUMN_NAMES;
static {
DISPLAY_COLUMN_NAMES = new HashMap<String, String>();
DISPLAY_COLUMN_NAMES.put("businessCategory1", "Business Category 1");
DISPLAY_COLUMN_NAMES.put("businessCategory2", "Business Category2");
DISPLAY_COLUMN_NAMES.put("businessProductsAndServices", "Business Products And Services");
DISPLAY_COLUMN_NAMES.put("companyAdress", "Company Adress");
DISPLAY_COLUMN_NAMES.put("companyName", "Company Name");
DISPLAY_COLUMN_NAMES.put("contact1Designation", "Contact 1 Designation");
DISPLAY_COLUMN_NAMES.put("contact1Name", "Contact 1 Name");
DISPLAY_COLUMN_NAMES.put("contact1phone", "Contact 1 Phone");
DISPLAY_COLUMN_NAMES.put("contact2Designation", "Contact 2 Designation");
DISPLAY_COLUMN_NAMES.put("contact2Name", "Contact 2 Name");
DISPLAY_COLUMN_NAMES.put("contact2phone", "Contact 2 phone");
DISPLAY_COLUMN_NAMES.put("contact3Designation", "Contact 3 Designation");
DISPLAY_COLUMN_NAMES.put("contact3Name", "Contact 3 Name");
DISPLAY_COLUMN_NAMES.put("contact3phone", "Contact 3 phone");
DISPLAY_COLUMN_NAMES.put("country", "country");
DISPLAY_COLUMN_NAMES.put("email", "email");
DISPLAY_COLUMN_NAMES.put("financialDetailsYear1production", "Financial Details Year 1 production");
DISPLAY_COLUMN_NAMES.put("financialDetailsYear1turnover", "Financial Details Year 1 turnover");
DISPLAY_COLUMN_NAMES.put("financialDetailsYear1year", "Financial Details Year 1 year");
DISPLAY_COLUMN_NAMES.put("financialDetailsYear2production", "Financial Details Year 2 production");
DISPLAY_COLUMN_NAMES.put("financialDetailsYear2turnover", "Financial Details Year 2 turnover");
DISPLAY_COLUMN_NAMES.put("financialDetailsYear2year", "Financial Details Year 2 year");
DISPLAY_COLUMN_NAMES.put("financialDetailsYear3production", "Financial Details Year 3 production");
DISPLAY_COLUMN_NAMES.put("financialDetailsYear3turnover", "Financial Details Year 3 turnover");
DISPLAY_COLUMN_NAMES.put("financialDetailsYear3year", "Financial Details Year 3 year");
DISPLAY_COLUMN_NAMES.put("legalStructure", "Legal Structure");
DISPLAY_COLUMN_NAMES.put("phone", "phone");
DISPLAY_COLUMN_NAMES.put("signatureDate", "Signature Date");
DISPLAY_COLUMN_NAMES.put("signatureDesignation", "Signature Designation");
DISPLAY_COLUMN_NAMES.put("signaturePrintName", "Signature PrintName");
DISPLAY_COLUMN_NAMES.put("signatureSign", "Signature Sign");
DISPLAY_COLUMN_NAMES.put("website", "website");
}
/**
* pass the anchor DOM element ID for rendering a Keikai spreadsheet
*
* @param elementId
* @return
*/
public String getSpreadsheetTableJavaScriptURI(String elementId) {
return getUriForBrowser(spreadsheetTable, elementId);
}
public ManagerApp(String keikaiServerAddress) {
// all clients that connect with the same application id share the same view.
// we just use file name as app ID
spreadsheetTable = Keikai.newClient(keikaiServerAddress);
spreadsheetTable.setUIActivityCallback(new UIActivity() {
public void onConnect() {
setupUi();
}
public void onDisconnect() {
spreadsheetTable.close();
}
});
}
public void init(File defaultFileFolder) {
try {
Workbook workbook = spreadsheetTable.imports("managerapp", new File(defaultFileFolder, tableXlsx));
spreadsheetTable.setActiveWorkbook(workbook.getName());
workbook.setActiveWorksheet(0);
} catch (FileNotFoundException | DuplicateNameException | AbortedException e) {
e.printStackTrace();
}
vendorDataToWorkbook();
}
private void vendorDataToWorkbook() {
VendorMap[] allVendors = PersistenceUtil.getAllVendors();
Worksheet worksheet = spreadsheetTable.getWorksheet();
Range firstrow = worksheet.getRange("1:1");
Range displayTable = worksheet.getRange("2:2");
String[] rangeNames = DISPLAY_COLUMN_NAMES.keySet().toArray(new String[] {});
for (int i = 0; i < rangeNames.length; i++) {
firstrow.getCell(firstrow.getRow(), i).setValue(DISPLAY_COLUMN_NAMES.get(rangeNames[i]));
}
int currentRow = 0;
for (VendorMap vendor : allVendors) {
displayTable.getRows(currentRow).insert(InsertShiftDirection.ShiftDown,
InsertFormatOrigin.LeftOrAbove);
for (int i = 0; i < rangeNames.length; i++) {
displayTable.getCell(currentRow+1, i).setValue(vendor.getVendorData().get(rangeNames[i]));
}
currentRow++;
}
displayTable.getRows(currentRow).delete(DeleteShiftDirection.ShiftUp);
}
private void setupUi() {
spreadsheetTable.getUIService().showToolbar(true);
spreadsheetTable.getUIService().showSheetTabs(true);
spreadsheetTable.getUIService().showContextMenu(true);
spreadsheetTable.getUIService().showFormulaBar(true);
spreadsheetTable.getUIService().showSheetControls(true);
spreadsheetTable.getUIService().setProtectedSheetWarningEnabled(true);
}
}