|
|
|
@ -16,6 +16,8 @@ import com.fr.stable.lifecycle.FineLifecycleFatalError;
|
|
|
|
|
import com.fr.stable.project.ProjectConstants; |
|
|
|
|
|
|
|
|
|
import javax.swing.*; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @author hades |
|
|
|
@ -25,15 +27,39 @@ import javax.swing.*;
|
|
|
|
|
public class LifecycleFatalErrorHandler { |
|
|
|
|
|
|
|
|
|
private static final LifecycleFatalErrorHandler INSTANCE = new LifecycleFatalErrorHandler(); |
|
|
|
|
private Map<ErrorType, Handler> map = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
private LifecycleFatalErrorHandler() { |
|
|
|
|
for (ErrorType type : ErrorType.values()) { |
|
|
|
|
if (ErrorType.FINEDB.equals(type)) { |
|
|
|
|
map.put(type, FineDBHandler.SELF); |
|
|
|
|
} else { |
|
|
|
|
map.put(type, DefaultHandler.SELF); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static LifecycleFatalErrorHandler getInstance() { |
|
|
|
|
return INSTANCE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void handle(FineLifecycleFatalError fatal) { |
|
|
|
|
SplashContext.getInstance().hide(); |
|
|
|
|
if (ErrorType.FINEDB.equals(fatal.getErrorType())) { |
|
|
|
|
map.get(fatal.getErrorType()).handle(fatal); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
interface Handler { |
|
|
|
|
void handle(FineLifecycleFatalError error); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* finedb处理 |
|
|
|
|
*/ |
|
|
|
|
enum FineDBHandler implements Handler { |
|
|
|
|
|
|
|
|
|
SELF { |
|
|
|
|
@Override |
|
|
|
|
public void handle(FineLifecycleFatalError fatal) { |
|
|
|
|
StartErrorMessageCollector.getInstance().record(DesignerErrorMessage.FINEDB_PROBLEM.getId(), |
|
|
|
|
DesignerErrorMessage.FINEDB_PROBLEM.getMessage(), |
|
|
|
|
fatal.getMessage()); |
|
|
|
@ -65,6 +91,25 @@ public class LifecycleFatalErrorHandler {
|
|
|
|
|
DesignerExiter.getInstance().execute(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void afterBackupFailed() { |
|
|
|
|
FineJOptionPane.showMessageDialog(null, |
|
|
|
|
Toolkit.i18nText("Fine-Design_Error_Finedb_Backup_Reset_Result", |
|
|
|
|
ResourceIOUtils.getRealPath(StableUtils.pathJoin(ProjectConstants.EMBED_DB_DIRECTORY, ProjectConstants.FINE_DB_NAME))), |
|
|
|
|
Toolkit.i18nText("Fine-Design_Basic_Error"), |
|
|
|
|
JOptionPane.ERROR_MESSAGE); |
|
|
|
|
DesignerExiter.getInstance().execute(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 默认处理 |
|
|
|
|
*/ |
|
|
|
|
enum DefaultHandler implements Handler { |
|
|
|
|
SELF { |
|
|
|
|
@Override |
|
|
|
|
public void handle(FineLifecycleFatalError fatal) { |
|
|
|
|
FineLoggerFactory.getLogger().error(fatal.getMessage(), fatal); |
|
|
|
|
StartErrorMessageCollector.getInstance().record(DesignerErrorMessage.UNEXCEPTED_START_FAILED.getId(), |
|
|
|
|
DesignerErrorMessage.UNEXCEPTED_START_FAILED.getMessage(), |
|
|
|
@ -86,14 +131,7 @@ public class LifecycleFatalErrorHandler {
|
|
|
|
|
}; |
|
|
|
|
dialog.setVisible(true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void afterBackupFailed() { |
|
|
|
|
FineJOptionPane.showMessageDialog(null, |
|
|
|
|
Toolkit.i18nText("Fine-Design_Error_Finedb_Backup_Reset_Result", |
|
|
|
|
ResourceIOUtils.getRealPath(StableUtils.pathJoin(ProjectConstants.EMBED_DB_DIRECTORY, ProjectConstants.FINE_DB_NAME))), |
|
|
|
|
Toolkit.i18nText("Fine-Design_Basic_Error"), |
|
|
|
|
JOptionPane.ERROR_MESSAGE); |
|
|
|
|
DesignerExiter.getInstance().execute(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|