diff --git a/designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java b/designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java index 0db58dc361..c08f49d0c9 100644 --- a/designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java @@ -114,7 +114,6 @@ public class SwitchExistEnv extends MenuDef { @Override public void fail() { - TemplatePane.getInstance().editItems(); JOptionPane.showMessageDialog( DesignerContext.getDesignerFrame(), Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"})); diff --git a/designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java b/designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java index b666b0f63f..b7b550739e 100644 --- a/designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java +++ b/designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java @@ -8,13 +8,13 @@ import com.fr.workspace.connect.WorkspaceClient; * 根据配置生成运行环境 */ public class DesignerWorkspaceGenerator { - + public static Workspace generate(DesignerWorkspaceInfo config) { - + if (config == null || config.getType() == null) { return null; } - + Workspace workspace = null; switch (config.getType()) { case Local: { @@ -23,7 +23,9 @@ public class DesignerWorkspaceGenerator { } case Remote: { WorkspaceClient client = WorkContext.getConnector().connect(config.getConnection()); - workspace = new RemoteWorkspace(client, config.getConnection()); + if (client != null) { + workspace = new RemoteWorkspace(client, config.getConnection()); + } break; } } diff --git a/designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java b/designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java index ef53252154..fb7ed6f968 100644 --- a/designer-base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java +++ b/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 SERVER_GAP_Y = -20; - static { - GeneralContext.addEnvChangedListener(new EnvChangedListener() { - @Override - public void envChanged() { - // envchange后需要重新读取webinf里的log4j配置, 重新添加appender - FineLoggerFactory.getLogger().addLogAppender(new LogHandler() { - @Override - public DesignerLogAppender getHandler() { - return new DesignerLogAppender(); - } - }); - } - }); - } - public static DesignerLogHandler getInstance() { return HOLDER.singleton; } diff --git a/designer-base/src/com/fr/design/style/background/BackgroundCardSwitchButtonPane.java b/designer-base/src/com/fr/design/style/background/BackgroundCardSwitchButtonPane.java index b5a2aeffad..21128fa77e 100644 --- a/designer-base/src/com/fr/design/style/background/BackgroundCardSwitchButtonPane.java +++ b/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.GradientBackground; -import com.fr.base.background.ImageBackground; +import com.fr.base.background.ImageFileBackground; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.style.background.gradient.GradientBackgroundPane; import com.fr.design.style.background.impl.ColorBackgroundPane; @@ -30,7 +30,7 @@ public class BackgroundCardSwitchButtonPane extends BackgroundButtonPane { private static void registerCardSwitchBtnBackground(Map, BackgroundUIWrapper> map) { map.put(ColorBackground.class, BackgroundUIWrapper.create() .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"))); map.put(GradientBackground.class, BackgroundUIWrapper.create() .setType(GradientBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Gradient_Color"))); diff --git a/designer-base/src/com/fr/design/style/background/BackgroundFactory.java b/designer-base/src/com/fr/design/style/background/BackgroundFactory.java index 8489f7d889..2348f99aca 100644 --- a/designer-base/src/com/fr/design/style/background/BackgroundFactory.java +++ b/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.GradientBackground; -import com.fr.base.background.ImageBackground; +import com.fr.base.background.ImageFileBackground; import com.fr.base.background.PatternBackground; import com.fr.base.background.TextureBackground; import com.fr.design.ExtraDesignClassManager; @@ -104,19 +104,19 @@ public class BackgroundFactory { } private static void registerImageBackground(Map, BackgroundUIWrapper> map) { - map.put(ImageBackground.class, BackgroundUIWrapper.create() + map.put(ImageFileBackground.class, BackgroundUIWrapper.create() .setType(ImageBackgroundPane.class).setTitle(Inter.getLocText("FR-Designer_Background_Image"))); } private static void registerBrowserImageBackground(Map, BackgroundUIWrapper> map) { - map.put(ImageBackground.class, BackgroundUIWrapper.create() + map.put(ImageFileBackground.class, BackgroundUIWrapper.create() .setType(ImageBackgroundPane4Browser.class).setTitle(Inter.getLocText("FR-Designer_Background_Image"))); } private static void registerButtonBackground(Map, BackgroundUIWrapper> map){ map.put(ColorBackground.class, BackgroundUIWrapper.create() .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"))); } diff --git a/designer-base/src/com/fr/env/RemoteEnv.java b/designer-base/src/com/fr/env/RemoteEnv.java deleted file mode 100644 index 1d8aa0de8d..0000000000 --- a/designer-base/src/com/fr/env/RemoteEnv.java +++ /dev/null @@ -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 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 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 params = ImmutableMap.of( -// "version", (Object) ProductConstants.DESIGNER_VERSION -// ); -// ImmutableMap 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 nameValuePairs; -// -// public Bytes2ServerOutputStream(HashMap nameValuePairs) { -// this.nameValuePairs = nameValuePairs; -// } -// -// public HashMap 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 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 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 fileArray = new ArrayList<>(); -// try { -// HashMap 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 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 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 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 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 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() { -// @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 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 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 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; -// } -// -//} \ No newline at end of file diff --git a/designer-realize/pom.xml b/designer-realize/pom.xml index 3731d163e2..1e9d72c76e 100644 --- a/designer-realize/pom.xml +++ b/designer-realize/pom.xml @@ -11,7 +11,7 @@ com.fr.report designer-realize 10.0-RELEASE-SNAPSHOT - + com.fr.report designer-form diff --git a/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java b/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java index 51bba7487c..74b36372b5 100644 --- a/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java +++ b/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java @@ -120,7 +120,6 @@ public class ErrorInfoLogAppender extends AppenderSkeleton { @Override public void readXML(XMLableReader reader) { - super.readXML(reader); readDesign(reader); } diff --git a/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java b/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java index 4228f121e8..4d59644262 100644 --- a/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java +++ b/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java @@ -39,9 +39,11 @@ public class ErrorInfoUploader { @Override public void envChanged() { FineLoggerFactory.getLogger().addLogAppender(new LogHandler() { + private ErrorInfoLogAppender errorInfoLogAppender = new ErrorInfoLogAppender(); + @Override public ErrorInfoLogAppender getHandler() { - return new ErrorInfoLogAppender(); + return errorInfoLogAppender; } }); } diff --git a/designer-realize/src/com/fr/design/webattr/EditReportServerParameterPane.java b/designer-realize/src/com/fr/design/webattr/EditReportServerParameterPane.java index 457e600983..d8c7776551 100644 --- a/designer-realize/src/com/fr/design/webattr/EditReportServerParameterPane.java +++ b/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.general.Inter; 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 javax.swing.*; @@ -74,13 +77,20 @@ public class EditReportServerParameterPane extends LoadingBasicPane { // File.separator + reportServerPreferenceConfig.fileName()); webAttr = ((ReportWebAttr) ConfigManager.getProviderInstance().getGlobalAttribute(ReportWebAttr.class)); - if (webAttr != null) { - pagePane.populateBean(webAttr.getWebPage()); - viewPane.populateBean(webAttr.getWebView()); - writePane.populateBean(webAttr.getWebWrite()); - cssPane.populate(webAttr); - jsPane.populate(webAttr); + WebPage webPage = webAttr.getWebPage(); + WebView webView = webAttr.getWebView(); + WebWrite webWrite = webAttr.getWebWrite(); + if(webPage != null){ + pagePane.populateBean(webPage); } + if(webView != null){ + viewPane.populateBean(webView); + } + if(webWrite != null){ + writePane.populateBean(webWrite); + } + cssPane.populate(webAttr); + jsPane.populate(webAttr); printSettings = ReportUtils.getPrintSettingsFromServerConfig(); printSettingPane.populate(printSettings); diff --git a/designer-realize/src/com/fr/start/Designer.java b/designer-realize/src/com/fr/start/Designer.java index fad29deb3f..178739fe39 100644 --- a/designer-realize/src/com/fr/start/Designer.java +++ b/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.module.Module; import com.fr.module.ModuleContext; +import com.fr.record.analyzer.FineAnalyzer; import com.fr.stable.BuildContext; import com.fr.stable.OperatingSystem; import com.fr.stable.ProductConstants; @@ -97,6 +98,8 @@ public class Designer extends BaseDesigner { */ public static void main(String[] args) { + FineAnalyzer.init(); + BuildContext.setBuildFilePath("/com/fr/stable/build.properties"); diff --git a/designer-realize/src/com/fr/start/module/DesignerActivator.java b/designer-realize/src/com/fr/start/module/DesignerActivator.java index 7fb07e640b..9983b9f9a2 100644 --- a/designer-realize/src/com/fr/start/module/DesignerActivator.java +++ b/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.process.ProcessOperator; import com.fr.chart.chartattr.ChartCollection; -import com.fr.design.ChartTypeInterfaceManager; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.core.ActionFactory; 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.TextBoxFloatAction; 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.form.parameter.FormParaDesigner; 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.mainframe.BaseJForm; import com.fr.design.mainframe.CellElementPropertyPane; -import com.fr.design.mainframe.ChartPropertyPane; import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.design.mainframe.EastRegionContainerPane; 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.FormElementCaseDesigner; 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.LogMessageBar; -import com.fr.design.module.ChartHyperlinkGroup; -import com.fr.design.module.ChartPreStyleAction; import com.fr.design.module.DesignModuleFactory; import com.fr.design.parameter.FormParameterReader; import com.fr.design.parameter.ParameterPropertyPane; import com.fr.design.parameter.WorkBookParameterReader; import com.fr.design.widget.ui.btn.FormSubmitButtonDetailPane; import com.fr.form.stable.ElementCaseThumbnailProcessor; -import com.fr.form.ui.ChartEditor; import com.fr.form.ui.WidgetInfoConfig; import com.fr.general.Inter; import com.fr.general.ModuleContext; @@ -73,9 +67,9 @@ import com.fr.js.ReportletHyperlink; import com.fr.js.WebHyperlink; import com.fr.locale.InterMutableKey; import com.fr.log.FineLoggerFactory; +import com.fr.log.LogHandler; import com.fr.module.Activator; 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.CellDSColumnEditor; import com.fr.quickeditor.cellquick.CellFormulaQuickEditor; @@ -97,18 +91,15 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.ParameterProvider; import com.fr.stable.bridge.StableFactory; import com.fr.stable.fun.LogProvider; -import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider; import com.fr.stable.plugin.ExtraDesignClassManagerProvider; import com.fr.stable.script.CalculatorProviderContext; import com.fr.stable.script.ValueConverter; import com.fr.stable.xml.ObjectTokenizer; import com.fr.stable.xml.ObjectXMLWriterFinder; 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 java.awt.*; +import java.awt.Image; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; @@ -124,15 +115,36 @@ import static com.fr.stable.module.Module.ENGINE_MODULE; * 之后慢慢将DesignerModule拆成Activator */ public class DesignerActivator extends Activator implements Prepare { - + + private LogHandler logHandler = null; + @Override public void start() { designerModuleStart(); preLoadPane(); + loadLogAppender(); + } + + private void loadLogAppender() { + logHandler = new LogHandler() { + 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() { - + StableFactory.registerMarkedClass(ExtraDesignClassManagerProvider.XML_TAG, ExtraDesignClassManager.class); ActionFactory.registerCellInsertActionClass(actionsForInsertCellElement()); ActionFactory.registerFloatInsertActionClass(actionsForInsertFloatElement()); @@ -153,6 +165,7 @@ public class DesignerActivator extends Activator implements Prepare { ExtraDesignClassManager.getInstance().getFeedback().didFeedback(); StableFactory.registerMarkedObject(LogProvider.MARK_STRING, DesignerLogImpl.getInstance()); } + private static void preLoadPane() { ExecutorService service = Executors.newCachedThreadPool(); service.submit(new Runnable() { @@ -304,8 +317,7 @@ public class DesignerActivator extends Activator implements Prepare { } }); } - - + private static void designerRegister() { registerCellEditor(); registerFloatEditor(); @@ -387,6 +399,7 @@ public class DesignerActivator extends Activator implements Prepare { @Override public void stop() { + unloadLogAppender(); } @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"); } -} +} \ No newline at end of file diff --git a/designer-realize/src/com/fr/start/module/DesignerStartup.java b/designer-realize/src/com/fr/start/module/DesignerStartup.java index 1936451f26..bd43d4c831 100644 --- a/designer-realize/src/com/fr/start/module/DesignerStartup.java +++ b/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.Listener; 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.EnvSwitcher; import com.fr.start.SplashContext; @@ -17,9 +19,11 @@ import java.util.concurrent.Executors; /** * Created by juhaoyu on 2018/1/8. */ +@EnableMetrics public class DesignerStartup extends Activator { @Override + @Metrics public void start() { startSub(PreStartActivator.class); //启动基础部分