📄 dacwizard.java
字号:
return ""; } File rrdRoot = new File(rrdRootButton.getText()); if ( !rrdRoot.exists() || !rrdRoot.isDirectory() || !rrdRoot.canWrite() ) { return rrdRoot.toString() + ": doesn't exist, not a directory, or not writable"; } if ( rrdtoolRadio.isSelected() ) { File rrdtool = new File(rrdtoolButton.getText()); if ( !rrdtool.exists() || rrdtool.isDirectory() || !rrdtool.isFile() ) { return rrdtool.toString() + ": doesn't exist, is a directory, or not a regular file"; } } // Now stuff everything into the context getOwner().getContext().put("logger.enabled", new Boolean(enableBox.isSelected())); getOwner().getContext().put("logger.autocreate", new Boolean(autocreateBox.isSelected())); getOwner().getContext().put("logger.trace", new Boolean(traceBox.isSelected())); getOwner().getContext().put("logger.use.jrobin", new Boolean(jrobinRadio.isSelected())); getOwner().getContext().put("logger.use.rrdtool", new Boolean(rrdtoolRadio.isSelected())); getOwner().getContext().put("logger.rrdtool", rrdtoolButton.getText()); getOwner().getContext().put("logger.rrdroot", rrdRootButton.getText()); return ""; } protected void actionPerformed2(ActionEvent e) { Object source = e.getSource(); if ( rrdtoolButton.equals(source) ) { rrdtoolChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int rc = rrdtoolChooser.showDialog(getNarrowPane(), "Use this rrdtool binary"); if ( rc == JFileChooser.APPROVE_OPTION ) { rrdtoolButton.setText(rrdtoolChooser.getSelectedFile().toString()); } } else if ( rrdRootButton.equals(source) ) { rrdrootChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int rc = rrdrootChooser.showDialog(getNarrowPane(), "Use this directory as RRD root"); if ( rc == JFileChooser.APPROVE_OPTION ) { rrdRootButton.setText(rrdrootChooser.getSelectedFile().toString()); } } } protected void itemStateChanged2(ItemEvent e) { if ( enableBox.isSelected() ) { autocreateBox.setEnabled(true); traceBox.setEnabled(true); jrobinRadio.setEnabled(true); rrdtoolRadio.setEnabled(true); rrdtoolLabel.setEnabled(rrdtoolRadio.isSelected()); rrdtoolButton.setEnabled(rrdtoolRadio.isSelected()); rrdRootLabel.setEnabled(true); rrdRootButton.setEnabled(true); } else { autocreateBox.setEnabled(false); traceBox.setEnabled(false); jrobinRadio.setEnabled(false); rrdtoolRadio.setEnabled(false); rrdtoolLabel.setEnabled(false); rrdtoolButton.setEnabled(false); rrdRootLabel.setEnabled(false); rrdRootButton.setEnabled(false); } //getOwner().getContext().put("1-Wire driver.owapi", new Boolean(owapiRadio.isSelected())); } public boolean isEnabled() { return true; } } protected class ConfirmPage extends WizardPage { private JScrollPane messageScroller; private JTextArea messageArea = new JTextArea(); public ConfirmPage(Logger logger, Wizard owner) { super(logger, owner, "Confirm Configuration"); messageScroller = new JScrollPane(messageArea); messageScroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); messageScroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); GridBagLayout layout = new GridBagLayout(); GridBagConstraints cs = new GridBagConstraints(); getContentPane().setLayout(layout); cs.fill = GridBagConstraints.BOTH; cs.weightx = 1; cs.weighty = 1; layout.setConstraints(messageScroller, cs); getContentPane().add(messageScroller); messageArea.setEditable(false); validate(); } public String getHelpURL() { return null; } public String validate() { //messageScroller.setPreferredSize(getContentPane().getPreferredSize()); StringBuffer sb = new StringBuffer(); sb.append("Please review the results:\n\n"); for ( Iterator i = new java.util.TreeMap(getOwner().getContext()).keySet().iterator(); i.hasNext(); ) { Object key = i.next(); Object value = getOwner().getContext().get(key); sb.append(key.toString() + ": " + value + "\n"); } String message = sb.toString(); String oldMessage = messageArea.getText(); messageArea.replaceRange(message, 0, oldMessage.length()); // There's nothing to validate return ""; } protected void actionPerformed2(ActionEvent e) { } protected void itemStateChanged2(ItemEvent e) { } public boolean isEnabled() { return true; } } protected class DacWizardProcessor implements WizardProcessor { public final LogChannel CH_DWP = new LogChannel("DacWizardProcessor"); public void init(Map context) { complain(LOG_CRIT, CH_DWP, "FIXME: init"); } /** * Put together an XML document and write it into a specified file. * * @param context Data created by the wizard. */ public void finish(Map context) { complain(LOG_DEBUG, CH_DWP, "\n\n\n\n\nContext:"); for ( Iterator i = new java.util.TreeMap(context).keySet().iterator(); i.hasNext(); ) { Object key = i.next(); Object value = context.get(key); complain(LOG_DEBUG, CH_DWP, " '" + key + "' = '" + value + "'"); } complain(LOG_DEBUG, CH_DWP, "\n\n\n\n\n"); File outputFile = new File(context.get("config.file").toString()); if ( outputFile.isDirectory() ) { outputFile = new File(outputFile, "dac.conf.xml"); } complain(LOG_INFO, CH_DWP, "Output file: " + outputFile); StringBuffer sb = new StringBuffer(); File dzDacWizard = new File(dzDeploymentBin, "dz_dac_wizard"); sb.append("<server xmlns=\"http://diy-zoning.sourceforge.net/namespaces/dac\">\n\n"); sb.append(" <!--\n\n"); sb.append(" This file was generated by "); sb.append(dzDacWizard.toString()); sb.append(".\n Do not edit - unless you read the docs, that is\n\n"); sb.append(" -->\n\n"); renderOneWire(context, sb); renderLogger(context, sb); renderBroadcaster(context, sb); renderController(context, sb); sb.append("</server>\n"); String configuration = sb.toString(); complain(LOG_DEBUG, CH_DWP, "Configuration:\n" + configuration); // Now that we have it, save it try { PrintWriter pw = new PrintWriter(new FileWriter(outputFile)); pw.println(configuration); pw.flush(); pw.close(); } catch ( IOException ioex ) { System.err.println("Unable to save " + outputFile + ":"); ioex.printStackTrace(); } } private void renderOneWire(Map context, StringBuffer sb) { if ( !"true".equals(context.get("hardware.1-Wire").toString()) ) { return; } // VT: FIXME: Later, when other hardware arrives, this may not // be enabled sb.append(" <module name=\"1-Wire\" enabled=\"true\">\n"); if ( "true".equals(context.get("1-Wire.owapi").toString()) ) { sb.append(" <class>net.sf.dz.daemon.onewire.owapi.OneWireServer</class>\n"); sb.append(" <onewire_server>\n"); sb.append(" <serial>\n"); sb.append(" <port>").append(context.get("1-Wire.owapi.serial.port")).append("</port>\n"); sb.append(" </serial>\n"); sb.append(" </onewire_server>\n"); } if ( "true".equals(context.get("1-Wire.owfs").toString()) ) { sb.append(" <class>net.sf.dz.daemon.onewire.owfs.OneWireServer</class>\n"); sb.append(" <owfs>\n"); sb.append(" <mount_point>\n"); sb.append(" ").append(context.get("1-Wire.owfs.mountpoint")).append("\n"); sb.append(" </mount_point>\n"); sb.append(" </owfs>\n"); } sb.append(" </module>\n"); } private void renderLogger(Map context, StringBuffer sb) { if ( !"true".equals(context.get("logger.enabled").toString()) ) { return; } File rrdRoot = new File(context.get("logger.rrdroot").toString()); File rrdData = new File(rrdRoot, "dz.rrd"); File rrdTrace = new File(rrdRoot, "trace"); File rrdOrder = new File(rrdRoot, "rrd_device_order"); File dzRegenerate = new File(dzDeploymentBin, "dz_regenerate_rrd"); sb.append(" <module name=\"RRD Looger\" enabled=\"true\">\n"); sb.append(" <requires>1-Wire</requires>\n"); if ( "true".equals(context.get("logger.use.rrdtool").toString()) ) { sb.append(" <class>net.sf.dz.daemon.logger.RRDLogger</class>\n"); sb.append(" <rrd_logger>\n"); sb.append(" <tool>").append(context.get("logger.rrdtool")).append("</tool>\n"); sb.append(" <regenerate>").append(dzRegenerate.toString()).append("</regenerate>\n"); } else if ( "true".equals(context.get("logger.use.jrobin").toString()) ) { sb.append(" <class>net.sf.dz.daemon.logger.JRobinLogger</class>\n"); sb.append(" <rrd_logger>\n"); sb.append(" <imagedir>").append(new File(context.get("logger.rrdroot").toString(), "html").toString()).append("</imagedir>\n"); } else { throw new IllegalStateException("No rrdtool? No JRobin?"); } if ( "true".equals(context.get("logger.trace").toString()) ) { sb.append(" <tracefile>").append(rrdTrace.toString()).append("</tracefile>\n"); } sb.append(" <autocreate enabled=\"").append(context.get("logger.autocreate")).append("\"/>\n"); sb.append(" <interval>30</interval>\n"); sb.append(" <graph_interval>5</graph_interval>\n"); sb.append(" <database>").append(rrdData.toString()).append("</database>\n"); sb.append(" <device_order>").append(rrdOrder.toString()).append("</device_order>\n"); sb.append(" </rrd_logger>\n"); sb.append(" </module>\n"); } private void renderBroadcaster(Map context, StringBuffer sb) { renderConnector(context, sb, "TCP Broadcaster", "net.sf.dz.daemon.tcp.Broadcaster", "broadcaster"); } private void renderController(Map context, StringBuffer sb) { renderConnector(context, sb, "TCP Controller", "net.sf.dz.daemon.tcp.Controller", "controller"); } private void renderConnector(Map context, StringBuffer sb, String moduleName, String className, String contextName) { sb.append(" <module name=\"").append(moduleName).append("\" enabled=\"true\">\n"); sb.append(" <requires>1-Wire</requires>\n"); sb.append(" <class>").append(className).append("</class>\n"); sb.append(" <tcp>\n"); sb.append(" <bind_address></bind_address>\n"); sb.append(" <port>").append(context.get("connector." + contextName + ".bind")).append("</port>\n"); sb.append(" <announce_port>").append(context.get("connector." + contextName + ".announce")).append("</announce_port>\n"); sb.append(" <secure>").append(context.get("connector." + contextName + ".secure")).append("</secure>\n"); sb.append(" <password>").append(context.get("connector." + contextName + ".password")).append("</password>\n"); sb.append(" </tcp>\n"); sb.append(" <timeout>60000</timeout>\n"); sb.append(" </module>\n"); } } /* private void complain(String message) { System.err.println(message); } */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -