PageRenderTime 32ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/src/mpv5/ui/dialogs/subcomponents/ControlPanel_Konsole.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 232 lines | 189 code | 33 blank | 10 comment | 13 complexity | 64c398faa5c020e2bfb6fee6e661b6eb MD5 | raw file
Possible License(s): LGPL-3.0, Apache-2.0, GPL-3.0, GPL-2.0, AGPL-3.0, JSON, BSD-3-Clause
  1. package mpv5.ui.dialogs.subcomponents;
  2. import groovy.lang.Binding;
  3. import groovy.lang.GroovyShell;
  4. import java.awt.Component;
  5. import java.awt.event.KeyEvent;
  6. import java.io.File;
  7. import java.io.FileReader;
  8. import java.util.logging.Level;
  9. import java.util.logging.Logger;
  10. import javax.swing.text.BadLocationException;
  11. import mpv5.YabsViewProxy;
  12. import mpv5.data.PropertyStore;
  13. import mpv5.db.common.QueryHandler;
  14. import mpv5.globals.Messages;
  15. import mpv5.logging.Log;
  16. import mpv5.ui.dialogs.ControlApplet;
  17. import mpv5.ui.dialogs.Popup;
  18. import mpv5.ui.frames.MPView;
  19. import mpv5.ui.popups.CopyPasteMenu;
  20. import mpv5.usermanagement.MPSecurityManager;
  21. import mpv5.utils.files.FileDirectoryHandler;
  22. import mpv5.utils.files.FileReaderWriter;
  23. import org.codehaus.groovy.control.CompilationFailedException;
  24. /**
  25. *
  26. *
  27. */
  28. public class ControlPanel_Konsole extends javax.swing.JPanel implements ControlApplet {
  29. private static final long serialVersionUID = 1L;
  30. /**
  31. * This unique name identifies this control applet
  32. */
  33. public final String UNAME = "console";
  34. private PropertyStore oldvalues;
  35. private static ControlPanel_Konsole ident;
  36. private GroovyShell groovyShell;
  37. public ControlPanel_Konsole() {
  38. if (MPSecurityManager.checkAdminAccess()) {
  39. initComponents();
  40. new CopyPasteMenu(jTextArea1);
  41. setVisible(true);
  42. }
  43. }
  44. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  45. private void initComponents() {
  46. jScrollPane1 = new javax.swing.JScrollPane();
  47. jTextArea1 = new javax.swing.JTextArea();
  48. jScrollPane2 = new javax.swing.JScrollPane();
  49. jTextArea2 = new javax.swing.JTextArea();
  50. jPanel2 = new javax.swing.JPanel();
  51. jButton3 = new javax.swing.JButton();
  52. jButton2 = new javax.swing.JButton();
  53. jButton1 = new javax.swing.JButton();
  54. setBackground(new java.awt.Color(255, 255, 255));
  55. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle(); // NOI18N
  56. setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("ControlPanel_Konsole.border.title"))); // NOI18N
  57. setName("Form"); // NOI18N
  58. setLayout(new java.awt.BorderLayout());
  59. jScrollPane1.setName("jScrollPane1"); // NOI18N
  60. jTextArea1.setColumns(20);
  61. jTextArea1.setRows(5);
  62. jTextArea1.setName("jTextArea1"); // NOI18N
  63. jTextArea1.addKeyListener(new java.awt.event.KeyAdapter() {
  64. public void keyPressed(java.awt.event.KeyEvent evt) {
  65. jTextArea1KeyPressed(evt);
  66. }
  67. });
  68. jScrollPane1.setViewportView(jTextArea1);
  69. add(jScrollPane1, java.awt.BorderLayout.NORTH);
  70. jScrollPane2.setName("jScrollPane2"); // NOI18N
  71. jTextArea2.setBackground(new java.awt.Color(0, 24, 24));
  72. jTextArea2.setColumns(20);
  73. jTextArea2.setForeground(new java.awt.Color(255, 255, 204));
  74. jTextArea2.setRows(5);
  75. jTextArea2.setText(bundle.getString("ControlPanel_Konsole.jTextArea2.text")); // NOI18N
  76. jTextArea2.setName("jTextArea2"); // NOI18N
  77. jScrollPane2.setViewportView(jTextArea2);
  78. add(jScrollPane2, java.awt.BorderLayout.CENTER);
  79. jPanel2.setBackground(new java.awt.Color(255, 255, 255));
  80. jPanel2.setName("jPanel2"); // NOI18N
  81. jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
  82. jButton3.setText(bundle.getString("ControlPanel_Konsole.jButton3.text")); // NOI18N
  83. jButton3.setName("jButton3"); // NOI18N
  84. jButton3.addActionListener(new java.awt.event.ActionListener() {
  85. public void actionPerformed(java.awt.event.ActionEvent evt) {
  86. jButton3ActionPerformed(evt);
  87. }
  88. });
  89. jPanel2.add(jButton3);
  90. jButton2.setText(bundle.getString("ControlPanel_Konsole.jButton2.text")); // NOI18N
  91. jButton2.setName("jButton2"); // NOI18N
  92. jButton2.addActionListener(new java.awt.event.ActionListener() {
  93. public void actionPerformed(java.awt.event.ActionEvent evt) {
  94. jButton2ActionPerformed(evt);
  95. }
  96. });
  97. jPanel2.add(jButton2);
  98. jButton1.setText(bundle.getString("ControlPanel_Konsole.jButton1.text")); // NOI18N
  99. jButton1.setName("jButton1"); // NOI18N
  100. jButton1.addActionListener(new java.awt.event.ActionListener() {
  101. public void actionPerformed(java.awt.event.ActionEvent evt) {
  102. jButton1ActionPerformed(evt);
  103. }
  104. });
  105. jPanel2.add(jButton1);
  106. add(jPanel2, java.awt.BorderLayout.PAGE_END);
  107. }// </editor-fold>//GEN-END:initComponents
  108. private void jTextArea1KeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextArea1KeyPressed
  109. if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
  110. process();
  111. }
  112. }//GEN-LAST:event_jTextArea1KeyPressed
  113. private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
  114. File tf = FileDirectoryHandler.getTempFile("mp_konsole_export", "txt");
  115. FileReaderWriter f = new FileReaderWriter(tf);
  116. f.write(jTextArea1.getText());
  117. mpv5.YabsViewProxy.instance().showFilesaveDialogFor(tf);
  118. }//GEN-LAST:event_jButton3ActionPerformed
  119. private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
  120. jTextArea1.setText("");
  121. jTextArea2.setText("");
  122. }//GEN-LAST:event_jButton2ActionPerformed
  123. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
  124. process();
  125. }//GEN-LAST:event_jButton1ActionPerformed
  126. public void setValues(PropertyStore values) {
  127. }
  128. public String getUname() {
  129. return UNAME;
  130. }
  131. public void reset() {
  132. setValues(oldvalues);
  133. }
  134. // Variables declaration - do not modify//GEN-BEGIN:variables
  135. private javax.swing.JButton jButton1;
  136. private javax.swing.JButton jButton2;
  137. private javax.swing.JButton jButton3;
  138. private javax.swing.JPanel jPanel2;
  139. private javax.swing.JScrollPane jScrollPane1;
  140. private javax.swing.JScrollPane jScrollPane2;
  141. private javax.swing.JTextArea jTextArea1;
  142. private javax.swing.JTextArea jTextArea2;
  143. // End of variables declaration//GEN-END:variables
  144. @Override
  145. public Component getAndRemoveActionPanel() {
  146. this.remove(jPanel2);
  147. validate();
  148. return jPanel2;
  149. }
  150. private void process() {
  151. if (MPSecurityManager.checkAdminAccess()) {
  152. if (jTextArea1.getText().startsWith("groovy")) {
  153. runGroovy();
  154. } else {
  155. runSQL();
  156. }
  157. jTextArea1.setCaretPosition(0);
  158. }}
  159. private void runSQL() {
  160. for (int i = 0; i < jTextArea1.getLineCount(); i++) {
  161. try {
  162. String command = jTextArea1.getText().substring(jTextArea1.getLineStartOffset(i), jTextArea1.getLineEndOffset(i));
  163. if (command.contains(";")) {
  164. command = command.substring(0, command.lastIndexOf(";"));
  165. }
  166. if (command.length() > 1) {
  167. if (command.toLowerCase().contains("update")) {
  168. QueryHandler.getConnection().freeUpdateQuery(command, jTextArea2, MPSecurityManager.CREATE_OR_DELETE, Messages.SEE_LOG.getValue());
  169. } else {
  170. QueryHandler.getConnection().freeQuery(command, jTextArea2, MPSecurityManager.CREATE_OR_DELETE, Messages.SEE_LOG.getValue());
  171. }
  172. }
  173. jTextArea1.replaceRange(command + ";--ok", jTextArea1.getLineStartOffset(i), jTextArea1.getLineEndOffset(i));
  174. } catch (Exception ex) {
  175. Log.Debug(this, ex.getMessage());
  176. }
  177. }
  178. }
  179. private void runGroovy() {
  180. try {
  181. jTextArea2.setText(String.valueOf(
  182. getGroovyShell().evaluate(jTextArea1.getText().replace("groovy", ""))));
  183. jTextArea1.setText(null);
  184. } catch (Exception exception) {
  185. Log.Debug(exception);
  186. jTextArea2.setText(exception.getMessage());
  187. }
  188. }
  189. private GroovyShell getGroovyShell() {
  190. synchronized (this) {
  191. if (groovyShell == null) {
  192. Binding binding = new Binding();
  193. binding.setVariable("db", QueryHandler.instanceOf());
  194. groovyShell = new GroovyShell(binding);
  195. }
  196. return groovyShell;
  197. }
  198. }
  199. }