diff --git a/designer-base/src/com/fr/design/DesignerEnvManager.java b/designer-base/src/com/fr/design/DesignerEnvManager.java index 54564ced1..564ba9a49 100644 --- a/designer-base/src/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/com/fr/design/DesignerEnvManager.java @@ -6,11 +6,10 @@ package com.fr.design; import com.fr.base.BaseXMLUtils; import com.fr.base.FRContext; import com.fr.base.Utils; -import com.fr.base.env.EnvConfig; -import com.fr.base.env.LocalEnvConfig; import com.fr.design.actions.help.alphafine.AlphaFineConfigManager; import com.fr.design.constants.UIConstants; import com.fr.design.env.DesignerWorkspaceGenerator; +import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.file.FILEFactory; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogFormatter; @@ -73,7 +72,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { private boolean showPaintToolBar = true; private int maxNumberOrPreviewRow = 200; // name和Env的键值对 - private Map nameEnvMap = new ListMap<>(); + private Map nameEnvMap = new ListMap<>(); // marks: 当前报表服务器名字 private String curEnvName = null; private boolean showProjectPane = true; @@ -194,7 +193,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (installHome != null) { String name = Inter.getLocText("FR-Engine_DEFAULT"); String envPath = StableUtils.pathJoin(new String[]{installHome, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME}); - designerEnvManager.putEnv(name, new LocalEnvConfig(envPath, name)); + designerEnvManager.putEnv(name, DesignerWorkspaceInfo.createLocal(name, envPath)); designerEnvManager.setCurEnvName(name); } } @@ -327,7 +326,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { FRContext.getLogger().error(e.getMessage(), e); } // 清空前一个版本中的工作目录和最近打开 - nameEnvMap = new ListMap(); + nameEnvMap = new ListMap(); recentOpenedFilePathList = new ArrayList(); curEnvName = null; designerEnvManager.saveXMLFile(); @@ -474,28 +473,29 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * @return 是默认则返回true */ public boolean isCurrentEnvDefault() { - EnvConfig currentEnv = this.getEnv(curEnvName); + + DesignerWorkspaceInfo current = this.getWorkspaceInfo(curEnvName); String defaultEnvPath = StableUtils.pathJoin(new String[]{StableUtils.getInstallHome(), ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME}); - return ComparatorUtils.equals(new File(defaultEnvPath).getPath(), currentEnv.getPath()); + return ComparatorUtils.equals(new File(defaultEnvPath).getPath(), current.getPath()); } /** * 返回默认环境 */ - public EnvConfig getDefaultConfig() { + public DesignerWorkspaceInfo getDefaultConfig() { String installHome = StableUtils.getInstallHome(); String defaultenvPath = StableUtils.pathJoin(installHome, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME); defaultenvPath = new File(defaultenvPath).getPath(); - Iterator> entryIt = nameEnvMap.entrySet().iterator(); + Iterator> entryIt = nameEnvMap.entrySet().iterator(); while (entryIt.hasNext()) { - Entry entry = entryIt.next(); - EnvConfig env = entry.getValue(); + Entry entry = entryIt.next(); + DesignerWorkspaceInfo env = entry.getValue(); if (ComparatorUtils.equals(defaultenvPath, env.getPath())) { return env; } } String name = Inter.getLocText(new String[]{"Default", "Utils-Report_Runtime_Env"}); - EnvConfig newDefaultEnv = new LocalEnvConfig(defaultenvPath, name); + DesignerWorkspaceInfo newDefaultEnv = DesignerWorkspaceInfo.createLocal(name, defaultenvPath); this.putEnv(name, newDefaultEnv); return newDefaultEnv; } @@ -508,10 +508,10 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { String defaultenvPath = StableUtils.pathJoin(new String[]{installHome, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME}); defaultenvPath = new File(defaultenvPath).getPath(); if (nameEnvMap.size() >= 0) { - Iterator> entryIt = nameEnvMap.entrySet().iterator(); + Iterator> entryIt = nameEnvMap.entrySet().iterator(); while (entryIt.hasNext()) { - Entry entry = entryIt.next(); - EnvConfig env = entry.getValue(); + Entry entry = entryIt.next(); + DesignerWorkspaceInfo env = entry.getValue(); if (ComparatorUtils.equals(defaultenvPath, env.getPath())) { return entry.getKey(); } @@ -694,7 +694,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { /** * 根据名称返回环境 */ - public EnvConfig getEnv(String name) { + public DesignerWorkspaceInfo getWorkspaceInfo(String name) { return this.nameEnvMap.get(name); } @@ -702,10 +702,11 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * 记录名称 和对应的环境 * * @param name 名称 - * @param env 对应的环境 + * @param info 对应的环境信息 */ - public void putEnv(String name, EnvConfig env) { - this.nameEnvMap.put(name, env); + public void putEnv(String name, DesignerWorkspaceInfo info) { + + this.nameEnvMap.put(name, info); } /** @@ -1418,7 +1419,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { // marks:兼容6.1的 // marks:设置默认的目录. String curReportServerName = Inter.getLocText("Server-Embedded_Server"); - EnvConfig reportServer = new LocalEnvConfig(tmpVal,curReportServerName); + DesignerWorkspaceInfo reportServer = DesignerWorkspaceInfo.createLocal(curReportServerName, tmpVal); this.putEnv(curReportServerName, reportServer); this.setCurEnvName(curReportServerName); @@ -1471,8 +1472,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { public void readXML(XMLableReader reader) { if (reader.isChildNode()) { String tagName = reader.getTagName(); - if (EnvConfig.XML_TAG.equals(tagName)) { - EnvConfig envConfig = (EnvConfig) GeneralXMLTools.readXMLable(reader); + if (DesignerWorkspaceInfo.XML_TAG.equals(tagName)) { + DesignerWorkspaceInfo envConfig = (DesignerWorkspaceInfo) GeneralXMLTools.readXMLable(reader); putEnv(name, envConfig); } } @@ -1595,10 +1596,10 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (this.curEnvName != null) { writer.attr("currentEnv", this.curEnvName); } - for (Entry entry : nameEnvMap.entrySet()) { + for (Entry entry : nameEnvMap.entrySet()) { writer.startTAG("EnvConfigElement").attr("name", entry.getKey()); - EnvConfig envConfig = entry.getValue(); - GeneralXMLTools.writeXMLable(writer, envConfig, EnvConfig.XML_TAG); + DesignerWorkspaceInfo envConfig = entry.getValue(); + GeneralXMLTools.writeXMLable(writer, envConfig, DesignerWorkspaceInfo.XML_TAG); writer.end(); } writer.end(); diff --git a/designer-base/src/com/fr/design/actions/file/LocalePane.java b/designer-base/src/com/fr/design/actions/file/LocalePane.java index 898f26370..20573d34c 100644 --- a/designer-base/src/com/fr/design/actions/file/LocalePane.java +++ b/designer-base/src/com/fr/design/actions/file/LocalePane.java @@ -13,11 +13,11 @@ import com.fr.design.gui.itextfield.UITextField; import com.fr.file.filetree.FileNode; import com.fr.general.GeneralUtils; import com.fr.general.Inter; -import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.StableUtils; import com.fr.stable.bridge.StableFactory; import com.fr.stable.project.ProjectConstants; +import com.fr.workspace.WorkContext; import javax.swing.*; import javax.swing.event.DocumentEvent; @@ -27,7 +27,6 @@ import javax.swing.table.TableRowSorter; import java.awt.*; import java.io.ByteArrayInputStream; import java.io.InputStream; -import java.io.OutputStream; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -196,7 +195,7 @@ public class LocalePane extends BasicPane { for (FileNode fileNode : fileNodes) { String fileName = fileNode.getName(); if (fileName.endsWith(".properties")) { - InputStream in = new ByteArrayInputStream(env.getFileOperator().read(StableUtils.pathJoin(ProjectConstants.LOCALE_NAME, fileName))); + InputStream in = new ByteArrayInputStream(WorkContext.getWorkResource().readFully(StableUtils.pathJoin(ProjectConstants.LOCALE_NAME, fileName))); Properties properties = new Properties(); properties.load(in); keys.addAll(properties.stringPropertyNames()); 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 f21fb6991..2ca235b3b 100644 --- a/designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer-base/src/com/fr/design/actions/file/SwitchExistEnv.java @@ -1,14 +1,12 @@ package com.fr.design.actions.file; import com.fr.base.BaseUtils; -import com.fr.base.env.EnvConfig; -import com.fr.base.env.LocalEnvConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.UpdateAction; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.tabledata.ResponseDataSourceChange; import com.fr.design.env.DesignerWorkspaceGenerator; -import com.fr.design.env.RemoteEnvConfig; +import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; @@ -67,11 +65,16 @@ public class SwitchExistEnv extends MenuDef { public GetExistEnvAction(String envName) { this.setName(envName); - EnvConfig env = DesignerEnvManager.getEnvManager().getEnv(envName); - if (env instanceof LocalEnvConfig) { - this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/data/bind/localconnect.png")); - } else if (env instanceof RemoteEnvConfig) { + DesignerWorkspaceInfo env = DesignerEnvManager.getEnvManager().getWorkspaceInfo(envName); + switch (env.getType()) + { + case Local:{ + this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/data/bind/localconnect.png")); + break; + }case Remote:{ this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/data/bind/distanceconnect.png")); + break; + } } } @@ -99,7 +102,7 @@ public class SwitchExistEnv extends MenuDef { public void actionPerformed(ActionEvent e) { DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); final String envName = getName(); - EnvConfig selectedEnv = envManager.getEnv(envName); + DesignerWorkspaceInfo selectedEnv = envManager.getWorkspaceInfo(envName); WorkContext.switchTo(DesignerWorkspaceGenerator.generate(selectedEnv), new WorkContextCallback() { @Override public void success() { diff --git a/designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java b/designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java index 1197b9cb5..b666b0f63 100644 --- a/designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java +++ b/designer-base/src/com/fr/design/env/DesignerWorkspaceGenerator.java @@ -1,28 +1,31 @@ package com.fr.design.env; -import com.fr.base.Env; -import com.fr.base.env.EnvConfig; -import com.fr.base.env.LocalEnvConfig; -import com.fr.env.RemoteEnv; import com.fr.workspace.WorkContext; import com.fr.workspace.Workspace; import com.fr.workspace.connect.WorkspaceClient; -import com.fr.workspace.connect.WorkspaceConnection; /** * 根据配置生成运行环境 */ public class DesignerWorkspaceGenerator { - public static Workspace generate(EnvConfig config) { + public static Workspace generate(DesignerWorkspaceInfo config) { + + if (config == null || config.getType() == null) { + return null; + } Workspace workspace = null; - if (config instanceof LocalEnvConfig) { - workspace = WorkContext.getFactory().build(config.getPath()); - } else if (config instanceof RemoteEnvConfig) { - RemoteEnvConfig remoteConfig = (RemoteEnvConfig) config; - WorkspaceClient client = WorkContext.getConnector().connect(new WorkspaceConnection(remoteConfig.getHost(), remoteConfig.getPort(), remoteConfig.getUsername(), remoteConfig.getPassword())); - workspace = new RemoteWorkspace(client, remoteConfig.getHost() + ":" + remoteConfig.getPort(), remoteConfig.getPassword()); + switch (config.getType()) { + case Local: { + workspace = WorkContext.getFactory().build(config.getPath()); + break; + } + case Remote: { + WorkspaceClient client = WorkContext.getConnector().connect(config.getConnection()); + workspace = new RemoteWorkspace(client, config.getConnection()); + break; + } } return workspace; } diff --git a/designer-base/src/com/fr/design/env/DesignerWorkspaceInfo.java b/designer-base/src/com/fr/design/env/DesignerWorkspaceInfo.java new file mode 100644 index 000000000..6854e007e --- /dev/null +++ b/designer-base/src/com/fr/design/env/DesignerWorkspaceInfo.java @@ -0,0 +1,104 @@ +package com.fr.design.env; + +import com.fr.security.SecurityToolbox; +import com.fr.stable.StringUtils; +import com.fr.stable.xml.XMLPrintWriter; +import com.fr.stable.xml.XMLable; +import com.fr.stable.xml.XMLableReader; +import com.fr.workspace.connect.WorkspaceConnection; + +/** + * Created by juhaoyu on 2018/6/15. + */ +public class DesignerWorkspaceInfo implements XMLable { + + private static final int DEFAULT_RPC_PORT = 39999; + + public static final String XML_TAG = "DesignerWorkspace"; + + private DesignerWorkspaceType type; + + private String name; + + private String path; + + private WorkspaceConnection connection; + + public static DesignerWorkspaceInfo createLocal(String name, String path) { + + DesignerWorkspaceInfo info = new DesignerWorkspaceInfo(); + info.connection = null; + info.name = name; + info.path = path; + info.type = DesignerWorkspaceType.Local; + return info; + } + + public void setName(String name) { + + this.name = name; + } + + public DesignerWorkspaceType getType() { + + return type; + } + + public String getName() { + + return name; + } + + public String getPath() { + + return path; + } + + public WorkspaceConnection getConnection() { + + return connection; + } + + @Override + public void readXML(XMLableReader reader) { + + if (reader.isAttr()) { + this.name = reader.getAttrAsString("name", StringUtils.EMPTY); + this.type = DesignerWorkspaceType.valueOf(reader.getAttrAsString("name", "Local")); + this.path = reader.getAttrAsString("path", StringUtils.EMPTY); + } + if (reader.isChildNode()) { + String tagName = reader.getTagName(); + if ("Connection".equals(tagName)) { + String ip = reader.getAttrAsString("ip", StringUtils.EMPTY); + int port = reader.getAttrAsInt("port", DEFAULT_RPC_PORT); + String username = reader.getAttrAsString("username", StringUtils.EMPTY); + //密码解密 + String password = SecurityToolbox.decrypt(reader.getAttrAsString("password", StringUtils.EMPTY)); + this.connection = new WorkspaceConnection(ip, port, username, password); + } + } + } + + @Override + public void writeXML(XMLPrintWriter writer) { + + writer.attr("name", name); + writer.attr("path", path); + writer.attr("type", type.toString()); + if (this.connection != null) { + writer.startTAG("Connection"); + writer.attr("ip", connection.getIp()); + writer.attr("port", connection.getPort()); + writer.attr("username", connection.getUserName()); + writer.attr("password", SecurityToolbox.encrypt(connection.getPassword())); + writer.end(); + } + } + + @Override + public Object clone() throws CloneNotSupportedException { + + return null; + } +} diff --git a/designer-base/src/com/fr/design/env/DesignerWorkspaceType.java b/designer-base/src/com/fr/design/env/DesignerWorkspaceType.java new file mode 100644 index 000000000..a59c5debe --- /dev/null +++ b/designer-base/src/com/fr/design/env/DesignerWorkspaceType.java @@ -0,0 +1,10 @@ +package com.fr.design.env; + +/** + * Created by juhaoyu on 2018/6/15. + * 设计器使用的workspace类型 + */ +public enum DesignerWorkspaceType { + Local, + Remote +} diff --git a/designer-base/src/com/fr/design/env/RemoteEnvConfig.java b/designer-base/src/com/fr/design/env/RemoteEnvConfig.java deleted file mode 100644 index 280149484..000000000 --- a/designer-base/src/com/fr/design/env/RemoteEnvConfig.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.fr.design.env; - -import com.fr.base.env.AbstractEnvConfig; -import com.fr.general.Inter; -import com.fr.security.SecurityToolbox; -import com.fr.stable.AssistUtils; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; -import com.fr.stable.xml.XMLPrintWriter; -import com.fr.stable.xml.XMLableReader; - - -public class RemoteEnvConfig extends AbstractEnvConfig { - - public static final int DEFAULT_RPC_PORT = 39999; - - private String host; - private int port; - private String username; - private String password; - - public RemoteEnvConfig() { - - super(name); - } - - public RemoteEnvConfig(String host, int port, String username, String password) { - - super(name); - this.host = host; - this.port = port; - this.username = username; - this.password = password; - } - - @Override - public String getPath() { - return StableUtils.join(new Object[]{host, port}, ":"); - } - - public String getHost() { - return host; - } - - public void setHost(String host) { - this.host = host; - } - - public int getPort() { - return port; - } - - public void setPort(int port) { - this.port = port; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - @Override - public String getDescription(String name) { - return username + "@" + name + "[" + Inter.getLocText("Fine-Designer_Basic_Remote_Env") + "]"; - } - - @Override - public void readXML(XMLableReader reader) { - super.readXML(reader); - if (reader.isChildNode()) { - String tagName = reader.getTagName(); - if ("Attr".equals(tagName)) { - this.host = reader.getAttrAsString("host", StringUtils.EMPTY); - this.port = reader.getAttrAsInt("port", DEFAULT_RPC_PORT); - this.username = reader.getAttrAsString("username", StringUtils.EMPTY); - String password = reader.getAttrAsString("password", StringUtils.EMPTY); - if (StringUtils.isNotEmpty(password)) { - this.password = SecurityToolbox.decrypt(password); - } - } else if ("Username".equals(tagName)) { - this.username = reader.getElementValue(); - } else if ("Password".equals(tagName)) { - String txt = reader.getElementValue(); - this.password = SecurityToolbox.decrypt(txt); - } - } - } - - @Override - public void writeXML(XMLPrintWriter writer) { - super.writeXML(writer); - writer.startTAG("Attr") - .attr("host", host) - .attr("port", port); - writer.end(); - writer.startTAG("Username").textNode(username).end(); - if (StringUtils.isNotEmpty(password)) { - writer.startTAG("Password").textNode(SecurityToolbox.encrypt(password)).end(); - } - - } - - @Override - public boolean equals(Object o) { - return o instanceof RemoteEnvConfig - && AssistUtils.equals(((RemoteEnvConfig) o).host, host) - && AssistUtils.equals(((RemoteEnvConfig) o).port, port) - && AssistUtils.equals(((RemoteEnvConfig) o).username, username) - && AssistUtils.equals(((RemoteEnvConfig) o).password, password); - } - - @Override - public int hashCode() { - return AssistUtils.hashCode(host, port, username, password); - } - - @Override - public Object clone() throws CloneNotSupportedException { - RemoteEnvConfig cloned = (RemoteEnvConfig) super.clone(); - cloned.host = host; - cloned.port = port; - cloned.username = username; - cloned.password = password; - return cloned; - } -} diff --git a/designer-base/src/com/fr/design/env/RemoteWorkspace.java b/designer-base/src/com/fr/design/env/RemoteWorkspace.java index 487f2c049..33bb1b4bc 100644 --- a/designer-base/src/com/fr/design/env/RemoteWorkspace.java +++ b/designer-base/src/com/fr/design/env/RemoteWorkspace.java @@ -3,6 +3,7 @@ package com.fr.design.env; import com.fr.general.Inter; import com.fr.workspace.Workspace; import com.fr.workspace.connect.WorkspaceClient; +import com.fr.workspace.connect.WorkspaceConnection; /** * Created by juhaoyu on 2018/6/14. @@ -16,11 +17,11 @@ public class RemoteWorkspace implements Workspace { private final String userName; - public RemoteWorkspace(WorkspaceClient client, String address, String userName) { + RemoteWorkspace(WorkspaceClient client, WorkspaceConnection connection) { this.client = client; - this.address = address; - this.userName = userName; + this.address = connection.getIp() + ":" + connection.getPort(); + this.userName = connection.getUserName(); } @Override diff --git a/designer-base/src/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/com/fr/design/mainframe/DesignerFrame.java index 4968dc069..46ffed17b 100644 --- a/designer-base/src/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/com/fr/design/mainframe/DesignerFrame.java @@ -650,7 +650,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta defaultTitleSB.append(" "); // james:标识登录的用户和登录的ENV String envName = DesignerEnvManager.getEnvManager().getCurEnvName(); - EnvConfig env = DesignerEnvManager.getEnvManager().getEnv(envName); + EnvConfig env = DesignerEnvManager.getEnvManager().getWorkspaceInfo(envName); if (env != null) { defaultTitleSB.append(env.getDescription(envName)); if (editingTemplate != null) { diff --git a/designer-base/src/com/fr/design/mainframe/JTemplate.java b/designer-base/src/com/fr/design/mainframe/JTemplate.java index 62ed475db..8ab0c4756 100644 --- a/designer-base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/com/fr/design/mainframe/JTemplate.java @@ -55,6 +55,7 @@ import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; import com.fr.stable.core.UUID; import com.fr.stable.project.ProjectConstants; +import com.fr.workspace.WorkContext; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; @@ -657,7 +658,7 @@ public abstract class JTemplate> try { ByteArrayOutputStream out = new ByteArrayOutputStream(); this.getTarget().export(out); - FRContext.getCurrentEnv().getFileOperator().write(out.toByteArray(), editingFILE.getPath()); + WorkContext.getWorkResource().write(editingFILE.getPath(), out.toByteArray()); } catch (Exception e) { FRContext.getLogger().error(e.getMessage(), e); JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), e.getMessage(), "Save Error", JOptionPane.ERROR_MESSAGE); diff --git a/designer-base/src/com/fr/design/mainframe/TemplatePane.java b/designer-base/src/com/fr/design/mainframe/TemplatePane.java index a6d5a16ee..5a917ce2c 100644 --- a/designer-base/src/com/fr/design/mainframe/TemplatePane.java +++ b/designer-base/src/com/fr/design/mainframe/TemplatePane.java @@ -1,14 +1,12 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; -import com.fr.base.env.EnvConfig; -import com.fr.base.env.LocalEnvConfig; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignerEnvManager; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.env.DesignerWorkspaceGenerator; -import com.fr.design.env.RemoteEnvConfig; +import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.TemplateTreePane; import com.fr.design.gui.ibutton.UIButton; @@ -112,7 +110,7 @@ public class TemplatePane extends JPanel implements MouseListener { private boolean envListOkAction(EnvListPane envListPane) { final String selectedName = envListPane.updateEnvManager(); DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); - EnvConfig selectedEnv = envManager.getEnv(selectedName); + DesignerWorkspaceInfo selectedEnv = envManager.getWorkspaceInfo(selectedName); GeneralContext.fireEnvWillChangeListener(); try { WorkContext.switchTo(DesignerWorkspaceGenerator.generate(selectedEnv), new WorkContextCallback() { @@ -143,7 +141,7 @@ public class TemplatePane extends JPanel implements MouseListener { return true; } - private String getDesignerVersion(EnvConfig selectedEnv) { + private String getDesignerVersion(DesignerWorkspaceInfo selectedEnv) { // return selectedEnv.getDesignerVersion(); throw new UnsupportedOperationException("unsupport now"); } @@ -169,12 +167,17 @@ public class TemplatePane extends JPanel implements MouseListener { } private void setJLabel(String name) { - EnvConfig config = DesignerEnvManager.getEnvManager().getEnv(name); - if (config instanceof LocalEnvConfig) { - envLabel.setIcon(IOUtils.readIcon("com/fr/design/images/data/bind/localconnect.png")); - - } else if (config instanceof RemoteEnvConfig) { - envLabel.setIcon(IOUtils.readIcon("com/fr/design/images/data/bind/distanceconnect.png")); + + DesignerWorkspaceInfo config = DesignerEnvManager.getEnvManager().getWorkspaceInfo(name); + switch (config.getType()) { + case Remote: { + envLabel.setIcon(IOUtils.readIcon("com/fr/design/images/data/bind/localconnect.png")); + break; + } + case Local: { + envLabel.setIcon(IOUtils.readIcon("com/fr/design/images/data/bind/distanceconnect.png")); + break; + } } envLabel.setText(name); envLabel.repaint(); diff --git a/designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java b/designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java index bcf9e2ae0..f64f0dff3 100644 --- a/designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java +++ b/designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java @@ -2,10 +2,6 @@ package com.fr.design.mainframe.loghandler.socketio; import com.fr.base.Env; import com.fr.base.FRContext; -import com.fr.base.env.EnvConfig; -import com.fr.core.env.EnvConstants; -import com.fr.core.env.EnvContext; -import com.fr.core.env.EnvEvent; import com.fr.decision.webservice.utils.DecisionServiceConstants; import com.fr.design.env.RemoteEnvConfig; import com.fr.design.mainframe.loghandler.DesignerLogHandler; @@ -18,6 +14,8 @@ import com.fr.general.LogUtils; import com.fr.log.FineLoggerFactory; import com.fr.third.guava.base.Optional; import com.fr.web.WebSocketConfig; +import com.fr.workspace.Workspace; +import com.fr.workspace.WorkspaceEvent; import io.socket.client.IO; import io.socket.client.Socket; import io.socket.emitter.Emitter; @@ -44,18 +42,18 @@ public class DesignerSocketIO { }; static { - EventDispatcher.listen(EnvEvent.AFTER_SIGN_OUT, new Listener() { + EventDispatcher.listen(WorkspaceEvent.BeforeSwitch, new Listener() { @Override - public void on(Event event, EnvConfig param) { + public void on(Event event, Workspace param) { if (socketIO.isPresent()) { socketIO.get().close(); socketIO = Optional.absent(); } } }); - EventDispatcher.listen(EnvEvent.AFTER_SIGN_IN, new Listener() { + EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener() { @Override - public void on(Event event, EnvConfig param) { + public void on(Event event, Workspace param) { updateSocket(); } }); @@ -71,16 +69,16 @@ public class DesignerSocketIO { return; } try { - RemoteEnvConfig config = ((RemoteEnv)env).getEnvConfig(); - String uri = String.format("http://%s:%s%s?%s=%s", - config.getHost(), - WebSocketConfig.getInstance().getPort(), - EnvConstants.WS_NAMESPACE, - DecisionServiceConstants.WEB_SOCKET_TOKEN_NAME, - EnvContext.currentToken()); - - socketIO = Optional.of(IO.socket(new URI(uri))); - socketIO.get().on(EnvConstants.WS_LOGRECORD, printLog); +// RemoteEnvConfig config = ((RemoteEnv)env).getEnvConfig(); +// String uri = String.format("http://%s:%s%s?%s=%s", +// config.getHost(), +// WebSocketConfig.getInstance().getPort(), +// EnvConstants.WS_NAMESPACE, +// DecisionServiceConstants.WEB_SOCKET_TOKEN_NAME, +// EnvContext.currentToken()); +// +// socketIO = Optional.of(IO.socket(new URI(uri))); +// socketIO.get().on(EnvConstants.WS_LOGRECORD, printLog); // socketIO.get().on(EnvConstants.CONFIG, new Emitter.Listener() { // @Override // public void call(Object... objects) { diff --git a/designer-base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java b/designer-base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java index d4450b43e..be286226c 100644 --- a/designer-base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java +++ b/designer-base/src/com/fr/design/mainframe/templateinfo/TemplateInfoCollector.java @@ -7,14 +7,13 @@ import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.SiteCenterToken; -import com.fr.env.RemoteEnv; import com.fr.general.ComparatorUtils; -import com.fr.log.FineLoggerFactory; import com.fr.general.GeneralUtils; import com.fr.general.IOUtils; import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; import com.fr.stable.EncodeConstants; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; @@ -25,6 +24,7 @@ import com.fr.stable.xml.XMLTools; import com.fr.stable.xml.XMLWriter; import com.fr.stable.xml.XMLableReader; import com.fr.third.javax.xml.stream.XMLStreamException; +import com.fr.workspace.WorkContext; import java.io.ByteArrayInputStream; import java.io.File; @@ -167,7 +167,8 @@ public class TemplateInfoCollector implements Serializable, } private boolean shouldCollectInfo() { - if (FRContext.getCurrentEnv() instanceof RemoteEnv) { // 远程设计不收集数据 + //只收集本地环境的 + if (!WorkContext.getCurrent().isLocal()) { return false; } return DesignerEnvManager.getEnvManager().isJoinProductImprove() && FRContext.isChineseEnv(); diff --git a/designer-base/src/com/fr/design/remote/action/RemoteDesignAuthorityManagerAction.java b/designer-base/src/com/fr/design/remote/action/RemoteDesignAuthorityManagerAction.java index 8d22b77a4..302e838fa 100644 --- a/designer-base/src/com/fr/design/remote/action/RemoteDesignAuthorityManagerAction.java +++ b/designer-base/src/com/fr/design/remote/action/RemoteDesignAuthorityManagerAction.java @@ -1,17 +1,11 @@ package com.fr.design.remote.action; import com.fr.base.BaseUtils; -import com.fr.base.FRContext; -import com.fr.core.env.proxy.EnvProxy; import com.fr.design.actions.UpdateAction; import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.mainframe.DesignerContext; import com.fr.design.remote.ui.AuthorityManagerPane; -import com.fr.env.operator.authority.AuthorityOperator; import com.fr.general.Inter; -import com.fr.log.FineLoggerFactory; -import com.fr.report.DesignAuthority; import java.awt.event.ActionEvent; @@ -34,38 +28,38 @@ public class RemoteDesignAuthorityManagerAction extends UpdateAction { BasicDialog dialog = managerPane.showWindow(DesignerContext.getDesignerFrame()); - if (!FRContext.getCurrentEnv().isLocalEnv()) { - try { - // 远程设计获取全部设计成员的权限列表 - DesignAuthority[] authorities = EnvProxy.get(AuthorityOperator.class).getAuthorities(); - if (authorities != null && authorities.length != 0) { - managerPane.populate(authorities); - } - } catch (Exception exception) { - FineLoggerFactory.getLogger().error(exception.getMessage(), exception); - } - } - - dialog.addDialogActionListener(new DialogActionAdapter() { - @Override - public void doOk() { - DesignAuthority[] authorities = managerPane.update(); - if (!FRContext.getCurrentEnv().isLocalEnv()) { - boolean success = false; - try { - success = EnvProxy.get(AuthorityOperator.class).updateAuthorities(authorities); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - FRContext.getLogger().info("update remote design authority: " + success); - } - } - - @Override - public void doCancel() { - super.doCancel(); - } - }); +// if (!FRContext.getCurrentEnv().isLocalEnv()) { +// try { +// // 远程设计获取全部设计成员的权限列表 +// DesignAuthority[] authorities = EnvProxy.get(AuthorityOperator.class).getAuthorities(); +// if (authorities != null && authorities.length != 0) { +// managerPane.populate(authorities); +// } +// } catch (Exception exception) { +// FineLoggerFactory.getLogger().error(exception.getMessage(), exception); +// } +// } +// +// dialog.addDialogActionListener(new DialogActionAdapter() { +// @Override +// public void doOk() { +// DesignAuthority[] authorities = managerPane.update(); +// if (!FRContext.getCurrentEnv().isLocalEnv()) { +// boolean success = false; +// try { +// success = EnvProxy.get(AuthorityOperator.class).updateAuthorities(authorities); +// } catch (Exception e) { +// FineLoggerFactory.getLogger().error(e.getMessage(), e); +// } +// FRContext.getLogger().info("update remote design authority: " + success); +// } +// } +// +// @Override +// public void doCancel() { +// super.doCancel(); +// } +// }); dialog.setModal(true); dialog.setVisible(true); } diff --git a/designer-base/src/com/fr/design/utils/DesignUtils.java b/designer-base/src/com/fr/design/utils/DesignUtils.java index 60b010b4c..1cf12cb54 100644 --- a/designer-base/src/com/fr/design/utils/DesignUtils.java +++ b/designer-base/src/com/fr/design/utils/DesignUtils.java @@ -13,7 +13,6 @@ import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.DesignerEnvProcessor; import com.fr.design.gui.UILookAndFeel; import com.fr.design.mainframe.DesignerContext; -import com.fr.env.RemoteEnv; import com.fr.file.FileFILE; import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; diff --git a/designer-base/src/com/fr/env/EnvListPane.java b/designer-base/src/com/fr/env/EnvListPane.java index 652b11d08..f0d390f62 100644 --- a/designer-base/src/com/fr/env/EnvListPane.java +++ b/designer-base/src/com/fr/env/EnvListPane.java @@ -1,9 +1,7 @@ package com.fr.env; -import com.fr.base.env.EnvConfig; -import com.fr.base.env.LocalEnvConfig; -import com.fr.design.env.RemoteEnvConfig; import com.fr.design.DesignerEnvManager; +import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; @@ -59,9 +57,9 @@ public class EnvListPane extends JListControlPane { @Override public NameableCreator[] createNameableCreators() { NameableCreator local = new NameObjectCreator(Inter.getLocText("Env-Local_Directory"), "com/fr/design/images/data/bind/localconnect.png", - LocalEnvConfig.class, LocalEnvPane.class); + DesignerWorkspaceInfo.class, LocalEnvPane.class); NameableCreator remote = new NameObjectCreator(Inter.getLocText("Env-Remote_Server"), "com/fr/design/images/data/bind/distanceconnect.png", - RemoteEnvConfig.class, RemoteEnvPane2.class); + DesignerWorkspaceInfo.class, RemoteEnvPane2.class); return new NameableCreator[]{local, remote}; } @@ -81,7 +79,7 @@ public class EnvListPane extends JListControlPane { List nameObjectList = new ArrayList<>(); while (nameIt.hasNext()) { String name = nameIt.next(); - nameObjectList.add(new NameObject(name, mgr.getEnv(name))); + nameObjectList.add(new NameObject(name, mgr.getWorkspaceInfo(name))); } this.populate(nameObjectList.toArray(new NameObject[0])); @@ -104,7 +102,7 @@ public class EnvListPane extends JListControlPane { Nameable[] res = this.update(); for (Nameable re : res) { NameObject nameObject = (NameObject) re; - mgr.putEnv(nameObject.getName(), (EnvConfig) nameObject.getObject()); + mgr.putEnv(nameObject.getName(), (DesignerWorkspaceInfo) nameObject.getObject()); } return this.getSelectedName(); } diff --git a/designer-base/src/com/fr/env/LocalEnvPane.java b/designer-base/src/com/fr/env/LocalEnvPane.java index 993a72b13..c518f1dbe 100644 --- a/designer-base/src/com/fr/env/LocalEnvPane.java +++ b/designer-base/src/com/fr/env/LocalEnvPane.java @@ -1,7 +1,7 @@ package com.fr.env; -import com.fr.base.env.LocalEnvConfig; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextarea.UITextArea; import com.fr.design.gui.itextfield.UITextField; @@ -21,7 +21,7 @@ import java.io.File; /** * @author yaohwu */ -public class LocalEnvPane extends BasicBeanPane { +public class LocalEnvPane extends BasicBeanPane { private UITextField pathTextField; private JFileTree localEnvTree; @@ -70,9 +70,9 @@ public class LocalEnvPane extends BasicBeanPane { } @Override - public LocalEnvConfig updateBean() { + public DesignerWorkspaceInfo updateBean() { String path = pathTextField.getText(); - return new LocalEnvConfig(path); + return DesignerWorkspaceInfo.createLocal(StringUtils.EMPTY, path); } public String getPath() { @@ -80,7 +80,7 @@ public class LocalEnvPane extends BasicBeanPane { } @Override - public void populateBean(LocalEnvConfig ob) { + public void populateBean(DesignerWorkspaceInfo ob) { if (StringUtils.isBlank(ob.getPath())) { return; } diff --git a/designer-base/src/com/fr/env/RemoteEnv.java b/designer-base/src/com/fr/env/RemoteEnv.java index 084962a03..1d8aa0de8 100644 --- a/designer-base/src/com/fr/env/RemoteEnv.java +++ b/designer-base/src/com/fr/env/RemoteEnv.java @@ -1,762 +1,759 @@ -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.core.env.EnvConstants; -import com.fr.core.env.EnvContext; -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.env.RemoteEnvConfig; -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 +//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-base/src/com/fr/env/RemoteEnvPane.java b/designer-base/src/com/fr/env/RemoteEnvPane.java index 12571369f..c6c26d6a2 100644 --- a/designer-base/src/com/fr/env/RemoteEnvPane.java +++ b/designer-base/src/com/fr/env/RemoteEnvPane.java @@ -1,11 +1,11 @@ package com.fr.env; import com.fr.base.FRContext; -import com.fr.design.env.RemoteEnvConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.border.UITitledBorder; import com.fr.design.dialog.InformationWarnPane; +import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; @@ -19,24 +19,11 @@ import com.fr.general.Inter; import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; -import javax.swing.BorderFactory; -import javax.swing.JFileChooser; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JTextPane; -import javax.swing.SwingConstants; -import javax.swing.SwingUtilities; -import javax.swing.ToolTipManager; -import javax.swing.UIManager; +import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.Toolkit; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; @@ -50,7 +37,7 @@ import static com.fr.design.layout.TableLayout.PREFERRED; /** * @author yaohwu */ -public class RemoteEnvPane extends BasicBeanPane { +public class RemoteEnvPane extends BasicBeanPane { private static final Color TIPS_FONT_COLOR = new Color(0x8f8f92); @@ -252,7 +239,7 @@ public class RemoteEnvPane extends BasicBeanPane { } @Override - public void populateBean(RemoteEnvConfig ob) { + public void populateBean(DesignerWorkspaceInfo ob) { if (StringUtils.isEmpty(ob.getPath())) { remoteEnvURL = RemoteEnvURL.createDefaultURL(); @@ -266,21 +253,21 @@ public class RemoteEnvPane extends BasicBeanPane { DesignerEnvManager.getEnvManager().setHttps(remoteEnvURL.getHttps()); fileChooserButton.setEnabled(remoteEnvURL.getHttps()); updateHttpsConfigPanel(); - - String username = EnvConfigUtils.getUsername(ob); - String pwd = EnvConfigUtils.getPassword(ob); + + String username = ob.getConnection().getUserName(); + String pwd = ob.getConnection().getPassword(); this.usernameInput.setText(username == null ? StringUtils.EMPTY : pwd); - this.passwordInput.setText(ob.getPassword() == null ? StringUtils.EMPTY : ob.getPassword()); + this.passwordInput.setText(pwd == null ? StringUtils.EMPTY : "******"); } @Override - public RemoteEnvConfig updateBean() { + public DesignerWorkspaceInfo updateBean() { String path = remoteEnvURL.getURL(); String user = this.usernameInput.getText(); String password = new String(this.passwordInput.getPassword()); +// return DesignerWorkspaceInfo.createRemote(); return null; - //return new RemoteEnvConfig(path, user, password); } diff --git a/designer-base/src/com/fr/file/FileNodeFILE.java b/designer-base/src/com/fr/file/FileNodeFILE.java index 21b796378..7fead4ce0 100644 --- a/designer-base/src/com/fr/file/FileNodeFILE.java +++ b/designer-base/src/com/fr/file/FileNodeFILE.java @@ -240,7 +240,7 @@ public class FileNodeFILE implements FILE { } try { - return FRContext.getCurrentEnv().getFileOperator().isExists(node.getEnvPath()); + return WorkContext.getWorkResource().exist(node.getEnvPath()); } catch (Exception e) { FRContext.getLogger().error(e.getMessage(), e); return false; diff --git a/designer-chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java b/designer-chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java index 409131847..6c054361f 100644 --- a/designer-chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java +++ b/designer-chart/src/com/fr/design/chart/series/PlotSeries/MapGroupExtensionPane.java @@ -22,12 +22,13 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.general.ComparatorUtils; -import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; +import com.fr.log.FineLoggerFactory; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.SvgProvider; +import com.fr.workspace.WorkContext; import javax.swing.*; import javax.swing.event.ListSelectionEvent; @@ -340,12 +341,12 @@ public class MapGroupExtensionPane extends BasicPane implements UIObserver { return; } try{//提醒名字已存在 - if(FRContext.getCurrentEnv().getFileOperator().isExists(StableUtils.pathJoin( + if (WorkContext.getWorkResource().exist(StableUtils.pathJoin( MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION))){ showRenameWaring(newName); return; } - if(FRContext.getCurrentEnv().getFileOperator().isExists(StableUtils.pathJoin( + if (WorkContext.getWorkResource().exist(StableUtils.pathJoin( MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION))){ showRenameWaring(newName); return; @@ -361,9 +362,9 @@ public class MapGroupExtensionPane extends BasicPane implements UIObserver { groupExtensionPane.setValueAtCurrentSelectIndex(newName); fireStateChange(); saveMapInfo(newName); - FRContext.getCurrentEnv().getFileOperator().delete( + WorkContext.getWorkResource().delete( StableUtils.pathJoin(MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION)); - FRContext.getCurrentEnv().getFileOperator().delete( + WorkContext.getWorkResource().delete( StableUtils.pathJoin(MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION)); refresh(); }catch (Exception exp){ diff --git a/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index 0df9529ca..e1deba46a 100644 --- a/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -18,6 +18,7 @@ import com.fr.log.FineLoggerFactory; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; +import com.fr.workspace.WorkContext; import java.io.BufferedReader; import java.io.ByteArrayInputStream; @@ -151,7 +152,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { */ private void searchFileContent(Env env, String searchText, FileNode node, boolean isAlreadyContain, boolean needMore) { try { - InputStream inputStream = new ByteArrayInputStream(env.getFileOperator().read(StableUtils.pathJoin(ProjectConstants.REPORTLETS_NAME, node.getEnvPath().substring(ProjectConstants.REPORTLETS_NAME.length() + 1)))); + InputStream inputStream = new ByteArrayInputStream(WorkContext.getWorkResource().readFully(StableUtils.pathJoin(ProjectConstants.REPORTLETS_NAME, node.getEnvPath().substring(ProjectConstants.REPORTLETS_NAME.length() + 1)))); InputStreamReader isr = new InputStreamReader(inputStream, "UTF-8"); BufferedReader reader = new BufferedReader(isr); String line; 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 66fb704d9..51bba7487 100644 --- a/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java +++ b/designer-realize/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java @@ -1,6 +1,5 @@ package com.fr.design.mainframe.errorinfo; -import com.fr.base.FRContext; import com.fr.base.io.IOFile; import com.fr.base.io.XMLReadHelper; import com.fr.config.MarketConfig; @@ -18,6 +17,7 @@ import com.fr.third.apache.log4j.Level; import com.fr.third.apache.log4j.spi.LoggingEvent; import com.fr.web.core.SessionDealWith; import com.fr.web.core.SessionIDInfor; +import com.fr.workspace.WorkContext; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -134,7 +134,7 @@ public class ErrorInfoLogAppender extends AppenderSkeleton { } }; try { - file.readStream(new ByteArrayInputStream(FRContext.getCurrentEnv().getFileOperator().read(StableUtils.pathJoin(ProjectConstants.REPORTLETS_NAME, bookPath)))); + file.readStream(new ByteArrayInputStream(WorkContext.getWorkResource().readFully(StableUtils.pathJoin(ProjectConstants.REPORTLETS_NAME, bookPath)))); return file.getTemplateID(); } catch (Exception ignore) { } diff --git a/designer-realize/src/com/fr/start/EnvSwitcher.java b/designer-realize/src/com/fr/start/EnvSwitcher.java index 6fbffcc5a..8e3122501 100644 --- a/designer-realize/src/com/fr/start/EnvSwitcher.java +++ b/designer-realize/src/com/fr/start/EnvSwitcher.java @@ -16,7 +16,7 @@ public class EnvSwitcher { try { String current = DesignerEnvManager.getEnvManager().getCurEnvName(); - Workspace workspace = DesignerWorkspaceGenerator.generate(DesignerEnvManager.getEnvManager().getEnv(current)); + Workspace workspace = DesignerWorkspaceGenerator.generate(DesignerEnvManager.getEnvManager().getWorkspaceInfo(current)); WorkContext.switchTo(workspace); } catch (Exception e) { TemplatePane.getInstance().dealEvnExceptionWhenStartDesigner();