]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.procore.ui/src/org/simantics/db/procore/ui/internal/UI.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.procore.ui / src / org / simantics / db / procore / ui / internal / UI.java
1 package org.simantics.db.procore.ui.internal;\r
2 \r
3 import java.io.File;\r
4 import java.lang.reflect.Method;\r
5 import java.util.HashMap;\r
6 import java.util.Map;\r
7 \r
8 import org.eclipse.swt.widgets.Display;\r
9 import org.eclipse.swt.widgets.Shell;\r
10 import org.simantics.db.common.utils.Logger;\r
11 import org.simantics.db.exception.InternalException;\r
12 import org.simantics.db.server.DatabaseCorruptedException;\r
13 import org.simantics.db.server.DatabaseLastExitException;\r
14 import org.simantics.db.server.DatabaseProtocolException;\r
15 import org.simantics.db.server.DatabaseStartException;\r
16 import org.simantics.db.server.DatabaseVersionException;\r
17 import org.simantics.db.server.GuardFileVersionException;\r
18 import org.simantics.db.server.ProCoreException;\r
19 \r
20 public class UI {\r
21     public static boolean delete(Shell shell, File folder) {\r
22         return HandlerUtil.delete(shell, folder, "Database Delete", null);\r
23     }\r
24     public static boolean purge(Shell shell, File folder) {\r
25         return HandlerUtil.purge(shell, folder, "Database Purge", null);\r
26     }\r
27     public static boolean handleStart(Shell shell, InternalException e) throws ProCoreException {\r
28         if (!(e instanceof ProCoreException))\r
29             return false; // Can not fix this exception.\r
30         ProCoreException pce = (ProCoreException)e;\r
31         Handler handler = getStart(pce);\r
32         assert(null != handler);\r
33         return handler.start(shell, pce);\r
34     }\r
35     public static Display getDisplay() {\r
36         Display d = Display.getCurrent();\r
37         if (d == null)\r
38             d = Display.getDefault();\r
39         return d;\r
40     }\r
41     static Map<Long, Handler> startHandlers = new HashMap<Long, Handler>();\r
42     static {\r
43         startHandlers.put(GuardFileVersionException.getHandlerId(), new GuardFileVersionHandler());\r
44         startHandlers.put(DatabaseCorruptedException.getHandlerId(), new DatabaseCorruptedHandler());\r
45         startHandlers.put(DatabaseStartException.getHandlerId(), new DatabaseStartHandler());\r
46         startHandlers.put(DatabaseVersionException.getHandlerId(), new DatabaseVersionHandler());\r
47         startHandlers.put(DatabaseLastExitException.getHandlerId(), new DatabaseLastExitHandler());\r
48         startHandlers.put(DatabaseProtocolException.getHandlerId(), new DatabaseProtocolHandler());\r
49     }\r
50     private static <E extends ProCoreException> long getId(E pe) {\r
51         long id = 0;\r
52         try {\r
53             Method m = pe.getClass().getMethod("getHandlerId");\r
54             Object value = m.invoke(null);\r
55             id = (long)value;\r
56         } catch (RuntimeException e) {\r
57             Logger.defaultLogError(e);\r
58         } catch (Exception e) {\r
59             Logger.defaultLogError(e);\r
60         }\r
61         return id;\r
62     }\r
63     private static <E extends ProCoreException> Handler getStart(E e) {\r
64        Handler h = startHandlers.get(getId(e));\r
65        if (null == h)\r
66            return new DefaultHandler();\r
67        else\r
68            return h;\r
69     }\r
70 }\r