1 package org.simantics.db.procore.ui.internal;
\r
4 import java.lang.reflect.Method;
\r
5 import java.util.HashMap;
\r
6 import java.util.Map;
\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
21 public static boolean delete(Shell shell, File folder) {
\r
22 return HandlerUtil.delete(shell, folder, "Database Delete", null);
\r
24 public static boolean purge(Shell shell, File folder) {
\r
25 return HandlerUtil.purge(shell, folder, "Database Purge", null);
\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
35 public static Display getDisplay() {
\r
36 Display d = Display.getCurrent();
\r
38 d = Display.getDefault();
\r
41 static Map<Long, Handler> startHandlers = new HashMap<Long, Handler>();
\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
50 private static <E extends ProCoreException> long getId(E pe) {
\r
53 Method m = pe.getClass().getMethod("getHandlerId");
\r
54 Object value = m.invoke(null);
\r
56 } catch (RuntimeException e) {
\r
57 Logger.defaultLogError(e);
\r
58 } catch (Exception e) {
\r
59 Logger.defaultLogError(e);
\r
63 private static <E extends ProCoreException> Handler getStart(E e) {
\r
64 Handler h = startHandlers.get(getId(e));
\r
66 return new DefaultHandler();
\r