Browse Source

Merge branch 'release/10.0' of http://cloud.finedevelop.com:2015/scm/~kerry/design_10.0 into release/10.0

master
kerry 7 years ago
parent
commit
563903b929
  1. 1
      designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java
  2. 10
      designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java
  3. 15
      designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java
  4. 4
      designer-base/src/com/fr/design/style/background/BackgroundCardSwitchButtonPane.java
  5. 8
      designer-base/src/com/fr/design/style/background/BackgroundFactory.java
  6. 759
      designer-base/src/com/fr/env/RemoteEnv.java
  7. 2
      designer-realize/pom.xml
  8. 1
      designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java
  9. 4
      designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java
  10. 22
      designer-realize/src/com/fr/design/webattr/EditReportServerParameterPane.java
  11. 3
      designer-realize/src/com/fr/start/Designer.java
  12. 47
      designer-realize/src/com/fr/start/module/DesignerActivator.java
  13. 4
      designer-realize/src/com/fr/start/module/DesignerStartup.java

1
designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java

@ -114,7 +114,6 @@ public class SwitchExistEnv extends MenuDef {
@Override @Override
public void fail() { public void fail() {
TemplatePane.getInstance().editItems();
JOptionPane.showMessageDialog( JOptionPane.showMessageDialog(
DesignerContext.getDesignerFrame(), DesignerContext.getDesignerFrame(),
Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"})); Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"}));

10
designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java vendored

@ -8,13 +8,13 @@ import com.fr.workspace.connect.WorkspaceClient;
* 根据配置生成运行环境 * 根据配置生成运行环境
*/ */
public class DesignerWorkspaceGenerator { public class DesignerWorkspaceGenerator {
public static Workspace generate(DesignerWorkspaceInfo config) { public static Workspace generate(DesignerWorkspaceInfo config) {
if (config == null || config.getType() == null) { if (config == null || config.getType() == null) {
return null; return null;
} }
Workspace workspace = null; Workspace workspace = null;
switch (config.getType()) { switch (config.getType()) {
case Local: { case Local: {
@ -23,7 +23,9 @@ public class DesignerWorkspaceGenerator {
} }
case Remote: { case Remote: {
WorkspaceClient client = WorkContext.getConnector().connect(config.getConnection()); WorkspaceClient client = WorkContext.getConnector().connect(config.getConnection());
workspace = new RemoteWorkspace(client, config.getConnection()); if (client != null) {
workspace = new RemoteWorkspace(client, config.getConnection());
}
break; break;
} }
} }

15
designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java

@ -45,21 +45,6 @@ public class DesignerLogHandler {
private static final int ERRO_GAP_Y = -40; private static final int ERRO_GAP_Y = -40;
private static final int SERVER_GAP_Y = -20; private static final int SERVER_GAP_Y = -20;
static {
GeneralContext.addEnvChangedListener(new EnvChangedListener() {
@Override
public void envChanged() {
// envchange后需要重新读取webinf里的log4j配置, 重新添加appender
FineLoggerFactory.getLogger().addLogAppender(new LogHandler<DesignerLogAppender>() {
@Override
public DesignerLogAppender getHandler() {
return new DesignerLogAppender();
}
});
}
});
}
public static DesignerLogHandler getInstance() { public static DesignerLogHandler getInstance() {
return HOLDER.singleton; return HOLDER.singleton;
} }

4
designer-base/src/com/fr/design/style/background/BackgroundCardSwitchButtonPane.java

@ -2,7 +2,7 @@ package com.fr.design.style.background;
import com.fr.base.background.ColorBackground; import com.fr.base.background.ColorBackground;
import com.fr.base.background.GradientBackground; import com.fr.base.background.GradientBackground;
import com.fr.base.background.ImageBackground; import com.fr.base.background.ImageFileBackground;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.style.background.gradient.GradientBackgroundPane; import com.fr.design.style.background.gradient.GradientBackgroundPane;
import com.fr.design.style.background.impl.ColorBackgroundPane; import com.fr.design.style.background.impl.ColorBackgroundPane;
@ -30,7 +30,7 @@ public class BackgroundCardSwitchButtonPane extends BackgroundButtonPane {
private static void registerCardSwitchBtnBackground(Map<Class<? extends Background>, BackgroundUIWrapper> map) { private static void registerCardSwitchBtnBackground(Map<Class<? extends Background>, BackgroundUIWrapper> map) {
map.put(ColorBackground.class, BackgroundUIWrapper.create() map.put(ColorBackground.class, BackgroundUIWrapper.create()
.setType(ColorBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Color"))); .setType(ColorBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Color")));
map.put(ImageBackground.class, BackgroundUIWrapper.create() map.put(ImageFileBackground.class, BackgroundUIWrapper.create()
.setType(ImageBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Image"))); .setType(ImageBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Image")));
map.put(GradientBackground.class, BackgroundUIWrapper.create() map.put(GradientBackground.class, BackgroundUIWrapper.create()
.setType(GradientBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Gradient_Color"))); .setType(GradientBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Gradient_Color")));

8
designer-base/src/com/fr/design/style/background/BackgroundFactory.java

@ -3,7 +3,7 @@ package com.fr.design.style.background;
import com.fr.base.background.ColorBackground; import com.fr.base.background.ColorBackground;
import com.fr.base.background.GradientBackground; import com.fr.base.background.GradientBackground;
import com.fr.base.background.ImageBackground; import com.fr.base.background.ImageFileBackground;
import com.fr.base.background.PatternBackground; import com.fr.base.background.PatternBackground;
import com.fr.base.background.TextureBackground; import com.fr.base.background.TextureBackground;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
@ -104,19 +104,19 @@ public class BackgroundFactory {
} }
private static void registerImageBackground(Map<Class<? extends Background>, BackgroundUIWrapper> map) { private static void registerImageBackground(Map<Class<? extends Background>, BackgroundUIWrapper> map) {
map.put(ImageBackground.class, BackgroundUIWrapper.create() map.put(ImageFileBackground.class, BackgroundUIWrapper.create()
.setType(ImageBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Image"))); .setType(ImageBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Image")));
} }
private static void registerBrowserImageBackground(Map<Class<? extends Background>, BackgroundUIWrapper> map) { private static void registerBrowserImageBackground(Map<Class<? extends Background>, BackgroundUIWrapper> map) {
map.put(ImageBackground.class, BackgroundUIWrapper.create() map.put(ImageFileBackground.class, BackgroundUIWrapper.create()
.setType(ImageBackgroundPane4Browser.class).setTitle(Inter.getLocText("FR-Designer_Background_Image"))); .setType(ImageBackgroundPane4Browser.class).setTitle(Inter.getLocText("FR-Designer_Background_Image")));
} }
private static void registerButtonBackground(Map<Class<? extends Background>, BackgroundUIWrapper> map){ private static void registerButtonBackground(Map<Class<? extends Background>, BackgroundUIWrapper> map){
map.put(ColorBackground.class, BackgroundUIWrapper.create() map.put(ColorBackground.class, BackgroundUIWrapper.create()
.setType(ColorBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Color"))); .setType(ColorBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Color")));
map.put(ImageBackground.class, BackgroundUIWrapper.create() map.put(ImageFileBackground.class, BackgroundUIWrapper.create()
.setType(ImageButtonBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Image"))); .setType(ImageButtonBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Image")));
} }

759
designer-base/src/com/fr/env/RemoteEnv.java vendored

@ -1,759 +0,0 @@
//package com.fr.env;
//
//import com.fr.base.EnvException;
//import com.fr.base.operator.common.CommonOperator;
//import com.fr.base.operator.connect.ConnectOperator;
//import com.fr.base.operator.file.FileOperator;
//import com.fr.base.operator.org.OrganizationOperator;
//import com.fr.base.remote.RemoteDeziConstants;
//import com.fr.data.impl.storeproc.StoreProcedure;
//import com.fr.dav.AbstractEnv;
//import com.fr.dav.DavXMLUtils;
//import com.fr.design.DesignerEnvManager;
//import com.fr.design.mainframe.DesignerContext;
//import com.fr.file.CacheManager;
//import com.fr.general.CommonIOUtils;
//import com.fr.general.ComparatorUtils;
//import com.fr.general.IOUtils;
//import com.fr.general.Inter;
//import com.fr.general.http.HttpToolbox;
//import com.fr.io.utils.ResourceIOUtils;
//import com.fr.json.JSONArray;
//import com.fr.json.JSONObject;
//import com.fr.log.FineLoggerFactory;
//import com.fr.report.DesignAuthority;
//import com.fr.report.util.AuthorityXMLUtils;
//import com.fr.share.ShareConstants;
//import com.fr.stable.ArrayUtils;
//import com.fr.stable.EncodeConstants;
//import com.fr.stable.Filter;
//import com.fr.stable.ProductConstants;
//import com.fr.stable.StableUtils;
//import com.fr.stable.StringUtils;
//import com.fr.stable.SvgProvider;
//import com.fr.stable.project.ProjectConstants;
//import com.fr.third.guava.base.Strings;
//import com.fr.third.guava.collect.ImmutableMap;
//import com.fr.web.ResourceConstants;
//import com.fr.workspace.engine.server.rpc.RemoteCallServerConfig;
//import com.fr.workspace.engine.server.rpc.netty.MessageSendExecutor;
//import com.fr.workspace.engine.server.rpc.netty.RemoteCallClient;
//
//import javax.swing.*;
//import javax.xml.transform.Source;
//import javax.xml.transform.Transformer;
//import javax.xml.transform.TransformerConfigurationException;
//import javax.xml.transform.TransformerException;
//import javax.xml.transform.TransformerFactory;
//import javax.xml.transform.dom.DOMSource;
//import javax.xml.transform.stream.StreamResult;
//import java.awt.*;
//import java.io.ByteArrayInputStream;
//import java.io.ByteArrayOutputStream;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.OutputStream;
//import java.io.OutputStreamWriter;
//import java.io.UnsupportedEncodingException;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.Map;
//
//import static com.fr.third.guava.base.Preconditions.checkArgument;
//
///**
// * @author null
// */
//public class RemoteEnv extends AbstractEnv<RemoteEnvConfig> implements DesignAuthorityConfigurable {
//
// private static final String CERT_KEY = "javax.net.ssl.trustStore";
// private static final String PWD_KEY = "javax.net.ssl.trustStorePassword";
// private static final String HTTPS_PREFIX = "https:";
// private final static String[] FILE_TYPE = {"cptx", "cpt", "frm", "form", "cht", "chart"};
// private String buildFilePath;
// private RemoteEnvConfig config;
//
// public RemoteEnv(RemoteEnvConfig config) {
// this.config = config;
// }
//
// @Override
// public void connect() throws Exception {
// RemoteCallClient.getInstance().load(config.getHost(), config.getPort(), RemoteCallServerConfig.getInstance().getSerializeProtocol());
// }
//
// @Override
// public void connectOnce() throws Exception {
// RemoteCallClient.getInstance().loadOnce(config.getHost(), config.getPort(), RemoteCallServerConfig.getInstance().getSerializeProtocol(), 10 * 1000);
// ConnectOperator operator = RemoteCallClient.getInstance().execute(ConnectOperator.class);
// boolean result = false;
// try {
// result = operator.connect(config.getUsername(), config.getPassword());
// } catch (Exception ignore) {
//
// }
// if (!result) {
// throw new Exception("Cannot connect to the remote server!");
// }
// }
//
// @Override
// public boolean disconnect() {
// MessageSendExecutor.getInstance().stop();
// return true;
// }
//
// @Override
// public FileOperator getFileOperator() throws Exception {
//
// return MessageSendExecutor.getInstance().execute(FileOperator.class);
// }
//
// @Override
// public CommonOperator getCommonOperator() throws Exception {
// return MessageSendExecutor.getInstance().execute(CommonOperator.class);
// }
//
// @Override
// public OrganizationOperator getOrganizationOperator() throws Exception {
// return MessageSendExecutor.getInstance().execute(OrganizationOperator.class);
// }
//
// @Override
// public String getPath() {
// return config.getPath();
// }
//
// @Override
// public String getUser() {
// return config.getUsername();
// }
//
// public String getPassword() {
// return config.getPassword();
// }
//
// @Override
// public String getUserID() {
// return EnvContext.currentToken();
// }
//
// @Override
// public boolean isLocalEnv() {
// return false;
// }
//
// /**
// * execute method之后,取返回的 InputStream
// */
// private InputStream filterInputStream(InputStream in) throws Exception {
// if (in == null) {
// return null;
// }
// ByteArrayOutputStream out = new ByteArrayOutputStream();
// try {
// IOUtils.copyBinaryTo(in, out);
// // 看一下传过来的byte[]是不是DesignProcessor.INVALID,如果是的话,就抛Exception
// byte[] bytes = out.toByteArray();
// // carl:格式一致传中文
// String message = new String(bytes, EncodeConstants.ENCODING_UTF_8);
// if (ComparatorUtils.equals(message, RemoteDeziConstants.NO_SUCH_RESOURCE)) {
// return null;
// } else if (ComparatorUtils.equals(message, RemoteDeziConstants.INVALID_USER)) {
// throw new EnvException(RemoteDeziConstants.INVALID_USER);
// } else if (ComparatorUtils.equals(message, RemoteDeziConstants.FILE_LOCKED)) {
// JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Remote_File_is_Locked"));
// return null;
// }
// return new ByteArrayInputStream(bytes);
// } finally {
// synchronized (this) {
// in.close();
// out.close();
// }
// }
// }
//
//
// /**
// * nameValuePairs,这个参数要接着this.path,拼成一个URL,否则服务器端req.getParameter是无法得到的
// *
// * @param bytes 数据
// * @return 是否成功提交
// * @throws Exception 异常
// */
// private boolean postBytes2Server(byte[] bytes, HashMap<String, String> para) throws Exception {
// filterInputStream(RemoteEnvUtils.simulateRPCByHttpPost(bytes, para, false, this));
// return true;
// }
//
// /**
// * 把InputStream转成一段String
// *
// * @param in InputStream输入流
// * @return 转换后的字符串
// */
// private static String stream2String(InputStream in) {
// if (in == null) {
// return null;
// }
// String result = null;
// try {
// result = CommonIOUtils.inputStream2String(in, EncodeConstants.ENCODING_UTF_8);
// } catch (UnsupportedEncodingException e) {
// FineLoggerFactory.getLogger().error(e.getMessage(), e);
// }
// return result;
// }
//
// /**
// * 测试连接服务器
// *
// * @return 测试连接成功返回true
// * @throws Exception 异常
// */
// private boolean testServerConnection() throws Exception {
// return testConnection(true, true, DesignerContext.getDesignerFrame());
// }
//
// /**
// * 测试当前配置是否正确
// *
// * @return 链接是否成功
// * @throws Exception 异常
// */
// @Override
// public boolean testServerConnectionWithOutShowMessagePane() throws Exception {
// return testConnection(false, true, DesignerContext.getDesignerFrame());
// }
//
// /**
// * 主要用于在环境配置面板中的测试连接按钮时,不要注册进远程环境
// *
// * @param messageParentPane 弹框的依赖的面板
// * @return 是否测试连接成功
// * @throws Exception 异常
// */
// public boolean testConnectionWithOutRegisteServer(Component messageParentPane) throws Exception {
// return testConnection(true, false, messageParentPane);
// }
//
//
// private boolean testConnection(boolean needMessage, boolean isRegisteServer, Component parentComponent) throws Exception {
// checkArgument(parentComponent instanceof Component, "parentComponent should be a java.awt.component");
// Component component = parentComponent;
// String url = String.format("%s/connection", EnvConstants.toDecisionPath(getPath()));
// ImmutableMap<String, Object> params = ImmutableMap.of(
// "version", (Object) ProductConstants.DESIGNER_VERSION
// );
// ImmutableMap<String, String> headers = ImmutableMap.of(
// EnvConstants.USERNAME, getUser(),
// EnvConstants.PWD, getPassword());
// String res = HttpToolbox.post(url, params, headers);
// if (Strings.isNullOrEmpty(res)) {
// if (needMessage) {
// JOptionPane.showMessageDialog(component, Inter.getLocText("Datasource-Connection_failed"));
// }
// return false;
// } else if (ComparatorUtils.equals(res, "true")) {
// return true;
// } else {
// if (ComparatorUtils.equals(res, EnvConstants.AUTH_ERROR)) {
// JOptionPane.showMessageDialog(component,
// Inter.getLocText(new String[]{"Datasource-Connection_failed", "Registration-User_Name", "Password", "Error"}, new String[]{",", "", "", "!"})
// , Inter.getLocText("FR-Server-All_Error"), JOptionPane.ERROR_MESSAGE);
// return false;
// } else {
// if (ComparatorUtils.equals(res, EnvConstants.WAR_ERROR)) {
// if (needMessage) {
// JOptionPane.showMessageDialog(component, Inter.getLocText(new String[]{"Datasource-Connection_failed", "NS-war-remote"}, new String[]{",", "!"}));
// } else {
// FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Datasource-Connection_failed", "NS-war-remote"}, new String[]{",", "!"}));
// }
// return false;
// } else {
// if (needMessage) {
// JOptionPane.showMessageDialog(component, Inter.getLocText("Datasource-Connection_failed"));
// } else {
// FineLoggerFactory.getLogger().info(Inter.getLocText(new String[]{"Datasource-Connection_failed", "Version-does-not-support"}, new String[]{",", "!"}));
// }
// return false;
// }
// }
// }
// }
//
//
// private void refreshHttpSProperty() {
// if (getPath().startsWith(HTTPS_PREFIX) && System.getProperty(CERT_KEY) == null) {
// DesignerEnvManager envManager = DesignerEnvManager.getEnvManager();
// System.setProperty(CERT_KEY, envManager.getCertificatePath());
// System.setProperty(PWD_KEY, envManager.getCertificatePass());
// }
// }
//
//
// /**
// * 心跳访问,用来更新当前用户的访问时间
// *
// * @throws Exception e
// */
//
// public class Bytes2ServerOutputStream extends OutputStream {
// private ByteArrayOutputStream out = new ByteArrayOutputStream();
// private HashMap<String, String> nameValuePairs;
//
// public Bytes2ServerOutputStream(HashMap<String, String> nameValuePairs) {
// this.nameValuePairs = nameValuePairs;
// }
//
// public HashMap<String, String> getNameValuePairs() {
// return nameValuePairs;
// }
//
// public ByteArrayOutputStream getOut() {
// return out;
// }
//
// public OutputStream getZipOutputStream() throws Exception {
// return IOUtils.toZipOut(out);
// }
//
// /**
// * post ro Server 提交到服务器
// *
// * @return 是否提交成功
// */
// public boolean post2Server() {
// try {
// return postBytes2Server(out.toByteArray(), nameValuePairs);
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage(), e);
// return false;
// }
// }
//
// /**
// * 刷新数出流,并提交
// *
// * @throws IOException e
// */
// @Override
// public void flush() throws IOException {
// super.flush();
// post2Server();
// }
//
// /**
// * 将指定字节写入输入流数组
// *
// * @param b 写入的字节
// */
// @Override
// public void write(int b) {
// out.write(b);
//
// }
// }
//
// @Override
// public boolean updateAuthorities(DesignAuthority[] authorities) {
// refreshHttpSProperty();
// String res = null;
// try {
// InputStream inputStream = RemoteEnvUtils.updateAuthorities(authorities, this);
// inputStream = filterInputStream(inputStream);
// res = IOUtils.inputStream2String(inputStream, EncodeConstants.ENCODING_UTF_8);
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// }
// return StringUtils.isNotEmpty(res) && Boolean.valueOf(res);
// }
//
// @Override
// public DesignAuthority[] getAuthorities() {
// refreshHttpSProperty();
// DesignAuthority[] authorities = new DesignAuthority[0];
// try {
// InputStream inputStream = RemoteEnvUtils.getAuthorities(this);
// inputStream = filterInputStream(inputStream);
// authorities = AuthorityXMLUtils.readDesignAuthoritiesXML(inputStream);
// return authorities;
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// }
// return authorities;
// }
//
// /**
// * 远程设计器设计时,假如开了权限就不可预览了。这边放一个全局的map来开后门
// *
// * @param key 键值
// * @param value 值
// * @return 如果写入成功,返回true
// * @throws Exception e
// */
// public boolean writePrivilegeMap(String key, String value) throws Exception {
// refreshHttpSProperty();
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "write_privilege_map");
// para.put("current_user", getUser());
// para.put("current_password", getPassword());
// para.put("key", key);
// para.put("value", value);
//
// //jim :加上user,远程设计点击预览时传递用户角色信息
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
//
// if (input == null) {
// return false;
// }
//
// return Boolean.valueOf(IOUtils.inputStream2String(input, EncodeConstants.ENCODING_UTF_8));
// }
//
//
// /**
// * nameValuePairs,这个参数要接着this.path,拼成一个URL,否则服务器端req.getParameter是无法得到的
// *
// * @param bytes 数据
// * @param para 参数
// * @return 从服务器端得到InputStream
// * @throws Exception 异常
// */
// public InputStream postBytes2ServerB(byte[] bytes, HashMap<String, String> para) throws Exception {
// refreshHttpSProperty();
// return filterInputStream(RemoteEnvUtils.simulateRPCByHttpPost(bytes, para, false, this));
// }
//
//
// /**
// * 读取路径下的svg文件
// *
// * @param path 制定路径,是基于报表目录下resource文件夹路径
// * @return 读到的文件
// */
// @Override
// public String[] readPathSvgFiles(String path) {
// refreshHttpSProperty();
// String cataloguePath = StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getPath(), SvgProvider.SERVER, path);
//
// ArrayList<String> fileArray = new ArrayList<>();
// try {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "design_read_svgfile");
// para.put("resourcePath", path);
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
//
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
// JSONArray ja = new JSONArray(stream2String(input));
// for (int i = 0; i < ja.length(); i++) {
// JSONObject jsonObject = (JSONObject) ja.get(i);
// String svgFileName = (String) jsonObject.get("svgfileName");
// String svgFileContent = (String) jsonObject.get("svgfileContent");
//
// String file = StableUtils.pathJoin(cataloguePath, svgFileName);
// InputStream in = new ByteArrayInputStream(svgFileContent.getBytes(EncodeConstants.ENCODING_UTF_8));
// ResourceIOUtils.write(file, in);
// fileArray.add(file);
// }
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// }
//
// return fileArray.toArray(new String[0]);
// }
//
//
// /**
// * 写svg文件
// *
// * @param svgFile svg文件
// * @return 是否写入成功
// * @throws Exception 异常
// */
// @Override
// public boolean writeSvgFile(SvgProvider svgFile) throws Exception {
// testServerConnection();
//
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "svgrelate");
// para.put("cmd", "design_save_svg");
// para.put("filePath", svgFile.getFilePath());
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
//
// // 通过ByteArrayOutputStream将svg写成字节流
// Bytes2ServerOutputStream out = new Bytes2ServerOutputStream(para);
// OutputStreamWriter outWriter = new OutputStreamWriter(out, "UTF-8");
// StreamResult result = new StreamResult(outWriter);
//
// Source source = new DOMSource(svgFile.getSvgDocument());
// try {
// Transformer xformer = TransformerFactory.newInstance().newTransformer();
// try {
// xformer.transform(source, result);
// } catch (TransformerException ex) {
// FineLoggerFactory.getLogger().error(ex.getMessage());
// }
//
// } catch (TransformerConfigurationException ex) {
// FineLoggerFactory.getLogger().error(ex.getMessage());
// return false;
// }
//
// try {
// String res = stream2String(filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpPost(out.getOut().toByteArray(), out.nameValuePairs, false, this)
// ));
// if (StringUtils.isNotEmpty(res)) {
// JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Already_exist") + res);
// return false;
// }
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// return false;
// }
//
// return true;
// }
//
// /**
// * 写文件
// *
// * @param beanPath 文件名
// * @param prefix 当前Env下得工程分类,如reportlets,lib等
// * @return OutputStream 输出流
// */
// @Override
// public OutputStream writeBean(String beanPath, String prefix) {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fs_remote_design");
// para.put("cmd", "design_save_report");
// para.put(RemoteDeziConstants.PREFXI, prefix);
// para.put(RemoteDeziConstants.TEMPLATE_PATH, beanPath);
//
// return new Bytes2ServerOutputStream(para);
// }
//
// /**
// * 返回模板文件路径
// */
// @Override
// public String getWebReportPath() {
//
// return StableUtils.pathJoin(getPath(), getAppName());
// }
//
// public String[] getProcedureColumns(StoreProcedure storeProcedure, Map parameterMap) throws Exception {
// refreshHttpSProperty();
// String[] columns;
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "list_sp");
// try {
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
//
// if (input == null) {
// return ArrayUtils.EMPTY_STRING_ARRAY;
// }
//
// columns = DavXMLUtils.readXMLSPColumns(input);
// return columns;
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// }
//
// return new String[0];
// }
//
// public String[] getProcedureColumns(String name) throws Exception {
// refreshHttpSProperty();
// String[] columns;
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "list_sp_columns_name");
// para.put("name", name);
// try {
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
// if (input == null) {
// return ArrayUtils.EMPTY_STRING_ARRAY;
// }
// columns = DavXMLUtils.readXMLSPColumns(input);
// return columns;
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// }
// return new String[0];
//
// }
//
// @Override
// public String[] getSupportedTypes() {
// return FILE_TYPE;
// }
//
// /**
// * 获取当前env的build文件路径
// */
// @Override
// public String getBuildFilePath() {
// return StringUtils.isEmpty(buildFilePath) ? ResourceConstants.BUILD_PATH : buildFilePath;
// }
//
// /**
// * 设置当前env的build文件路径
// */
// @Override
// public void setBuildFilePath(String buildFilePath) {
// this.buildFilePath = buildFilePath;
// }
//
// @Override
// public String[] loadREUFile() {
// refreshHttpSProperty();
// ResourceIOUtils.delete(StableUtils.pathJoin(
// CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath(),
// ShareConstants.DIR_SHARE_CACHE));
//
// String zipFilePath = null;
// try {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "design_read_reufile");
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
//
// //拿到服务端传过来的整个共享文件夹的压缩文件的文件流
// InputStream input = RemoteEnvUtils.simulateRPCByHttpGet(para, false, this);
//
// zipFilePath = StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath(), "share.zip");
// String cacheDir = StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath(), ShareConstants.DIR_SHARE_CACHE);
//
// ResourceIOUtils.write(zipFilePath, input);
// ResourceIOUtils.unzip(zipFilePath, cacheDir, EncodeConstants.ENCODING_GBK);
//
//
// return ResourceIOUtils.listWithFullPath(cacheDir, new Filter<String>() {
// @Override
// public boolean accept(String s) {
// return s.endsWith(ProjectConstants.REU);
// }
// });
//
// } catch (Exception e) {
// FineLoggerFactory.getLogger().error(e.getMessage());
// } finally {
//
// if (zipFilePath != null) {
// ResourceIOUtils.delete(zipFilePath);
// }
// }
//
// return new String[0];
// }
//
// @Override
// public boolean installREUFile(File reuFile) {
// refreshHttpSProperty();
// if (reuFile == null) {
// return false;
// }
// File tempFile = new File(CacheManager.getProviderInstance().getCacheDirectory(), "temp_remote");
// IOUtils.unzip(reuFile, tempFile.getAbsolutePath());
// String shareXMLName = StableUtils.pathJoin(tempFile.getAbsolutePath(), ShareConstants.NAME_XML_MODULE);
// String helpXMLName = StableUtils.pathJoin(tempFile.getAbsolutePath(), ShareConstants.NAME_XML_HELP);
// try {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "design_install_reufile");
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
// para.put("reuFileName", reuFile.getName());
//
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpPost(
// IOUtils.inputStream2Bytes(
// new FileInputStream(new File(shareXMLName))
// )
// , para,
// false,
// this)
// );
// para.put("isComplete", "true");
// InputStream input1 = filterInputStream(RemoteEnvUtils.simulateRPCByHttpPost(
// IOUtils.inputStream2Bytes(
// new FileInputStream(new File(helpXMLName))
// )
// , para,
// false,
// this));
// return ComparatorUtils.equals(stream2String(input), "true") && ComparatorUtils.equals(stream2String(input1), "true");
// } catch (Exception e) {
// return false;
// }
// }
//
// @Override
// public boolean removeREUFilesByName(String fileName) {
// refreshHttpSProperty();
// if (StringUtils.isEmpty(fileName)) {
// return true;
// }
// try {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "design_remove_reufile");
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
// para.put("reuFileName", fileName);
//
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
// return ComparatorUtils.equals(stream2String(input), "true");
// } catch (Exception e) {
// return false;
// }
// }
//
// @Override
// public String getSharePath() {
// refreshHttpSProperty();
// try {
// HashMap<String, String> para = new HashMap<>();
// para.put("op", "fr_remote_design");
// para.put("cmd", "design_get_share_path");
// para.put("current_uid", this.getUserID());
// para.put("currentUsername", this.getUser());
//
// InputStream input = filterInputStream(
// RemoteEnvUtils.simulateRPCByHttpGet(para, false, this)
// );
// return stream2String(input);
// } catch (Exception e) {
// return StringUtils.EMPTY;
// }
// }
//
//
// @Override
// public boolean hasPluginServiceStarted(String key) {
//
// return true;
// }
//
//}

2
designer-realize/pom.xml

@ -11,7 +11,7 @@
<groupId>com.fr.report</groupId> <groupId>com.fr.report</groupId>
<artifactId>designer-realize</artifactId> <artifactId>designer-realize</artifactId>
<version>10.0-RELEASE-SNAPSHOT</version> <version>10.0-RELEASE-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.fr.report</groupId> <groupId>com.fr.report</groupId>
<artifactId>designer-form</artifactId> <artifactId>designer-form</artifactId>

1
designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java

@ -120,7 +120,6 @@ public class ErrorInfoLogAppender extends AppenderSkeleton {
@Override @Override
public void readXML(XMLableReader reader) { public void readXML(XMLableReader reader) {
super.readXML(reader);
readDesign(reader); readDesign(reader);
} }

4
designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java

@ -39,9 +39,11 @@ public class ErrorInfoUploader {
@Override @Override
public void envChanged() { public void envChanged() {
FineLoggerFactory.getLogger().addLogAppender(new LogHandler<ErrorInfoLogAppender>() { FineLoggerFactory.getLogger().addLogAppender(new LogHandler<ErrorInfoLogAppender>() {
private ErrorInfoLogAppender errorInfoLogAppender = new ErrorInfoLogAppender();
@Override @Override
public ErrorInfoLogAppender getHandler() { public ErrorInfoLogAppender getHandler() {
return new ErrorInfoLogAppender(); return errorInfoLogAppender;
} }
}); });
} }

22
designer-realize/src/com/fr/design/webattr/EditReportServerParameterPane.java

@ -15,6 +15,9 @@ import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.design.webattr.printsettings.PrintSettingPane; import com.fr.design.webattr.printsettings.PrintSettingPane;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.report.core.ReportUtils; import com.fr.report.core.ReportUtils;
import com.fr.report.web.WebPage;
import com.fr.report.web.WebView;
import com.fr.report.web.WebWrite;
import com.fr.web.attr.ReportWebAttr; import com.fr.web.attr.ReportWebAttr;
import javax.swing.*; import javax.swing.*;
@ -74,13 +77,20 @@ public class EditReportServerParameterPane extends LoadingBasicPane {
// File.separator + reportServerPreferenceConfig.fileName()); // File.separator + reportServerPreferenceConfig.fileName());
webAttr = ((ReportWebAttr) ConfigManager.getProviderInstance().getGlobalAttribute(ReportWebAttr.class)); webAttr = ((ReportWebAttr) ConfigManager.getProviderInstance().getGlobalAttribute(ReportWebAttr.class));
if (webAttr != null) { WebPage webPage = webAttr.getWebPage();
pagePane.populateBean(webAttr.getWebPage()); WebView webView = webAttr.getWebView();
viewPane.populateBean(webAttr.getWebView()); WebWrite webWrite = webAttr.getWebWrite();
writePane.populateBean(webAttr.getWebWrite()); if(webPage != null){
cssPane.populate(webAttr); pagePane.populateBean(webPage);
jsPane.populate(webAttr);
} }
if(webView != null){
viewPane.populateBean(webView);
}
if(webWrite != null){
writePane.populateBean(webWrite);
}
cssPane.populate(webAttr);
jsPane.populate(webAttr);
printSettings = ReportUtils.getPrintSettingsFromServerConfig(); printSettings = ReportUtils.getPrintSettingsFromServerConfig();
printSettingPane.populate(printSettings); printSettingPane.populate(printSettings);

3
designer-realize/src/com/fr/start/Designer.java

@ -44,6 +44,7 @@ import com.fr.general.ComparatorUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.module.Module; import com.fr.module.Module;
import com.fr.module.ModuleContext; import com.fr.module.ModuleContext;
import com.fr.record.analyzer.FineAnalyzer;
import com.fr.stable.BuildContext; import com.fr.stable.BuildContext;
import com.fr.stable.OperatingSystem; import com.fr.stable.OperatingSystem;
import com.fr.stable.ProductConstants; import com.fr.stable.ProductConstants;
@ -97,6 +98,8 @@ public class Designer extends BaseDesigner {
*/ */
public static void main(String[] args) { public static void main(String[] args) {
FineAnalyzer.init();
BuildContext.setBuildFilePath("/com/fr/stable/build.properties"); BuildContext.setBuildFilePath("/com/fr/stable/build.properties");

47
designer-realize/src/com/fr/start/module/DesignerActivator.java

@ -5,7 +5,6 @@ import com.fr.base.Formula;
import com.fr.base.MultiFieldParameter; import com.fr.base.MultiFieldParameter;
import com.fr.base.process.ProcessOperator; import com.fr.base.process.ProcessOperator;
import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartattr.ChartCollection;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.core.ActionFactory;
import com.fr.design.actions.insert.cell.BiasCellAction; import com.fr.design.actions.insert.cell.BiasCellAction;
@ -21,8 +20,6 @@ import com.fr.design.actions.insert.flot.FormulaFloatAction;
import com.fr.design.actions.insert.flot.ImageFloatAction; import com.fr.design.actions.insert.flot.ImageFloatAction;
import com.fr.design.actions.insert.flot.TextBoxFloatAction; import com.fr.design.actions.insert.flot.TextBoxFloatAction;
import com.fr.design.bridge.DesignToolbarProvider; import com.fr.design.bridge.DesignToolbarProvider;
import com.fr.design.chart.ChartDialog;
import com.fr.design.chart.gui.ChartComponent;
import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.form.parameter.FormParaDesigner; import com.fr.design.form.parameter.FormParaDesigner;
import com.fr.design.fun.ElementUIProvider; import com.fr.design.fun.ElementUIProvider;
@ -36,7 +33,6 @@ import com.fr.design.javascript.ParameterJavaScriptPane;
import com.fr.design.javascript.ProcessTransitionAdapter; import com.fr.design.javascript.ProcessTransitionAdapter;
import com.fr.design.mainframe.BaseJForm; import com.fr.design.mainframe.BaseJForm;
import com.fr.design.mainframe.CellElementPropertyPane; import com.fr.design.mainframe.CellElementPropertyPane;
import com.fr.design.mainframe.ChartPropertyPane;
import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.design.mainframe.DesignerFrameFileDealerPane;
import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.EastRegionContainerPane;
import com.fr.design.mainframe.ElementCaseThumbnail; import com.fr.design.mainframe.ElementCaseThumbnail;
@ -51,17 +47,15 @@ import com.fr.design.mainframe.form.FormECCompositeProvider;
import com.fr.design.mainframe.form.FormECDesignerProvider; import com.fr.design.mainframe.form.FormECDesignerProvider;
import com.fr.design.mainframe.form.FormElementCaseDesigner; import com.fr.design.mainframe.form.FormElementCaseDesigner;
import com.fr.design.mainframe.form.FormReportComponentComposite; import com.fr.design.mainframe.form.FormReportComponentComposite;
import com.fr.design.mainframe.loghandler.DesignerLogAppender;
import com.fr.design.mainframe.loghandler.DesignerLogImpl; import com.fr.design.mainframe.loghandler.DesignerLogImpl;
import com.fr.design.mainframe.loghandler.LogMessageBar; import com.fr.design.mainframe.loghandler.LogMessageBar;
import com.fr.design.module.ChartHyperlinkGroup;
import com.fr.design.module.ChartPreStyleAction;
import com.fr.design.module.DesignModuleFactory; import com.fr.design.module.DesignModuleFactory;
import com.fr.design.parameter.FormParameterReader; import com.fr.design.parameter.FormParameterReader;
import com.fr.design.parameter.ParameterPropertyPane; import com.fr.design.parameter.ParameterPropertyPane;
import com.fr.design.parameter.WorkBookParameterReader; import com.fr.design.parameter.WorkBookParameterReader;
import com.fr.design.widget.ui.btn.FormSubmitButtonDetailPane; import com.fr.design.widget.ui.btn.FormSubmitButtonDetailPane;
import com.fr.form.stable.ElementCaseThumbnailProcessor; import com.fr.form.stable.ElementCaseThumbnailProcessor;
import com.fr.form.ui.ChartEditor;
import com.fr.form.ui.WidgetInfoConfig; import com.fr.form.ui.WidgetInfoConfig;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.general.ModuleContext; import com.fr.general.ModuleContext;
@ -73,9 +67,9 @@ import com.fr.js.ReportletHyperlink;
import com.fr.js.WebHyperlink; import com.fr.js.WebHyperlink;
import com.fr.locale.InterMutableKey; import com.fr.locale.InterMutableKey;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.log.LogHandler;
import com.fr.module.Activator; import com.fr.module.Activator;
import com.fr.module.extension.Prepare; import com.fr.module.extension.Prepare;
import com.fr.plugin.chart.vanchart.imgevent.design.DesignImageEvent;
import com.fr.quickeditor.cellquick.CellBiasTextPainterEditor; import com.fr.quickeditor.cellquick.CellBiasTextPainterEditor;
import com.fr.quickeditor.cellquick.CellDSColumnEditor; import com.fr.quickeditor.cellquick.CellDSColumnEditor;
import com.fr.quickeditor.cellquick.CellFormulaQuickEditor; import com.fr.quickeditor.cellquick.CellFormulaQuickEditor;
@ -97,18 +91,15 @@ import com.fr.stable.ArrayUtils;
import com.fr.stable.ParameterProvider; import com.fr.stable.ParameterProvider;
import com.fr.stable.bridge.StableFactory; import com.fr.stable.bridge.StableFactory;
import com.fr.stable.fun.LogProvider; import com.fr.stable.fun.LogProvider;
import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider;
import com.fr.stable.plugin.ExtraDesignClassManagerProvider; import com.fr.stable.plugin.ExtraDesignClassManagerProvider;
import com.fr.stable.script.CalculatorProviderContext; import com.fr.stable.script.CalculatorProviderContext;
import com.fr.stable.script.ValueConverter; import com.fr.stable.script.ValueConverter;
import com.fr.stable.xml.ObjectTokenizer; import com.fr.stable.xml.ObjectTokenizer;
import com.fr.stable.xml.ObjectXMLWriterFinder; import com.fr.stable.xml.ObjectXMLWriterFinder;
import com.fr.start.BBSGuestPaneProvider; import com.fr.start.BBSGuestPaneProvider;
import com.fr.van.chart.DownloadOnlineSourcesHelper;
import com.fr.van.chart.map.server.ChartMapEditorAction;
import com.fr.xml.ReportXMLUtils; import com.fr.xml.ReportXMLUtils;
import java.awt.*; import java.awt.Image;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -124,15 +115,36 @@ import static com.fr.stable.module.Module.ENGINE_MODULE;
* 之后慢慢将DesignerModule拆成Activator * 之后慢慢将DesignerModule拆成Activator
*/ */
public class DesignerActivator extends Activator implements Prepare { public class DesignerActivator extends Activator implements Prepare {
private LogHandler<DesignerLogAppender> logHandler = null;
@Override @Override
public void start() { public void start() {
designerModuleStart(); designerModuleStart();
preLoadPane(); preLoadPane();
loadLogAppender();
}
private void loadLogAppender() {
logHandler = new LogHandler<DesignerLogAppender>() {
final DesignerLogAppender logAppender = new DesignerLogAppender();
@Override
public DesignerLogAppender getHandler() {
return logAppender;
}
};
FineLoggerFactory.getLogger().addLogAppender(logHandler);
}
private void unloadLogAppender() {
if (logHandler != null) {
FineLoggerFactory.getLogger().removeLogAppender(logHandler);
}
} }
private static void designerModuleStart() { private static void designerModuleStart() {
StableFactory.registerMarkedClass(ExtraDesignClassManagerProvider.XML_TAG, ExtraDesignClassManager.class); StableFactory.registerMarkedClass(ExtraDesignClassManagerProvider.XML_TAG, ExtraDesignClassManager.class);
ActionFactory.registerCellInsertActionClass(actionsForInsertCellElement()); ActionFactory.registerCellInsertActionClass(actionsForInsertCellElement());
ActionFactory.registerFloatInsertActionClass(actionsForInsertFloatElement()); ActionFactory.registerFloatInsertActionClass(actionsForInsertFloatElement());
@ -153,6 +165,7 @@ public class DesignerActivator extends Activator implements Prepare {
ExtraDesignClassManager.getInstance().getFeedback().didFeedback(); ExtraDesignClassManager.getInstance().getFeedback().didFeedback();
StableFactory.registerMarkedObject(LogProvider.MARK_STRING, DesignerLogImpl.getInstance()); StableFactory.registerMarkedObject(LogProvider.MARK_STRING, DesignerLogImpl.getInstance());
} }
private static void preLoadPane() { private static void preLoadPane() {
ExecutorService service = Executors.newCachedThreadPool(); ExecutorService service = Executors.newCachedThreadPool();
service.submit(new Runnable() { service.submit(new Runnable() {
@ -304,8 +317,7 @@ public class DesignerActivator extends Activator implements Prepare {
} }
}); });
} }
private static void designerRegister() { private static void designerRegister() {
registerCellEditor(); registerCellEditor();
registerFloatEditor(); registerFloatEditor();
@ -387,6 +399,7 @@ public class DesignerActivator extends Activator implements Prepare {
@Override @Override
public void stop() { public void stop() {
unloadLogAppender();
} }
@Override @Override
@ -394,4 +407,4 @@ public class DesignerActivator extends Activator implements Prepare {
addMutable(InterMutableKey.Path, "com/fr/design/i18n/main", "com/fr/design/i18n/chart"); addMutable(InterMutableKey.Path, "com/fr/design/i18n/main", "com/fr/design/i18n/chart");
} }
} }

4
designer-realize/src/com/fr/start/module/DesignerStartup.java

@ -4,6 +4,8 @@ import com.fr.design.mainframe.DesignerContext;
import com.fr.event.Event; import com.fr.event.Event;
import com.fr.event.Listener; import com.fr.event.Listener;
import com.fr.module.Activator; import com.fr.module.Activator;
import com.fr.record.analyzer.EnableMetrics;
import com.fr.record.analyzer.Metrics;
import com.fr.start.Designer; import com.fr.start.Designer;
import com.fr.start.EnvSwitcher; import com.fr.start.EnvSwitcher;
import com.fr.start.SplashContext; import com.fr.start.SplashContext;
@ -17,9 +19,11 @@ import java.util.concurrent.Executors;
/** /**
* Created by juhaoyu on 2018/1/8. * Created by juhaoyu on 2018/1/8.
*/ */
@EnableMetrics
public class DesignerStartup extends Activator { public class DesignerStartup extends Activator {
@Override @Override
@Metrics
public void start() { public void start() {
startSub(PreStartActivator.class); startSub(PreStartActivator.class);
//启动基础部分 //启动基础部分

Loading…
Cancel
Save